标题:Qt/C++音视频开发54-视频监控控件的极致设计
作者:liudianwu
日期:2023-09-17 09:12
内容:
## 一、前言
跌跌撞撞摸爬滚打一步步迭代完善到今天,这个视频监控控件的设计,在现阶段水平上个人认为是做的最棒的(稍微自恋一下),理论上来说应该可以用5年不用推翻重写,推翻重写当然也是程序员爱干的事情,这个就要考验个人的功底,设计的好框架搭建的好,可以很多年不用变,只需要在现有框架小修小补即可,最多就是继承基类实现一些特殊性的功能,设计的不好,可能每个月都要重写,这种不断的迭代也是无法避免的,毕竟需求一直在变化,当现有的框架无法满足老板或者用户的需求的时候,就必须大动干戈的推翻重来了,纵观Qt的发展史,基本上也是这样的,Qt4时代一个大版本,Qt5时代又是一个大版本,到了Qt6又是一个大版本,互相不兼容,而且很多模块的结构都变了,甚至类名都改了,可能是为了表达的更贴切。不过近期Qt的版本彪的着实厉害,这点需要批评一下。
极致设计功能点:
- 支持多种解码内核,比如ffmpeg/vlc/mpv/qtav/qmedia/各种厂家sdk等。
- 参数灵活多变,两大类结构体,一种窗体相关参数WidgetPara,一种视频处理相关参数VideoPara。
- 同时支持句柄(vlc/mpv/厂家SDK都提供了句柄方式)、绘制(回调拿到视频原始数据通过painter绘制)、GPU(采集到视频数据用opengl绘制yuv/nv12/rgb)三种视频显示模式。
- 具备常规基础接口,开始播放、暂停播放、继续播放、停止播放、音量大小、静音切换、抓拍图片、开始录像、暂停录像、停止录像。
- 具备常规信号接口,文件时长、播放进度、音量变化、静音状态、抓图完成、收到图片、播放开始、播放结束等信号。
- 支持音视频文件(mp3、wav、mp4、asf、rm、rmvb、mkv等)、视频流(rtsp、rtmp、http、rtp等)、本地摄像机、桌面等。
- 共享解码线程,打开同地址直接复用解码,不用重复解码,极大降低CPU占用,多路完全实时同步。
- 使用极其简单,定义结构体参数后直接open打开即可,几行代码就能正常使用。
## 二、效果图
## 三、体验地址
1. 国内站点:[https://gitee.com/feiyangqingyun](https://gitee.com/feiyangqingyun)
2. 国际站点:[https://github.com/feiyangqingyun](https://github.com/feiyangqingyun)
3. 个人作品:[https://blog.csdn.net/feiyangqingyun/article/details/97565652](https://blog.csdn.net/feiyangqingyun/article/details/97565652)
4. 体验地址:[https://pan.baidu.com/s/1d7TH_GEYl5nO ..