ffmpeg + jsmpeg + node 實現單路 or 多路低延時直播 ( mac )


前提:視頻流格式采用 海康nvr攝像頭的rtsp流;

默認格式為 rtsp://賬號:密碼@ip地址   舉個栗子:  rtsp://mifan:1234567@172.16.154.198

目標:實現h5中視頻低延遲視頻播放

環境准備:

  • nodejs + http-server(客戶端網頁容器)  網上安裝教程超多,可自行百度
  • fmpeg(向jsmpeg服務端推流) mac中安裝可參考 https://www.jianshu.com/p/f6990aee6c7f
  • jsmpeg(流轉成websocket)  jsmpeg 點擊下載
  • 一個rtsp視頻流 (也可以是本地視頻文件)

 安裝websocket和http-server

npm install -g ws
npm install ws
npm install http-server -g

1、單路直播  (webscoket-replay.js)

1.1 啟動 jsmpeg

打開一個命令行,進入jsmpeg目錄,運行:

node websocket-relay.js supersecret 8081 8082

參數說明:

  • Supersecret 是密碼
  • 8081 是ffmpeg推送端口
  • 8082 是前端webSocket端口

1.2 啟動ffmpeg推流

再起一個服務 開始推流

ffmpeg -I "rtspurl節目源地址" -q 0 -f mpegts -codec:v mpeg1video -s 1366x768 http://127.0.0.1:8081/supersecret

1.3 啟動一個http-server
再打開一個命令行進入jsmpeg目錄,輸入:

http-server

1.4 用瀏覽器打開網址

http://ip:8080/view-stream.html

正常就能看到視頻畫面了。

2、多路直播

簡單描述下原理, 客戶端頁面連接websocket將需要查看的直播地址傳遞過來,websocket服務端通過[FFMPEG],
將直播視頻轉碼為 mpegts 格式發送給客戶端, 客戶端通過jsmpeg,解碼數據 通過canvas 將直播畫面繪制在頁面上;
但是經測試,停留時間過久,會出現延遲現象,並且同個端口目前瀏覽器限制為最多6路(可開啟http2.0多路復用),本次測試1個端口下分配2路,多路需自行指定相應端口;


 

 

詳細代碼請移步:https://github.com/fanmx/rtsp-jsmpeg 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM