话不多说直奔主题,今天公司让写个js实现rtsp或rtmp视频流在页面播放。因为从来没搞过这些,查找了大量的文章。然后代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>播放器</title> <!-- 导入的videojs是7.0版本以上的,集成VHS协议库,可播放HLS流媒体视频 --> <link href="videolib/css/video-js.min.css" rel="stylesheet" type="text/css"> <script src="videolib/js/video.min.js"></script> <!-- 引入的videojs-flash.js插件主要是为播放rtmp视频流--> <script src="videolib/videojs-flash.min.js"></script> <video id='myvideo' width=960 height=540 class="video-js vjs-default-skin" controls> <!-- RTMP直播源地址--> <source src="rtmp://58.200.131.2:1935/livetv/hunantv"> </video> </head> <body> <script> var player = videojs('myvideo', {}, function(){console.log('videojs播放器初始化成功')}) player.play(); </script> </body> </html> |
上面实现是基于video.js实现,百度网盘需要的自己拿。链接:https://pan.baidu.com/s/17jF17HINoyuHeLXyVIzL_Q
提取码:sov7
我在公司会报错,因为公司进行了相关处理,在家就没问题(ps:在公司搞了一下午,就是不能播放。哭唧唧)

RTSP、RTMP和HTTP协议的区别:https://blog.csdn.net/liujiayu2/article/details/80658395
一些补充说明
1.对于Video.js 5.x及更低版本,Flash技术是Video.js核心存储库的一部分。对于Video.js 6.x及更高版本,Flash技术位于单独的存储库中。videojs-flash.js插件只与Video.js> = 6.0.0一起使用,因为之前的flash技术已构建到版本中! video.js不能直接播放rtmp流,需要videojs-flash.js 这个插件。
2.对于播放HLS视频,在videojs7版本之前要引用videojs-contrib-hls.js插件才能播放。videojs7版本之后的,Video.js默认捆绑VHS(VHS是videojs-contrib-hls的继承者。它是一个源自videojs-contrib-hls存储库的源处理程序。虽然videojs-contrib-hls最初设计用于在所有浏览器上添加HLS播放,但我们意识到引擎也可以播放其他格式,所以videojs-contrib-hls这个项目已经被弃用,被videojs-http-streaming继承)。默认情况下,在Video.js 7及以上版本中已经集成Videojs HTTP Streaming(昵称为VHS),不必使用videojs-http-streaming插件就可以播放HLS,DASH和未来的HTTP流媒体协议视频。
注意:
1.对于Video.js 7之前的版本(明确说是6版本的),必须使用videojs-http-streaming.js插件才可以播放HLS,DASH和未来的HTTP流媒体协议视频,即使它们不是本机支持的。
2.VHS支持HLS和DASH和未来的HTTP流媒体协议。
再次补充:以上测试是在Hbuilderx环境下实现的,但是换到vscode编辑器运行rtmp流就无法播放!最后发现好像是因为Hbuilderx自带服务器环境,而vscode没有,所以会出现这种情况。