根据监控点或者视频的分辨率自适应调整播放画面的宽高比

news/2024/12/26 17:05:00/文章来源:https://www.cnblogs.com/bclshuai/p/18627872

3.根据监控点或者视频的分辨率自适应调整播放画面的宽高比

视频的分辨率宽高比和播放窗口的宽高比例不一定相同,播放时如果填充整个播放窗口,会出现播放画面横向或纵向拉伸以填充整个窗口,这样会导致播放画面变形或者不协调,影响观看效果;为了保持视频的按照原来的宽高比,可以根据视频的分辨率的宽高比调整播放画面的宽高比,这样就保证画面不变形拉伸;

实现思路,用两个widget,外层widgetPlayContain,内层widgetPlay是播放画面,用widgetPlayContain的布局layout的边距去控制中间widgetPlay的宽高比和视频分辨率宽高比相同,这样可能是左右有边距,上下无边距,或者上下有边距,左右无边距

void PlayWnd::ResizePlayWndByResolution()
{if (m_pHandle == NULL || m_PlayState != PLAYING){ui.vLayoutPlayContain->setContentsMargins(0, 0, 0, 0);return;}if (CLocalSystemConfigManager::Instance().GetInformationDisplayConfig().image_display==OriginalResolution){playsdk::ResolutionParam reso;int ret = GetResoution(m_pHandle, reso);if (ret == 0){QSize widgetSize = ui.widgetPlayContain->size();//用窗口的高度按照分辨率的比例算出宽度int width = widgetSize.height()*reso.iWidth / reso.iHeight;if (width > widgetSize.width())//宽度不够,按照窗口最大宽度填充,缩小高度,上下有边距
            {//根据宽度计算出播放窗口高度int height = widgetSize.width()*reso.iHeight / reso.iWidth;int updownmargin = (widgetSize.height() - height) / 2;ui.vLayoutPlayContain->setContentsMargins(0, updownmargin, 0, updownmargin);}else//宽度够,按照窗口最大高度填充,高度已知,宽度缩小,左右有边距
            {int width = widgetSize.height()*reso.iWidth / reso.iHeight;int leftrightMargin = (widgetSize.width() - width) / 2;ui.vLayoutPlayContain->setContentsMargins(leftrightMargin, 0, leftrightMargin, 0);}}else{LOG_ERROR("GetResoution failed %d", ret);}}else{ui.vLayoutPlayContain->setContentsMargins(0, 0, 0, 0);}}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/858202.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软考通过申请加分

2024下半年中级软件设计师考试通过,20224089连赛轩申请加分10分

Forest框架 访问HTTPS协议

问题描述 第三方接口使用的是HTTPS协议,导致程序一直报错找不到协议请求超时 解决方案 Forest的单向验证的默认协议为TLS,将ssl-protocol属性修改为其它协议 forest:...ssl-protocol: SSL 使用HTTPS协议时,不能只用ip地址,必须使用域名 @Get(url = "https://bjdx.wdm…

一文彻底搞清楚ArkUI

程序员Feri一名12年+的程序员,做过开发带过团队创过业,擅长Java相关开发、鸿蒙开发、人工智能程序员Feri一名12年+的程序员,做过开发带过团队创过业,擅长Java相关开发、鸿蒙开发、人工智能等,专注于程序员搞钱那点儿事,希望在搞钱的路上有你相伴!君志所向,一往无前!0.前言 在…

算法网关视频分析网关小知识:监控系统频繁掉线,如何排查网络问题?

在现代监控系统中,网络稳定性对于确保视频流的连续性和图像质量至关重要。然而,监控系统频繁掉线是一个常见的问题,它可能由多种因素引起,包括硬件故障、网络配置错误、供电不稳定等。为了有效排查和解决这些问题,以下是一些系统性的步骤,可以帮助我们定位并解决监控系统…

SQLMAP注入之MySQL注入总结

SQLMAP注入之MySQL注入总结 简介 sqlmap 是一个开源的自动化 SQL 注入(SQLi)攻击和数据库接管工具,广泛应用于渗透测试、漏洞评估和安全研究。它旨在帮助安全研究人员和渗透测试人员发现和利用 SQL 注入漏洞,进行数据库接管、信息泄露和数据提取等操作。 sqlmap 提供了强大…

【SpringCloud】5.Micromete——分布式链路追踪

必要性: 由客户端发起的请求会形成链路,任何一环出现问题,可能导致失败。我们需要快速的观测、定位和解决问题。概述 ZipKin Micromete+ZipKin搭建链路控制案例概述 为什么需要分布式链路技术 在微服务框架中,一个由客户端发起的请求在后端系统中会经过多个不同的的服务节点…

区块链技术学习笔记

密码学基础 哈希算法 哈希算法是指把任意输入值通过特定方式(hash 函数)处理后生成一个结果值。有时会发生输入值不同,但是处理后结果值相同的情况,这就叫哈希冲突。但一般来说,只要哈希函数设计得当,并且样本足够大,那么发生哈希冲突的概率可以忽略不计。因此,可以认为…

Web浏览器播放rtsp视频流详细解决方案

1、背景 在当前项目中,需要实现Web端直接播放RTSP视频流。该功能的核心目标是使得用户能够通过浏览器观看来自不同品牌的IPC(Internet Protocol Camera)设备的实时视频流。主要的IPC设备来自海康威视、大华科技以及宇视等厂商,这些设备普遍使用RTSP协议来传输视频数据。点播…

怎么写好年末报告——看板软件篇

通过明确报告目的、结构清晰、合理利用看板软件等工具和方法,可以撰写出一份既全面又具有深度的年末报告,并为团队的工作提供有力的支持和指导。年末报告怎么写 年末报告是总结过去一年工作成果、分析存在问题并提出未来规划的重要文档。以下是一份撰写年末报告的指南: 明确…

2024年项目管理软件排行榜:哪款最适合你?

在项目管理领域,选择合适的软件工具是确保项目成功的关键因素之一。随着技术的不断进步,市场上涌现出众多功能强大、易于使用的项目管理软件。本文将为您详细介绍2024年最受欢迎的项目管理软件,帮助您找到最适合您团队需求的工具。 禅道项目管理软件禅道项目管理软件是一款开…

学习高校课程-软件设计模式-状态、策略和模版模式(lec12)

State: Problem A finite number of states The program behaves differently within a state Can be switched from one state to another, and switching rules (transitions) are also finite and predetermined 有限数量的状态 程序在某个状态下的行为有所不同 可以从一种状…

Java项目实战:基于 Spring、SpringMVC、MyBatis 与 JSP 的新闻管理系统架构设计与功能实现

1. 引言 1.1目的 本设计文档旨在详细描述基于SSM框架的新闻管理系统的设计方案,包括系统架构、功能模块、数据库设计、接口设计等方面,为系统的开发、测试和维护提供依据,确保系统能够满足用户需求,具有良好的性能、可扩展性和可维护性。 1.2范围 本系统涵盖了新闻管理的各…