简述
NodePlayer.js设计之初只是为了播放http-flv协议,但经常有客户想要知道能否播放RTMP协议,甚至RTSP协议,以往我们的回答都是不能。web浏览器没有开放TCP/UDP协议,当然无法实现RTMP、RTSP播放了。
但从 NodePlayer.js-v0.7版本开始,我们已经实现RTMP协议的播放了!
当然,不是TCP协议的RTMP, 没有这个基础条件。我们实现的方式,是通过WebSocket协议来和一个 websocket 2 tcp 服务交换协议,最终和RTMP服务器建立连接。
本播放器无需flash插件,和video.js等播放RTMP的方式完全不同。
目的
如果您正在构建新的直播项目,其实无需使用本技术。如今的流媒体服务端或者云服务,基本上都支持HTTP-FLV甚至WebSocket-FLV。
本功能是为以往使用Flash-Media-Server, Adobe-Media-Server, Nginx-RTMP, Red5,Wowza等服务端构建项目的用户,在不改变现有架构的条件下,无痛迁移到HTML5播放器。
部署方法
实际上无需过多要求,只需要一个 websocket to tcp的桥接服务。
这里,我们以一个非常轻量级,且开放源代码的ws-tcp-relay项目为例。
项目地址:https://github.com/isobit/ws-tcp-relay
进入https://github.com/isobit/ws-tcp-relay/releases ,根据服务端系统选择并下载应用程序
下载后,linux系统下添加可执行权限,然后执行
1 |
./ws-tcp-relay -b -p 8080 192.168.0.3:1935 |
参数说明:
-b 使用binary格式传输
-p 绑定本机8080端口监听websocket连接
192.168.0.3:1935 需要桥接的远端或者本地 rtmp服务,本机可以填 127.0.0.1:1935
播放方法
使用NodePlayer.js-v0.7版播放器,播放地址
1 |
rtmp://运行ws-tcp-relay服务的ip:8080/live/stream |
即可
如果要去掉端口号, ws-tcp-relay改为监听80端口,但可能会和webserver冲突
这里不清楚nginx反向代理是否有能力转websocket to tcp,如果能的话那就更方便。
播放器演示地址
http://www.nodemedia.cn/uploads/nodeplayer_rtmp.html
使用前请先运行ws-tcp-relay服务
RTSP流?
理论上,也是可以的,敬请期待。
原创文章,转载请注明: 转载自贝壳博客
本文链接地址: 如何使用NodePlayer.js播放RTMP协议