場景
目前市面上有很多開源的流媒體服務器解決方案,常見的有SRS、EasyDarwin、ZLMediaKit和Monibuca等。
1、SRS
GitHub - ossrs/srs: SRS is a simple, high efficiency and realtime video server, supports RTMP, WebRTC, HLS, HTTP-FLV, SRT, MPEG-DASH and GB28181.
2、EasyDarwin
https://github.com/EasyDarwin/EasyDarwin
3、Monibuca
Monibuca · GitHub
4、ZLMediaKit
GitHub - ZLMediaKit/ZLMediaKit: WebRTC/RTSP/RTMP/HTTP/HLS/HTTP-FLV/WebSocket-FLV/HTTP-TS/HTTP-fMP4/WebSocket-TS/WebSocket-fMP4/GB28181/SRT server and client framework based on C++11
ZLMediaKit: 實現(xiàn)RTSP/RTMP/HLS/HTTP協(xié)議的輕量級流媒體框架,支持大并發(fā)連接請求
ZLMediaKit是一套高性能的流媒體服務框架,目前支持rtmp、rtsp、hls、http-flv等流媒體協(xié)議,
支持linux、macos、windows三大PC平臺和ios、android兩大移動端平臺。
ZLMediaKit功能概覽
注:
博客:
霸道流氓氣質(zhì)的博客_CSDN博客-C#,架構(gòu)之路,SpringBoot領(lǐng)域博主
實現(xiàn)
1、ZlMediaKit各文檔說明地址
Home · ZLMediaKit/ZLMediaKit Wiki · GitHub
其功能較多,這里我們需要的是在Windows上運行,以及修改配置文件配置一些端口地址等配置,并實現(xiàn)按需拉流。
比如前端選擇某攝像頭之后,才進行拉取該攝像頭的rtsp視頻流,并轉(zhuǎn)換成能網(wǎng)頁能播放的Http-flv格式的視頻流。
所以需要的文檔只有如下:
配置文件詳解:
ZLMediaKit/config.ini at master · ZLMediaKit/ZLMediaKit · GitHub
按需拉流:
ZLMediaKit實現(xiàn)按需拉流 · ZLMediaKit/ZLMediaKit Wiki · GitHub
RESTful接口:
MediaServer支持的HTTP API · ZLMediaKit/ZLMediaKit Wiki · GitHub
播放URL規(guī)則:
播放url規(guī)則 · ZLMediaKit/ZLMediaKit Wiki · GitHub
實現(xiàn)按需拉流流程
文檔地址:
ZLMediaKit實現(xiàn)按需拉流 · ZLMediaKit/ZLMediaKit Wiki · GitHub
2、Windows上運行ZLMediaKit
Windows上無直接可用版本,一種是可以根據(jù)文檔說明自己進行編譯。
快速開始 · ZLMediaKit/ZLMediaKit Wiki · GitHub
一種是直接從網(wǎng)絡上下載別人編譯好的版本。
這里選擇直接下載別人編譯之后的版本使用,比如下面:
Windows上ZLMediakit編譯后可直接運行版本(帶外置配置文件和運行可能所需dll依賴):
https://download.csdn.net/download/BADAO_LIUMANG_QIZHI/87685103
下載解壓之后,MediaServer.exe是服務主程序,config.ini是配置文件。
編輯config.ini配置文件,根據(jù)自己需要進行修改,具體參照官方配置說明
這里是將Http的端口由原來的80改為800了
修改完配置文件之后,管理員模式啟動MediaServer.exe即可。
啟動成功之后的頁面
其他功能所需配置根據(jù)自己需要決定開啟或關(guān)閉,以及默認這些開啟配置的端口注意不要沖突,
比如554、332、1935、19350、800、1443、9000、10002等配置文件中配置的端口。
ZLMediaKit啟動時提示:由于找不到libcrypto-1_1x64.dll,無法繼續(xù)執(zhí)行代碼。
以及提示:由于找不到libssl-1_1-x64.dll,無法繼續(xù)執(zhí)行代碼。
則系統(tǒng)需要該兩個依賴,從網(wǎng)絡下載這兩個dll,或者從上面資源中
將這兩個dll,放到C:\Windows\System32目錄下
添加如上兩個dll之后,如果ZLMediaKit仍然啟動時報錯,則是缺少其他必須的依賴dll,另外兩個dll也從上面復制到
System32目錄下,或者從網(wǎng)絡上自行下載之后復制過去。
faac:
Freeware Advanced Audio Codec download | SourceForge.net
SDL2:
Simple DirectMedia Layer - Homepage
3、實現(xiàn)按需拉流
這里以拉取rtsp視頻流為例。
比如拉取宇視的rtsp的視頻流。
rtsp://[username]:[password]@[ip]:[port]/media/video1/2/3
說明:
username: 用戶名。例如admin。
password: 密碼。例如admin123。
ip: 為設(shè)備IP。例如 192.168.1.107。
port: 端口號默認為554,若為默認可不填寫。
video: 1代表主碼流、2輔碼流、3第三碼流
如:rtsp://admin:admin123@192.168.1.107/media/video2
使用vlc拉取rtsp視頻流確保能進行拉流和預覽
按照文檔說明如果需要實現(xiàn)按需拉流,需要在要拉流預覽時調(diào)用api,所有api都可用get或post進行請求
/index/api/addStreamProxy
參數(shù)說明
參考給出的示例url
http://127.0.0.1/index/api/addStreamProxy?vhost=__defaultVhost__&app=proxy&stream=0&url=rtmp://live.hkstv.hk.lxdns.com/live/hks2
修改為
http://127.0.0.1:800/index/api/addStreamProxy?vhost=127.0.0.1&app=live&stream=test&url=rtsp://admin:123456@攝像頭Ip/media/video2
這里都是在本地,并且配置的http的端口為800,然后指定虛擬主機地址也為本地,如果在服務器上,則配置為服務器的地址,然后設(shè)置流的應用名和流的唯一標識id
將以上地址在瀏覽器中訪問或者用postman等測試工具中請求,請求成功時
狀態(tài)碼返回0,返回流應用名live,以及流的唯一標識id為test。
那么這些關(guān)鍵字可以根據(jù)文檔URL的規(guī)則說明中進行拼接其他視頻流格式。
比如拼接http-flv的格式為
http://127.0.0.1:800/live/test.flv
那么這個地址就可以直接在vlc或者網(wǎng)頁中進行播放。
我們統(tǒng)一在vlc中進行播放http-flv以及原生rtsp的視頻流進行對比延遲
如果rtsp的流地址播放失敗則返回-1
?
4、播放URl規(guī)則
注意上面播放URL規(guī)則中
老代碼flv直播后綴為.flv,新代碼才改成了.live.flv,這里是老版本的編譯版本。
這里的live就是對應上面api調(diào)用時的流應用名,0就是對應的流id。
所以這里對應的url為
http://127.0.0.1:800/live/test.flv
在html以及Vue中播放http-flv格式的視頻可參考如下:
Nginx-http-flv-module流媒體服務器搭建+模擬推流+flv.js在前端html和Vue中播放HTTP-FLV視頻流:
Nginx-http-flv-module流媒體服務器搭建+模擬推流+flv.js在前端html和Vue中播放HTTP-FLV視頻流_rtmp轉(zhuǎn)flv_霸道流氓氣質(zhì)的博客-CSDN博客
5、不是部署在本機
上面調(diào)用api進行按需拉流時地址是127.0.0.1,如果ZLMediaKit在服務器上,如果直接修改ip為服務器ip則會提示
缺少必要參數(shù)secret
根據(jù)接口說明
如果操作Ip不是本機,則需要添加這個參數(shù),參數(shù)獲取在服務器上配置文件中獲取
6、按需拉取多個rtsp流
如果說需要拉取多個視頻流,則只需要調(diào)用接口時傳遞流id不同即可,流應用沒必要改變。
http://127.0.0.1:800/index/api/addStreamProxy?vhost=127.0.0.1&app=live&stream=test2&url=rtsp://admin:123456@第二個攝像頭Ip/media/video2
比如傳遞test2
則第二個攝像頭的預覽地址對應為文章來源:http://www.zghlxwxcb.cn/news/detail-415642.html
http://127.0.0.1:800/live/test2.flv文章來源地址http://www.zghlxwxcb.cn/news/detail-415642.html
到了這里,關(guān)于開源流媒體服務器ZLMediaKit在Windows上運行、配置、按需拉流拉取攝像頭rtsp視頻流)并使用http-flv網(wǎng)頁播放的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!