安防領域HLS直播問題探討
近期外出交流比較多,在之前的一篇博客《一種流量成本節省60%以上的手機直播微信直播H5直播幼兒園直播方案》我們說到了一種模式,就是當我們在做最近火熱的幼兒園直播平台時,比較簡單的做法是在幼兒園內部會部署一台工控機設備,上面跑一個RTMP推流程序,再在公網部署一套流媒體服務器,內網的RTMP推流服務將攝像機的視頻流拉取到本地再不間斷地推流到公網的RTMP流媒體服務器,這樣就能在公網獲得一個固定的HLS m3u8直播地址,這樣就可以交給微信業務端,嵌入到直播業務中了,這種做法的好處:
實現方法簡單靈活,直接拉流+推流+HLS切片;
微信HLS秒開,無等待過程,起播非常快;
服務器上行流量多是免費的,所以,對流量的消耗沒有影響;
唯一存在的問題是:
太耗內網網絡的上行帶寬,比如一個家庭100M寬帶,上行4M~8M,那么一路攝像機就算調整的比較低,控制在512kbps,一個月幼兒園只能滿足8~16路左右的攝像機,要增加再多的攝像機,一種做法是降低畫質到更低,還有一種就是增加帶寬線路,顯然兩種都不是很好的方案;
內網上行帶寬基本被全時段占據,連辦公網絡也會收到影響,簡單說就是,傳文件都傳不出去了,因為帶寬已經被上行的視頻直播流量用掉了;
方案選擇
之前在我們的《基於EasyDarwin雲視頻平台的幼兒園視頻直播(手機直播/微信直播)解決方案》中,我們是實現了一種按需推流直播的方案,這種方案在什么情況下是效果是比較好的呢?
內網攝像機太多太多了,都同時上傳直播視頻不大合適;
觀看的客戶端是原生App,直接可以采用RTMP播放;
因為采用按需直播的形式,HLS是臨時切片的,也就是說這個切片過程會因為終端的不同,起播消耗的時間也不一樣,體驗會比較差,那么當您的應用對攝像機的畫質要求不高,也就是畫面可以盡量壓縮、或者內網的攝像頭數量不多,就那么幾個,占用不了多少上行帶寬資源,那么我們可以采用內網不間斷RTMP直播推流,公網RTMP流媒體服務器不間斷直播切片的方案了;
方案實現
那么我們如何實現這種方案呢,也就是如何在公網一直進行內網攝像頭的RTMP/HLS直播,我們可以采用EasyNVR+EasyDSS的方案!
第一步:公網流媒體服務器下載並部署EasyDSS流媒體服務器
直接在EasyDSS官網下載EasyDSS流媒體服務器版本,其中包含了EasyDSS流媒體服務器Windows/Linux版本及使用手冊PDF:
主要配置節點:
第二步:內網主機下載並部署EasyNVR
在EasyNVR官網:http://www.easydarwin.org/easynvr,下載EasyNVR最新版本,其中包含EasyNVR Windows/Linux版本、EasyNVR使用文檔PDF和二次開發接口文檔PDF;
常規配置按照EasyNVR使用手冊中配置即可,這里說一下需要達成本文方案所需要的關鍵配置方法:
- 配置EasyNVR的nginx_rtmp_ip和nginx_rtmp_port為公網的EasyDSS流媒體服務器的IP和RTMP端口;
- 將每一個EasyNVR的通道配置為“非按需直播”,也就是不間斷從攝像機拉流,再推到RTMP流媒體服務器;
第三步:調用EasyDSS流媒體服務器接口獲取直播地址
完成以上兩步之后,就可以直接調用公網的EasyDSS文檔中描述的接口,例如:getlivesessions、query_record_devices等等接口,獲取攝像機的RTMP直播流、HLS直播流、錄像檢索、錄像回放等功能了;
獲取更多信息
Copyright © EasyDarwin.org 2012-2017