标题:Qt编写跨平台RTSP/RTMP/HTTP视频流播放器
作者:liudianwu
日期:2022-11-08 13:42
内容:
## 一、前言
很早以前就做过这款播放器的入门版本,最开始用的ffmpeg去解析,后面陆续用vlc播放器、mpv播放器来做,毕竟播放器提供的接口使用也很方便,而且功能强大,后面发现播放器主要的应用场景是播放视频文件,一般一个电脑不会超过8路视频文件同时播放器,一般就是1路,所有如果需要打开超过16路这种的实例进行播放,用播放器的内核其实是不大适合的,内存占用比较高,超过12路很容易崩溃,哪怕仅仅是播放本地视频文件,所以后面花了精力专门把ffmpeg研究透一些,以便追求极致最大性能,而且其他平台和系统都可以用,只要编译对应环境的ffmpeg库即可,而vlc和mpv等要在其他系统就比较繁琐,尤其是嵌入式linux就更加麻烦,各种插件依赖搞得头大。
## 二、功能特点
### 2.1 基础功能
1. 支持各种音频视频文件格式,比如mp3、wav、mp4、asf、rm、rmvb、mkv等。
2. 支持本地摄像头设备,可指定分辨率、帧率。
3. 支持各种视频流格式,比如rtp、rtsp、rtmp、http等。
4. 本地音视频文件和网络音视频文件,自动识别文件长度、播放进度、音量大小、静音状态等。
5. 文件可以指定播放位置、调节音量大小、设置静音状态等。
6. 支持倍速播放文件,可选0.5倍、1.0倍、2.5倍、5.0倍等速度,相当于慢放和快放。
7. 支持开始播放、停止播放、暂停播放、继续播放。
8. 支持抓拍截图,可指定文件路径,可选抓拍完成是否自动显示预览。
8. 支持录像存储,手动开始录像、停止录像,部分内核支持暂停录像后继续录像,跳过不需要录像的部分。
9. 支持无感知切换循环播放、自动重连等机制。
10. 提供播放成功、播放完成、收到解码图片、收到抓拍图片、视频尺寸变化、录像状态变化等信号。
11. 多线程处理,一个解码一个线程,不卡主界面。
### 2.2 特色功能
1. 同时支持多种解码内核,包括qmedia内核(Qt4/Qt5/Qt6)、ffmpeg内核(ffmpeg2/ffmpeg3/ffmpeg4/ffmpeg5)、vlc内核(vlc2/vlc3)、mpv内核(mpv1/mp2)、海康sdk、easyplayer内核等。
2. 非常完善的多重基类设计,新增一种解码内核只需要实现极少的代码量,就可以应用整套机制。
3. 同时支持多种画面显示策略,自动调整(原始分辨率小于显示控件尺寸则按照原始分辨率大小显示,否则等比例缩放)、等比例缩放(永远等比例缩放)、拉伸填充(永远拉伸填充)。所有内核和所有视频显示模式下都支持三种画面显示策略。
4. 同时支持多种视频显示模式,句柄模式(传入控件句柄交给对方绘制控制)、绘制模式( ..
#1 [qing11 11-08 16:04]
优秀