首页| 论坛| 消息

标题: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() ..

回复 发表
主题 版块