1. 程式人生 > >通過攝像機視訊裝置或者流媒體伺服器SDK獲取到資料轉換成RTMP流實現網頁/手機微信播放

通過攝像機視訊裝置或者流媒體伺服器SDK獲取到資料轉換成RTMP流實現網頁/手機微信播放

寫這篇部落格主要是為了給新入門的流媒體開發者解惑,現在看到各種開發者的需求:網頁播放RTSP攝像機、微信播放RTSP攝像機、網頁播放攝像機SDK輸出的視訊流、網頁播放第三方流媒體平臺輸出的視訊流、包括Github有一些所謂的H5RTSPPlayer,這些都無外乎一個共同點,就是H.264+AAC進行RTMP推流;

將整個過程進行拆分為二:

一、通過RTSP或者SDK獲取H.264視訊流和AAC音訊流,獲取RTSP流我們可以用ffmpeg、EasyRTSPClient(https://github.com/EasyDarwin/EasyRTSPClient)等方案,獲取SDK流我們就可以用各個攝像機廠家或者平臺廠家提供的各種平臺SDK(海康NetSDK、大華NetSDK、雄邁LocalSDK)等等,這些都能無一例外地有共同的流程:

  • 初始化
  • 登入
  • 設定資料回撥
  • 開始實時流
  • 處理實時返回的音視訊資料
  • 釋放Handle

視訊資料大多返回的是H.264資料流,音訊就各種各樣了,有返回G.711、G.726、AAC的,如果是返回的G.711或者G.726時,就需要呼叫AAC的編碼器(如ffmpeg、EasyAACEncoder等)將安防的音訊流轉換成AAC的音訊編碼格式;

二、將編碼好的H.264視訊和AAC音訊以RTMP/FLV的方式推流到通用的RTMP伺服器(nginx-rtmp、srs、EasyDSS、CRTMPD等),進行RTMP/HLS的直播,這裡就主要是RTMP推流功能的實現,我們可以採用ffmpeg、librtmp、EasyRTMP等多種方案推流,如果採用ffmpeg為工具進行RTSP拉流的話,我們建議推流也用ffmpeg,這樣直接將音訊資料在ffmpeg內部進行一次filter轉碼,就可以實現rtmp的output了,如果採用librtmp的話,也是比較好的方案,畢竟市面上90%的RTMP推流都是Based On librtmp,包括EasyRTMP,之所以推薦用EasyRTMP一方面是因為是EasyDarwin團隊其他夥伴的產品,另一方面,確實好用,有非常完備的多平臺呼叫示例(

https://github.com/EasyDarwin/EasyRTMP):

  • EasyRTMP_File:讀取MP4檔案推RTMP直播流,實現虛擬直播;
  • EasyRTMP_RTSP:讀取RTSP流並進行轉換成RTMP推流到RTMP伺服器;
  • EasyRTMP_SDK:呼叫SDK獲取音視訊流,再推流RTMP;
  • EasyRTMP Android:安卓推送攝像頭/螢幕進行RTMP直播;
  • EasyRTMP iOS:iOS蘋果推送攝像頭進行RTMP直播;

完備的呼叫示例,加上全平臺的支援(Windows、Linux、arm、Android、iOS),給了開發者非常好的選擇和幫助;

按照以上的兩個流程,我們就可以將RTSP/SDK獲取到的資料進行RTMP/HLS釋出,實現全終端、無外掛化的播放了,這也是所謂的H5 RTSP播放器的實現方案,RTSP要H5播放,必須藉助於伺服器的轉換;

獲取更多資訊

Copyright © EasyDarwin.org 2012-2017

EasyDarwin