由於Flash Player已經被淘汰,因此以前的VLC擴充元件已不適用。
另外還有手機、電腦可不裝擴充元件撥放的需求,因此採用HTML5可撥放m3u8的特性。
花了將近兩個禮拜時間,找尋方法。終於試到一個適用於我的方案。
首先說明一下架設的環境,IPcam的影像經由NAS的監控軟體(Surveillance Station)做接收,
接著利用內建的RTSP網址,傳送給RTSPtoWeb的proxy Server,
最後在網頁上找到m3u8的網址,再使用Html5的方式撥放出來。
整體而言,相當複雜。如有更好的方法,歡迎在底下留言給我,謝謝。
其中核心套件「RTSPtoWeb」是整個的重點。
*Github - RTSPtoWeb : https://github.com/deepch/RTSPtoWeb
一、安裝Golang
1.由於該套件需要於Golang的環境中執行,因此必須要安裝Golang。[1]
Golang有CPU版本的差異,先至官網(https://golang.org/dl/)查詢適合的版本。
以我的為例子(Armv8),連入NAS的SSH後,下載Go並安裝:
wget https://golang.org/dl/go1.16.2.linux-arm64.tar.gz
2.將tar解壓縮
tar -C /var/XXXXX -xzf go1.16.2.linux-arm64.tar.gz
※其中XXXXX為你要的路徑
3.設定PATH路徑參數
export -p
export PATH=$PATH:/XXXXX/Go/bin
4.使用Nano編輯Profile檔案
sudo nano /etc/profile
進入後將這兩行貼到下面
export GOROOT=/XXXXX/goexport PATH=$PATH:$GOROOT/bin
5.存檔完後建議重開機
6.開完機輸入
go version
如果有版本資料跑出來,即表示安裝完成。
二、下載RstpToWeb
1.到Github將此套件下載下來,或是用git的方式下載
2.放到xxxxx/go/src/後,cd進入xxxxx/go/src/github.com/deepch/RTSPtoWeb/
3.要執行時只要打
sudo go run *.go &
其中發現,如無打&時,不會背景執行,將ssh關閉後服務隨即被關閉。
為了可以再背景中執行,找了很久的方法發現,只要最後面加上&即可。[2]
4.如執行成功,於網頁瀏覽器輸入「http://NAS的IP:8083」,應該可看到下圖畫面。
(2)Stream url: rstp串流網址
(3)Stream type:串流方式
此處建議選On demand,比較不吃資源
6.串流網址取得方式,如為群輝NAS,請參考:分享串流路徑
三、提取m3u8串流網址
播放視窗裡面有個"HLS"選項,這種撥放格式採m3u8的方式串流。
原作者於Github上提供的API為http://127.0.0.1:8083/stream/{STREAM_ID}/channel/{CHANNEL_ID}/hls/live/index.m3u8
實際使用F12抓到的網址是
先將這個網址記錄下來,待會會用到。四、使用Html5顯示畫面
作者寫了一個http-streaming的JS,可參考[4]
(2021/03/24更新:以下為舊版程式,作者乙停止更新,請使用[4]最新版)
--------
參考了別人的作法[3],將網址簡化為
<!DOCTYPE html><html lang="zh-TW"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>RTSP播放</title> <link href="./css/video-js-cdn.min.css" rel="stylesheet"></head><body>
<video id="hls-video" width="400" height="240" class="video-js vjs-default-skin" playsinline webkit-playsinline autoplay controls preload="auto" x-webkit-airplay="true" x5-video-player-fullscreen="true" x5-video-player-typ="h5"> <!-- 直播訊號源 --> <source src="http://IP位置:8083/stream/XXXX/channel/XXXXX/hls/live/index.m3u8" type="application/x-mpegURL"></video><!--For mobile--><script src="./js/video.js"></script><!--For PC--><script src="./js/videojs-contrib-hls.js"></script><script> var player = videojs('hls-video'); player.play();</script></body></html>
存成html並下載對應之css即js後,即可撥放。
參考資料:
[1]golang&linux群暉NAS環境安裝
https://www.youtube.com/watch?v=aGDjm5hUDaw&ab_channel=EricHo
[2]golang 另类方法后台运行程序(linux、windows)
https://blog.csdn.net/CodyGuo/article/details/53939291
[3]Web 前端如何播放 HLS(.m3u8) 视频
https://gist.github.com/ufologist/1ec2b820738a95b25cf7d805ed615949
[4]http-streaming
https://github.com/videojs/http-streaming
沒有留言:
張貼留言