实现RTSP和RTMP视频流在页面播放

1 篇文章 0 订阅
1 篇文章 0 订阅

        话不多说直奔主题,今天公司让写个js实现rtsp或rtmp视频流在页面播放。因为从来没搞过这些,查找了大量的文章。然后代码如下:

<!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没有,所以会出现这种情况。

2020.04.28

       前面分享了rtmp视频流的显示(PS:我之前不知到,rtmp和rtsp不一样,可以直接播放),也正是这个问题,困扰了我好久,在我不懈的努力翻阅大量的博客文章,终于找到了rtsp在IE和Chrome的显示心里乐开了花。

1.RTSP在IE浏览器显示:

实现代码:

<!DOCTYPE html>
<html>
    <head>
    	<meta charset="utf-8">
        <title>RTSP视频流播放器IE</title>
    </head>
	<body> 
	<!--[if IE]> 
	   <object type='application/x-vlc-plugin' id='vlc' events='True' 
	       classid='clsid:9BE31822-FDAD-461B-AD51-BE1D1C159921' codebase="https://get.videolan.org/vlc/3.0.8/win32/vlc-3.0.8-win32.exe" width="720" height="540"> 
	          <param name='mrl' value='rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov' /> 
	          <param name='volume' value='50' /> 
	          <param name='autoplay' value='true' /> 
	          <param name='loop' value='false' /> 
	          <param name='fullscreen' value='false' /> 
	    </object> 
	<![endif] 
	[if !IE]> 
	    <object type='application/x-vlc-plugin' id='vlc' events='True' width="720" height="540" pluginspage="http://www.videolan.org" codebase="https://get.videolan.org/vlc/3.0.8/win32/vlc-3.0.8-win32.exe"> 
	        <param name='mrl' value='rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov' /> 
	        <param name='volume' value='50' /> 
	        <param name='autoplay' value='true' /> 
	        <param name='loop' value='false' /> 
	        <param name='fullscreen' value='false' /> 
	    </object> 
	    
	<![endif] -->
	 <object type='application/x-vlc-plugin' id='vlc' events='True' width="600" height="450" pluginspage="http://www.videolan.org" codebase="https://get.videolan.org/vlc/3.0.8/win32/vlc-3.0.8-win32.exe"> 
	        <param name='mrl' value='rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov' /> 
	        <param name='volume' value='100' /> 
	        <param name='autoplay' value='true' /> 
	        <param name='loop' value='false' /> 
	        <param name='fullscreen' value='false' /> 
	    </object> 
</object>
	</body 
</html> 
<script>
    //获取 VLC js对象
    function getVLC(name) {
        if (window.document[name]) {
            return window.document[name];
        }
        if (navigator.appName.indexOf("Microsoft Internet") == -1) {
            if (document.embeds && document.embeds[name])
                return document.embeds[name];
        } else {
            return document.getElementById(name);
        }
    }
    var vlc = getVLC("vlc");//获取vlc对象
 
        // 根据地址切换视频
    function doGo(mrl) {
        try {
            var vlc = getVLC("vlc"),
                    itemId = vlc.playlist.add(mrl);
                vlc.playlist.playItem(itemId);
 
            } catch (e) {
                console.log(e);
            }
        }
 
        //调用
    doGo(mrl)
     
</script>

需要注意的点就是上面的两个地址,第一个为你的VLC下载地址,第二个为RTSP可用地址

VLC

链接:https://pan.baidu.com/s/14VJfOMSYRDwWS8PbJ-8Jow 
提取码:drcu

RTSP可用地址:rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov

2、RTSP在Chrome显示

       我是借助h5Stream来完成的,参考https://blog.csdn.net/yanmuchen/article/details/98207002,这篇作者描述的挺详细,我就不做赘述。要讲的是,在conf下h5ss.conf配置中

       其次呢就是,如果你需要更改RTSP地址的时候,可以直接登录localhost:9090(9090为你指定的端口),点击设置然后直接添加即可。登录用户名配置文件是有默认的,应该时admin:12345。不对的话就在配置文件里看。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值