标题:Qt编写视频监控系统73-不同视频流不同类型的判断和解析(http/m3u8/rtsp/rtmp等)
作者:liudianwu
日期:2023-05-17 09:17
内容:
## 一、前言
这套视频监控系统大概从2018年起步整体框架,一步步积累到现在,中间经历了无数次的各种视频文件、视频流、视频设备的播放测试,比如光视频文件就有mp4/wmv/rmvb/mkv/avi等格式,视频设备有本地USB摄像头、桌面等,视频流有rtmp/rtsp/rtp/http等,其中http开头的就有视频文件和视频流两种,就算是http开头的m3u8格式的,也可能是视频文件或者视频流,所以要有一个统一的标准来定制该地址对应的是视频文件还是视频流,视频文件是有文件时长的,意味着可以拖动进度条,而视频流是没有文件时长的,只有实时的视频流过来,这种是无法切换播放进度的,除非缓存起来了,有很多第三方的组件或者轮子在这块处理的不够友好,比如QtAV/vlc等,当你打开的是视频流或者本地USB摄像头的时候,进度在走,然后允许切换播放进度,结果一旦切换直接整个程序就崩溃,因为实时视频流是不好切换进度的,除非他是视频文件,视频文件也分多种,一种是本地的视频文件(一般是本地的mp4/rmvb等视频格式的文件),一种是网络的视频文件(http开头的mp4视频文件居多),还有一种就是实时视频流文件(http开头m3u8格式的实时视频流文件),这三种是要求可以切换播放进度的,于是近期就专门针对这个视频流不同类型,区分不同的视频类型定义。
## 二、效果图
## 三、体验地址
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_GEYl5nOecuNlWJJ7g](https://pan.baidu.com/s/1d7TH_GEYl5nOecuNlWJJ7g) 提取码:01jf 文件名:bin_video_system。
## 四、相关代码
```cpp
//视频类型
enum VideoType {
VideoType_FileLocal = 1,//本地文件
VideoType_FileHttp = 2, //网络文件
VideoType_Camera = 3, //本地摄像头
VideoType_Desktop = 4,// ..