最近接手了個工作:用瀏覽器播放RTMP流媒體。
工作步驟:
1.找到可用的rtmp流媒體播放資源:
1.1.網上搜了下,
在 https://blog.csdn.net/q386815991/article/details/80942155
找到 rtmp://58.200.131.2:1935/livetv/hunantv 是可用的,
下載 流媒體播放器 VLC-3.0.6-win64.exe 可以播放的。
1.2.可忽略這段。在我公司內網由於網絡限制,所以搭建了內部的流媒體播放服務器:使用的SRS(simple-rtmp-server)作爲流媒體服務器(當然也可以用nginx作爲rtmp流媒體服務器,以及其它技術),然後使用obs studio推流。也就是說,流媒體服務器只是個分發者,要想消費者有內容可看,還得有內容供應者推送資源。
比如SRS流媒體服務器其url爲rtmp://localhost:1935,那麼我在obs裏面新建一個推流的配置,地址爲rtmp://localhost:1935/live/ch1,那麼在流媒體播放器 VLC就可以播放rtmp://localhost:1935/live/ch1了。
使用obs studio,可以使用攝像頭實時採集視頻、可以使用屏幕錄製、也可以播放本地視頻作爲流媒體源。
2.找到可用的基於瀏覽器的非插件式的播放器。
2.1.純粹的html5只支持簡單的幾種視頻播放,不支持rtmp播放。
2.2.使用video-js可以播放rtmp,不過要注意3點如下:
2.2.1.注意發佈爲web服務才能正常使用flash播放:請將測試頁面發佈爲web方式,以諸如 http://localhost:8080/test.html 這種方式訪問;
2.2.2.注意打開瀏覽器的flash權限:設置瀏覽器,給予flash執行權限,在谷歌瀏覽器點擊url前面的圖標,在網站設置>flash=允許。
2.2.3.注意videojs的版本:
當前(2019-03-17)播放rtmp還是必須用flash的技術的;
如果使用的是V5.X以及更老的版本的是可以直接播放rtmp的了(因爲之前的版本是內置了video-js.swf的);
如果是之後較新的版本,需要在引入了 video.js 之後再加上 videojs-flash.js
(考慮到flash的方式瀏覽器越來越不支持了,官方取消內置video-js.swf了,將項目分拆2個了)
,以下分別舉例:
2.2.3.1.使用v5.19的例子
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link href="http://vjs.zencdn.net/5.19/video-js.min.css"
rel="stylesheet">
<script src="http://vjs.zencdn.net/5.19/video.min.js"></script>
</head>
<body>
<video id="my-player" class="video-js" controls preload="auto"
poster="//vjs.zencdn.net/v/oceans.png" data-setup='{}'>
<source src="rtmp://58.200.131.2:1935/livetv/hunantv" type="rtmp/flv" />
</video>
</body>
</html>
2.2.3.2.使用7.4.1的例子
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>7.4.1</title>
<link href="https://vjs.zencdn.net/7.4.1/video-js.css" rel="stylesheet">
</head>
<body>
<video id='my-video' class='video-js' controls preload='auto' width='640' height='264'
poster='//vjs.zencdn.net/v/oceans.png' data-setup='{}'>
<source src="rtmp://58.200.131.2:1935/livetv/hunantv" type="rtmp/flv" />
</video>
<script src='https://vjs.zencdn.net/7.4.1/video.js'></script>
<!-- 【注意使用7.4.1後,這裏添加了flash播放技術來支持rtmp的】
會加載 https://vjs.zencdn.net/swf/5.4.2/video-js.swf(和 https://github.com/videojs/video-js-swf/tree/master/dist 的最新版的版本號一致 )
-->
<script src='https://cdn.jsdelivr.net/npm/videojs-flash@2/dist/videojs-flash.min.js'></script>
</body>
</html>
2.3.使用MediaElement.js
參考 https://www.iteye.com/topic/1133212
2.3.1.首先我們下載 MediaElement.js官方最新版
2.3.2.下載的文件解壓,取其中\build裏面的文件放到 mediaElement,並且將裏面swf後綴的文件再放入下一層build,具體文件結構如此
2.3.3.其中3.html的代碼
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>mediaelementplayer 4.2.9-6-ga6cc75b</title>
<script src="jquery-1.9.1.min.js"></script>
<script src="mediaelement-and-player.min.js"></script>
<link rel="stylesheet" href="mediaelementplayer.css" />
</head>
<body>
<video width="320" height="240">
<source src="rtmp://58.200.131.2:1935/livetv/hunantv" type="rtmp/mp4" />
</video>
</body>
<script>
$('video,audio').mediaelementplayer(/* Options */);
</script>
</html>
2.3.4.發佈後訪問 http://localhost:8080/rtmp/mediaElement/3.html
2.4.比較video-js MediaElement.js
https://github.com/videojs/video.js
video-js使用的情況更加流行,插件非常多。
https://github.com/mediaelement/mediaelement
MediaElement.js對老瀏覽器支持的比較多的感覺(不過新版本也開始放棄支持老ie了)。