使用 GB28181.Solution + ZLMediaKit + MediaServerUI 進行攝像頭推流和播放
獨立觀察員 2020 年 8 月 25 日git
1、攝像機 GB28181 配置
打開 國標 28181 配置頁面,勾上 「接入使能」:github
打鉤的是重要的配置信息,主要就是 SIP 服務器的信息和攝像頭本身的編號、端口等信息。 npm
2、SIP 服務器 GB28181.Solution
項目地址:https://gitee.com/DLGCY_GB28181/GB28181.Solution緩存
(注:本文給出的項目地址若是是克隆的,頁面上會有 Fork 信息或者原地址,再也不單獨列出)服務器
使用的是 GB28181.WinTool 這個測試程序:微信
配置特寫:測試
使用流程:使用 VS 打開解決方案,修改好配置信息後,直接運行 GB28181.WinTool 項目,先點擊啓動,等待攝像頭髮來註冊信息和心跳信息,而後點擊目錄查詢,點擊出現的設備,最後點擊 「直播視頻」 便可。網站
程序向攝像頭髮送直播指令(INVITE)後,就是攝像頭直接向流媒體服務器以 RTP 協議發送 PS 數據流了: 編碼
3、流媒體服務器 ZLMediaKit
項目地址:https://gitee.com/DLGCY_GB28181/ZLMediaKiturl
注意:如要克隆本倉庫,還需克隆做爲子模塊的另外兩個倉庫 ———— ZLToolKit 和 media-server :
一、編譯項目
因爲這個是 C++ 項目,因此咱們要給 VS 安上 C++ 開發的工做負載:
因爲這個是 CMake 形式的項目,因此沒有解決方案文件(.sln), 咱們須要使用打開文件夾的方式:
打開後,咱們在 CMakeLists.txt 上右鍵,先生成緩存,成功以後再生成:
這樣在相關目錄就生成了配置文件 config.ini 和可執行程序 MediaServer.exe:
二、配置和運行
實際上也不須要怎麼配置,就是若是運行起來發現端口被佔用的話,改一下就好了。
說說後面會用到的兩個端口吧,一個是 RTP 的端口,在 rtp_proxy 節點下:
還有一個是 http 端口,後面播放視頻要用到:
配置完以後雙擊 MediaServer.exe 就能啓動了:
(感受這些提示信息不夠明確)
4、觀看視頻
咱們點擊 GB28181.WinTool 的 「直播視頻」 後,攝像頭就開始推流到 MediaServer 了:
來個特寫:
咱們看到出現了攝像頭的地址,同時還不斷看到一串編碼 ID,咱們拿這個 ID 就能播放視頻了。
那麼具體的視頻地址是什麼呢?做者卻是給出瞭解析方法:https://github.com/xia-chu/ZLMediaKit/wiki/ 播放 url 規則
協議支持 rtsp、rtsps、rtmp、rtmps、http、https、ws、wss,咱們這裏用 http 協議測試。
虛擬主機咱們選用 IP,我這裏是 192.168.16.120。
端口號因爲咱們選用 http 協議,而以前配置的是 801。
應用名我暫時還不知道怎麼來的,這裏應該是 rtp。
流 ID 是 24A4FFCC。
因此最終直播視頻地址爲:http://192.168.16.120:801/rtp/24A4FFCC.flv 或 http://192.168.16.120:801/rtp/24A4FFCC/hls.m3u8 。
地址有了,咱們還須要播放器,須要支持播放流媒體的播放器,推薦使用 PotPlayer。
運行後依次點擊 「打開」–「打開連接」:
而後填入地址(我從新打開過了,流 ID 變了),點擊肯定便可播放。
播放效果:
flv 地址的也是同樣:
5、ZLMediaKit 的管理網站 MediaServerUI
項目地址:https://gitee.com/DLGCY_GB28181/MediaServerUI
(使用普通分支便可,無需使用 GB28181 分支)
這是一個 Vue 項目,可參考《搭建一個 VUE 項目》進行環境搭建。
運行(一、cnpm install 二、cnpm run serve):
界面:
視頻播放:
(感受這個網站比較卡)
本文分享自微信公衆號 - dotNET跨平臺(opendotnet)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。