最近有个小活其中有涉及播放大华及海康摄像头视频流的需求,经调查发现可以使用webrtc来实现相关功能,记录一下,步骤如下:
1、下载webrtc :Releases · mpromonet/webrtc-streamer · GitHub
winows下下载:webrtc-streamer-v0.8.5-dirty-Windows-AMD64-Release.tar.gz
2、js准备
将下载包中html/libs文件夹下webrtcstreamer.js、adapter.min.js文件复制到VUE项目public目录中
VUE代码如下:
html
<div class="coTitle">视频</div>
<video id='video' controls autoplay autobuffer muted preload='auto'
style='width:90%; height: 290px; margin-left:5%;object-fit: fill;'>
</video>
html
</script>
<script lang="js">
import {WebRtcStreamer} from './webrtcstreamer.js';
export default {
name: 'index1',
data() {
return {
webRtcServer: null
}
},
mounted() {
//video:需要绑定的video控件ID
//127.0.0.1:8000:启动webrtc-streamer的设备IP和端口,默认8000
this.webRtcServer = new WebRtcStreamer('video', 'http://127.0.0.1:8000')
//需要查看的rtsp地址
this.webRtcServer.connect('rtsp://192.169.0.1:9000/dss/monitor/param?cameraid=1000211%210&substream=1')
},
beforeDestroy() {
this.webRtcServer.disconnect()
this.webRtcServer = null
},
}
</script>
3、首选运行 webrtc-streamer.exe 有的说不加参数CPU高,我的电脑上没加参数也不高,懒,没测试。不过运行 webrtc-streamer.exe 后有个黑框,我是自己写了个服务,如果webrtc没启动,就定时启动一下,这样播放的电脑上就没有黑框了。
4、完成上述 123步就可以正常播放,有一个关键问题特意说明一下:
海康的视频流会提示:Start playing sink for "video/H264" subsession
可能出现此问题的原因是 音视频在同一个流中
解决方法如下:
html
//this.webRtcServer = new WebRtcStreamer("video", "http://127.0.0.1:8000");
var audioUrl="";
var options="rtptransport=tcp&timeout=60";
webRtcServer.connect(videoUrl,audioUrl,options);