首页| 论坛| 消息
主题:Qt/C++编写监控批量推流工具/海康大华一键推流/网页实时预览/支持264和265以及webrtc
liudianwu发表于 2025-06-15 20:32
## 一、前言说明
要想将视频监控设备的实时视频放到网页预览,基本上的方案都是要先推流,推流到流媒体服务后,然后网页再从流媒体服务这边拉流,一般会选择拉hls也就是m3u8,这个延迟很大,最低延迟估计都要3s,所以后面很多方案选择flv,这个延迟可以做到2s左右,但是又有6个同源的限制,也就是一个网页上只能同时打开6路视频流,所以后面又出来个ws-flv,也就是通过websocket的方式来传输flv流解码显示,这个突破额6个的限制,广大的用户们依然不满足,因为延迟超过1s其实还是很明显的,所以后面主推webrtc,这个就非常屌了,延迟能做到0.3s内,这项技术不知道底层怎么实现的,当然依赖谷歌浏览器内核。
最开始webrtc只支持264和vp9格式,但是现在主流的摄像头几乎都是265,所以要想在网页上即能够保证实时性,又要能显示265,很麻烦,要么转码,这个占用资源就很大了,要么源头改成264,这个用户无法接受,关于这个需求无数的音视频专家出了不少的方案,而且很多是收费的或者对应产品的主要卖点。自从去年开始谷歌最新的浏览器,已经内置了对应webrtc265的支持,据说是搞定了265的专利,然后整个世界都香了,根本就不需要七七八八杂七杂八的方案,只需要流媒体服务程序输出265的webrtc就行,非常漂亮。最新的136版本的谷歌浏览器默认就开启了,之前135版本还需要手动设置下带命令行启动。
## 二、效果图

## 三、相关代码
```cpp
//实例化类
NetPushServer *pushServer = new NetPushServer;
//设置推流地址
pushServer->setPushUrl("rtmp://127.0.0.1");
//逐个添加要推流的地址(会返回唯一标识用于拉流/也可以指定唯一标识)
pushServer->addUrl("f:/1.mp4", "test1");
pushServer->addUrl("video=USB Video Device|1280x720|25", "test2");
pushServer->addUrl("screen=desktop|800x600|25|0|0", "test3");
pushServer->addUrl("http://vfx.mtime.cn/Video/2021/11/16/mp4/211116131456748178.mp4", "test4");
pushServer->addUrl("rtsp://admin:Admin123456@192.168.0.64:554/Streaming/Channels/101", "test5");
//获取拉流地址(该地址是rtmp拉流地址/可以用播放器播放)
QString url = pushServer->getPushUrl("f:/1.mp4");
//启动推流服务
pushServer->start();
//结束的时候停止
pushServer->stop();
```
## 四、相关地址
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_push。
## 五、功能特点
1. 支持各种本地音视频文件和网络音视频文件,格式包括mp3、aac、wav、wma、mp4、mkv、rmvb、wmv、mpg、flv、asf等。
2. 支持各种网络音视频流,网络摄像头,协议包括rtsp、rtmp、http等。
3. 支持本地摄像头设备推流,可指定分辨率、帧率、格式等。
4. 支持本地桌面采集推流,可指定屏幕索引、采集区域、起始坐标、帧率等,也支持指定窗口标题进行采集。
5. 可实时切换预览视频文件,可切换音视频文件播放进度,切换到哪里就推流到哪里。预览过程中可以切换静音状态和暂停推流。
6. 可指定重新编码推流,任意源头格式可选强转264或265格式。
7. 可转换分辨率推流,设置等比例缩放或者指定分辨率进行转换。
8. 推流的清晰度、质量、码率都可调,可以节约网络带宽和拉流端的压力。
9. 音视频文件自动循环不间断推流。
10. 音视频流有自动掉线重连机制,重连成功自动继续推流。
11. 支持各种流媒体服务程序,包括但不限于mediamtx、ZLMediaKit、srs、LiveQing、nginx-rtmp、EasyDarwin、ABLMediaServer。
12. 通过配置文件自动加载对应流媒体程序的协议和端口,自动生成推流地址和各种协议的拉流地址。可以通过配置文件自己增加流媒体程序。
13. 可选rtmp、rtmp格式推流,推流成功后,支持多种格式拉流,包括但不限于rtsp、rtmp、hls、flv、ws-flv、webrtc等。
14. 在软件上推流成功后,可以直接单击网页预览,实时预览推流后拉流的画面,多画面网页展示。
15. 软件界面上可单击对应按钮,动态添加文件和目录,可手动输入地址。
16. 推拉流实时性极高,延迟极低,延迟时间大概在100ms左右。
17. 极低CPU资源占用,4路主码流推流只需要占用0

浏览大图
下一页 (1/2)
回帖(0):

全部回帖(0)»
最新回帖
收藏本帖
发新帖