赞
踩
之前两篇帖子
webrtc-stream的安装是使用docker的。
拉去镜像
sudo docker pull mpromonet/webrtc-streamer
启动镜像
sudo docker run -itd -p 8000:8000 --name webrtc-streamer mpromonet/webrtc-streamer
然后呢,你会发现这东西没法用。经过我同事的测试,这样操作仅仅是在使用本机docker的时候可用,一旦放到局域网中就不可用了。我们需要给它配置穿透服务。启动指令如下:
sudo docker run -itd -p 8000:8000 --name webrtc-streamer mpromonet/webrtc-streamer -tkurento:kurento@穿透服务IP:3478 -s穿透服务IP:3478
后面加的两个参数就是对stun和turn服务的配置。stun和turn就是和我们在 使用Kurento提供公网视频流 中配置的穿透服务。但是配置文件中,设置的用户名密码是kurento:kurento
与之前kurento不同,我们这里不需要一个websocket服务,是直接和webtrc-streamer服务进行通信的。上面我们docker配置的端口是8000。所以,我们可以直接通过js调用就可以将视频播放集成到我们的项目中。具体的我都写在了一个html页面中,源码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="/js/adapter.js"></script>
<script src="/js/webrtcstreamer.js"></script>
</head>
<body>
<div id="play_div">
</div>
<script>
var webRtcServerList = [];
var urls=[
'你的rtsp流地址'
];
var rsurl='http://webtrc-streamer服务地址:8000/';
function plays(idx){
var videoelt = document.createElement("video");
var vi_tag='videoTag_'+idx;
videoelt.id = vi_tag;
videoelt.muted = true;
videoelt.width=500;
videoelt.height=600;
videoelt.controls=true;
videoelt.title='videoTag_'+idx;
document.getElementById ("play_div").appendChild(videoelt);
var webRtcServer = new WebRtcStreamer(vi_tag,rsurl);
webRtcServer.connectrstp(urls[idx]);
webRtcServerList[idx]=webRtcServer;
}
window.onload= function() {
for(var i=0;i<urls.length;i++){
plays(i);
}
}
window.onbeforeunload = function() {
for(var i=0;i<webRtcServerList.length;i++){
webRtcServerList[i].disconnect();
}
}
</script>
</body>
</html>
代码中引用的两个js文件在下载文件的html和/html/lib文件夹下。
webtrc-streamer0.6.5
可以下载linux版本的,里面直接就能看到相关文件。
到此,公网web播放视频流的问题,暂时告一段落,希望不要让我再重启这个话题了。
果然没有那么顺利,还是要重新开启这个话题。原因是我在产线服务器上安装turnserver启动后,日志提示客户端登录错误。于是打算用docker启动运行,排除环境因素。经过一系列的折腾后,最终使用docker的方式倒是很简单,先说成功的吧:
docker run -d --network=host --name=coturn -v /usr/local/etc:/usr/local/etc coturn/coturn -c /usr/local/etc/turnserver.conf
然后,说说这里的坑。
在docker hub的说明中,网络映射分两种,端口映射和直接使用host映射。开始,我使用的端口映射。然后,直接影响了我连入产线环境的vpn访问。可能是由于做了大量udp端口映射导致这些端口被占用了吧,所以最后还是用了host映射。
虽然使用docker,但是配置还是原来的配置不能变。这里有两个注意点
是的,在我的产线中没有映射出去8000端口,所以启动的时候要将8000端口转为8443端口。经过我测试,不能直接用docker的端口映射,还是要改变配置文件中的监听端口。具体指令如下:
docker run -itd -p 8443:8443 --name webrtc-streamer mpromonet/webrtc-streamer -H0.0.0.0:8443 -穿透服务用户名密码@穿透服务IP:穿透服务端口 -s穿透服务IP:穿透服务端口
歇会儿,有问题再更新吧
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。