EasyNVR是如何作到無插件播放RTSP攝像機,完美將海康、大華、宇視等安防設備向互聯網轉化的

5G快來了,視頻將會是跑在網絡上流量最多的東西,短視頻、長視頻、電影、視頻通話、視頻監控,各類各樣的,而在消費級領域,監控視頻近些年也愈來愈受到關注和歡迎,從螢石攝像機的誕生、到一衆互聯網家用攝像機的興起,人們對於視頻的渴求已經遠遠超過紙媒、超過文字了,平常生活也從原來的文字消息、文字閱讀,變成了發個語音、看個短視頻;前端

發展衍變到安防流媒體,傳統的視頻安防模式,已經不適合了,安防+互聯網已經不只僅是說能知足需求而已,而是已經佔據了用戶的使用習慣,不論是普通企業安防、仍是公安領域、或者是安防互聯網相交地帶,人們已經很難接受那種在公司外感覺互聯網,在工做工具上回到原始時代,尤爲是難以接受IE、C/S客戶端、插件等等。nginx

咱們在傳統安防互聯網上,遇到了不少的需求:
問題:因爲傳統安防的設備,基本都是支持一個通用的RTSP協議的,有沒有flash播放RTSP的播放器?H5能不能支持RTSP播放?
答案:沒見過,之後估計也不會有;git

問題:能夠本身作瀏覽器插件播放RTSP嗎?
答案:能夠的,chrome作ppapi插件,IE用ocx插件;github

可是,兼容性太差了,開發成本太高。在PC web兼容性上面,目前最好的方案是flash或者H5,可是H5在IE比較低版本上面會存在不支持的問題,仍是須要前端兼容切換成flash模式;在手機 web/微信兼容上面,毫無疑問,H5是惟一選擇;web

方案

那麼問題來了,如何可以實現需求中的兩點:chrome

  • PC上輸出兼容性較強的flash須要的rtmp或者hls流或者http-flv流;
  • 手機上輸出H5標準的HLS(m3u8+ts)流;

其實目前市面上大部分的CDN方案已經提示了咱們如何解決上述的問題了,那就是採用rtmp推流到rtmp流媒體服務器,同步輸出:rtmp/hls/http-flv多種碼流,再經過前端的兼容適配,就能完美地達到想要的方案,總結來講,須要經過幾個步驟:api

  1. RTSP拉流;
  2. 音視頻轉碼(H.264 + AAC);
  3. RTMP推流;
  4. RTMP流媒體服務器;
  5. 前端兼容取流播放;

實現方法

1. RTSP拉流

目前市面上能很是兼容地拉取各個廠家的RTSP流的方案總結來講有兩種:瀏覽器

- live555
- ffmpeg前端框架

兩種都能比較不錯地請求獲取到各個廠家的攝像機碼流,但從可操做的靈活角度上來講,live555更勝一籌,好比:咱們遇到雄邁的某款攝像機須要在RTSP拉流的過程當中,向攝像機按期發送OPTIONS保活報文,而咱們遇到的某款海康的NVR在RTP over tcp取流的過程當中,一旦發送RTSP的任何報文,就會出現服務器端主動reset,種種此類,若是基於ffmpeg的拉流確實是能夠兼容大部分的攝像機IPC、NVR,可是遇到特殊種類的就比較難進行改造和兼容了;服務器

沒有絕對,根據需求,也許您就只須要接入某兩款特定類型的攝像機呢,怎麼適合現場需求怎麼來;

2. 音視頻轉碼(H.264 + AAC)

因爲目前RTMP、HLS的協議標準,包括前端的支持上,還停留在H.264+AAC的組合上,因此,咱們須要將各類視頻格式:H.26五、MJPEG、MPEG4,各類音頻格式:G.711A/U、G.726,都統一轉碼成H.264和AAC,說到轉碼,那確定是ffmpeg first;

目前市面上的大部分攝像機都是默認或者設定爲輸出H.264視頻流,但音頻流轉碼就確定是須要兼容的,目前來講安防標準中大部分的音頻格式都仍是G.711和G.726居多,那就能夠用faac、EasyAACEncoder(Based on faac)進行音頻轉碼了!

3. RTMP推流

RTMP推流毋庸置疑,目前最流行的仍是librtmp了,固然直接用ffmpeg也直接集成了rtmp推流的功能,並且在時間戳調優方面,幫助咱們省了不少事情;

關於時間戳調優上,咱們在開發EasyRTMP上花費了不少時間,因爲各個IPC廠家出來的時間戳不必定是很是標準的(這裏就要贊一下海康,批評一下雄邁了,請問雄邁的開發,大家搞出來的時間戳都是什麼玩意兒?),因此就須要RTMP推流端對時間戳進行一次均勻化,否則就會出現HLS常常會快放、慢放、卡頓緩衝加載的現象,這一點上EasyRTMP參考的ffmpeg的-re命令的方案,對時間戳進行了優化,保證均勻播放;

4. RTMP流媒體服務器

這裏說到的RTMP服務器有幾個輸出條件:

- rtmp
- hls
- http-flv(可選)

這種類型的開源流媒體服務器目前能夠推薦的有國產的srs、著名的nginx-rtmp、固然還有咱們開發的商業化的EasyDSS(EasyDSS是EasyDarwin團隊開發的一款商用流媒體服務器,詳情見:www.easydss.com),除了nginx-rtmp不能輸出http-flv功能(固然也不會影響總體需求的實現),都能很是好地知足用戶的需求;

5. 前端兼容取流播放

前端兼容固然就是一套很是閃亮並且先進的前端框架,能響應式地接受各類不一樣平臺終端的請求,爲PC web、手機 web、微信分配從rtmp流媒體服務器獲取rtmp、hls、http-flv等直播流;

推薦EasyNVR用到的EasyUI框架:

EasyNVR

推薦方案

說了這麼多,固然要推薦推薦本身團隊開發的EasyNVR了,以上的乾貨都是在開發EasyNVR的過程當中積累的;
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
EasyNVR

關於EasyNVR

EasyNVR可以經過簡單的網絡攝像機通道配置,將傳統監控行業裏面的高清網絡攝像機IP Camera、NVR等具備RTSP協議輸出的設備接入到EasyNVR,EasyNVR可以將這些視頻源的音視頻數據進行拉取,轉換爲RTMP/HLS,進行全平臺終端H5直播(Web、Android、iOS),而且EasyNVR可以將視頻源的直播數據對接到第三方CDN網絡,實現互聯網級別的直播分發;

相關文章
相關標籤/搜索