將海康大華等網路攝像機RTSP流進行網頁Flash rtmp和H5 hls直播的技術方案

東邊的小山發表於2017-11-16

通過開源、開源社群,我們接觸了大大小小各行各業的直播需求形態,大多數使用者選擇了最省錢的一種方式:用自有的IPC攝像機做為視訊源,用企業自己的固定線路進行長時間不間斷的常態直播,省錢啊!

上面說到何種需求形態,尤其是在較大企業需要,如:石油、航天、安監、農業,他們有一個共同點,前期投入了大量的經費構建自己的專用網路,有固定IP,頻寬上下行足夠大,流量不用也是浪費,基於自身安全保密考慮,需要在自建的網路中建設直播方案;

要義:我有頻寬,我有伺服器,我有固定IP,我有攝像頭,我就想做自己的直播,不想用CDN!

技術實現方法

剝離業務需求,流媒體方面的業務需求基本就是:

  1. RTSP流轉RTMP流進行RTMP/HLS直播;

    此部分是功能的核心,如何能夠穩定、支援重連、低延時、時間戳均勻地進行RTMP、HLS直播,ffmpeg是開發者的首選,能夠相容絕大部分的RTSP流和高效的RTMP推流,而且能夠保持低延時,如果僅僅是用來做一個demo,那麼用ffmpeg的命令就能搞定,通過:ffmpeg -re -i rtsp://xxx -f flv rtmp://xxx,這種命令形式,推送效果很好,但是有一個缺點,就是ffmpeg.exe目前不帶自動斷線重連的功能,所以,ffmpeg.exe只能做為demo來用; 
    另一種方式就是基於ffmpeg或者EasyRTSPClient+EasyRTMP的二次開發功能,自己開發出支援重連的RTSP拉轉RTMP推的功能,這個方案我們在部落格《EasyRTMP實現將RTSP流轉換成RTMP流實現RTSP直播轉RTMP直播的功能》和《EasyRTMP+EasyRTSPClient實現的多路(支援斷線重連)RTSP轉RTMP直播推流工具》中已經詳細描述,ffmpeg來做的話,也將會是同樣的方法,對每一路的“RTSP轉RTMP”維護一個Session,每一個Session有一個ffmpeg拉流的RTSPSource和一個RTMP推流的RTMPSink,ffmpeg再維護RTSPSource的重連和RTMPSink的重連;

  2. 外圍對這些RTSP輸入源與RTMP輸出源進行通道化的管理;

    按照1中的描述,我們不但要做“RTSP轉RTMP”的功能,還要做一個外圍的有效的Source和Sink從配置、到修改、啟用/禁用、列表查詢等一系列的功能,這個功能其實就是類似NVR的通道管理的概念,而且通道管理還需要增加一些增值化的服務就更好了,比如:線上狀態、通道快照、是否啟用音訊、是否長時間拉流推流/還是有人看的時候再拉轉推,等等一系列的功能;

方案推薦

上面描述了這種業務需求的要義和解決方案,為自家開源團隊開發的產品打個廣告:EasyNVR,這個在之前的部落格中也已經詳細描述過一些應用的場景了《基於EasyNVR實現RTSP/Onvif監控攝像頭Web無外掛化直播監控》,EasyNVR在這一塊已經經過了很多使用者和應用場景的論證,對一般的企業級直播需求是完全能夠滿足的,而且還能對接到CDN,可以說是一款足夠“小而美”的應用產品!

EasyNVR 下載

EasyNVR專案下載地址:https://github.com/EasyDarwin/EasyNVR(內含使用文件和介面文件)

EasyNVR適用於各種網路場景中

EasyNVR

EasyNVR

EasyNVR

EasyNVR適用的案例

基於EasyNVR實現了很多行業場景的直播需求,目前已經廣泛應用於石油油田、水利大壩、園區監控、幼兒園直播、景區直播:

EasyNVR網頁監控

上為一水利監控專案應用,EasyNVR伺服器一邊擁有內網訪問許可權,一邊擁有公網固定IP,採用的是方案1x

EasyNVR網頁監控

上為一施工工地網頁監控專案,採用的EasyNVR方案為1x

EasyNVR網頁監控

上為一幼兒園直播監控專案,面向家長進行幼兒園微信直播,採用的EasyNVR方案為1x

EasyNVR網頁監控

上為一園區監控網頁監控專案,採用的EasyNVR方案為1x

EasyNVR網頁監控

上為一施工工地網頁監控專案,採用的EasyNVR方案為1x

EasyNVR網頁監控

上為中石油地點網頁監控專案,採用的EasyNVR方案為2x

EasyNVR

獲取更多資訊

相關文章