介绍
背景
由于项目需要,需要使用摄像头预览功能,设备型号为海康威视。 现有的基于FFmpeg的方案延迟太高,因此项目最终选择基于该方案。
计划
解决方案是基于WebRTC的视频即时通讯,原生支持RTP合约的解码,因此延迟可以很低,大约0.2-0.4秒,其他方案延迟不到1秒。
WebRTC对浏览器有要求,您可以在下面的地址查看支持的浏览器。
以下介绍来自百度百科
WebRTC,其名称来源于网络实时通信(英文:WebReal-TimeCommunication)的缩写,是一种支持网络浏览器进行实时语音或视频对话的API。 它于2011年6月1日开源,并在Google、Mozilla、Opera的支持下被纳入万维网联盟的W3C推荐标准。
WebRTC实现基于网页的视频会议。 该标准是 WHATWG 合同。 目的是通过浏览器提供简单的javascript来提供实时通信(Real-Time Communications (RTC))能力。
Github 上有很多 WebRTC 的实现。 经过一系列的比较和测试,最终选择使用webrtc-streamer项目,该项目使用方便,也比较稳定。
入门
webrtc-streamer除了支持RTSP流的捕获外,还支持V4L2和屏幕窗口快照的捕获。
webrtc-streamer 有一个大型的外部 HTTP 服务器,为 webrtc 所需的相关套接字提供支持。
以下是开始设置的方法:
配置相机
由于webrtc的核心库还不支持h265视频会议网站源码,所以需要设置为h264编码。
登录海康摄像机后台配置中心,在“视频和音频”菜单下进行设置,然后保存。
下载最新包
在github发布页面根据需要的平台选择对应的包进行下载
下载完成后,可以使用以下命令进行测试:
./webrtc-streamer rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov
打开 localhost:8000 访问页面
相关学习资料推荐,点击下方链接免费申请,先码以免迷路~】
音视频免费学习地址:FFmpeg/WebRTC/RTMP/NDK/Android音视频流媒体中间开发
【免费分享】音视频学习资料包、大厂笔试题、技术视频和学习路线图,资料包括(C/C++、Linux、FFmpegwebRTCrtmphlsrtspffplaysrs等)如有需要可以点击788280672进群分发免费~
测验设备
如果没有问题,您可以使用本地设备进行测试。 海康威视视频流默认地址为:
rtsp://账号:密码@IP地址:554/Streaming/Channels/101
替换适当的信息进行测试。
如果是在windows下,webrtc-streamer还会抓取windows和屏幕的快照页面,可以用-q参数进行过滤,支持正则表达式。 这个参数并没有列在帮助列表中,因为我查看了源代码并找到了它。
./webrtc-streamer rtsp://账号:密码@IP地址:554/Streaming/Channels/101 -q (?=rtsp).*
融合的
您可以在下载的Satchel的html文件夹中找到index.html查看示例代码,核心代码如下:
var webRtcServer = null;
window.onload = function() {
webRtcServer = new WebRtcStreamer("video",location.protocol+"//"+window.location.hostname+":8000");
webRtcServer.connect("rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov");
}
window.onbeforeunload = function() { webRtcServer.disconnect(); }
与 WebComponent 集成
总结
主要是熟悉webrtc,你可以在这里找到相关手册。
比如哪些是TURNserver视频会议网站源码,哪些是peerconnections,可以在手册里面找到。
原文基于WebRTC RTSP视频实时预览-简书