1. 程式人生 > >各種RTMP直播流播放許可權_音視訊_資料花屏_問題檢測與分析工具EasyRTMPClient

各種RTMP直播流播放許可權_音視訊_資料花屏_問題檢測與分析工具EasyRTMPClient

之前的一篇部落格《網路攝像機IPCamera RTSP直播播放網路/許可權/音視訊資料/花屏問題檢測與分析助手EasyRTSPClient》,我們介紹了RTSP流的檢測和分析工具EasyRTSPClient,可以說已經是深入了我的平時運維工作中了,當我們發現有任何RTSP源或者攝像機無法播放的時候,我用EasyRTSPClient工具執行檢測一下,就立即能夠知道問題原因,真是非常非常方便;

有librtmp,為什麼還要做EasyRTMPClient?

毋庸置疑,librtmp是RTMP領域的巨人之一,無論是RTMP-Client,還是RTMP-Push,無數的專案都在引用librtmp實現播放器、手機直播、編碼器等功能,實際上我們做RTMPClient也無需再實現一套,直接使用librtmp就可以了,但是,librtmp距離我們商用的RTMPClient的需求總是差這麼或者那麼幾個功能:

  • 自動重連:

    實際自動重連功能在librtmp外圍呼叫也是可以實現的,但是由於開發者的水平參差不齊,要非常好地實現重連回收,做穩定重連這個功能點,是非常困難的,尤其是各種記憶體和物件以及重連時機的選擇,我們選擇在底層進行RTMPClient重連,為上層開發者減少由於協議帶來的學習成本和開發成本,這樣,哪怕上層開發者不懂RTMP技術,也可以非常好地實現一個穩定、高效的RTMP播放器客戶端;

  • 裸資料回撥:

    librtmp回調出來的flv資料,就好比RTSP客戶端回調出來的有時候是RTP資料,這些資料比較難被H.264工具做gop和關鍵幀的分析,只有都統一在底層將flv封裝成H.264資料型別,上層無論是做解碼顯示,還是錄影儲存,還是資料分析,都非常簡單了,不用再在上次做sps、pps解析,做flv合併;

EasyRTMPClient

  • 錯誤碼及錯誤資訊回撥:

    遇到無法播放的RTMP流是,librtmp沒有很好地統一將對應的錯誤碼,比如:無法訪問錯誤、socket錯誤、401錯誤等等,我們需要這些回撥以一個統一的出口回撥到上層,再由上層進行對應的處理方案;

EasyRTMPClient

  • 小而美:

    實際上述鎖描述的功能點ffmpeg都是能做到的,但是ffmpeg只做一個RTMPClient功能的話,過於龐大,導致整個App的包會比較大,我們需要的是一個小而美的工具元件,被整合在使用者的App中,開發者和使用者能以極低的學習成本,就能輕鬆掌握需要開發的功能點;

EasyRTMPClient

EasyRTMPClient是一套非常穩定、易用、支援重連線的RTMPClient工具,以SDK形式提供,介面呼叫非常簡單。該EasyRTMPClient庫未使用或參考現有的任何RTMP庫,完全自主實現,因此,EasyRTMPClient更易於維護,穩定性、可擴充套件性得以提升,同時,本RTMP庫全平臺支援(包括windows/linux 32&64,ARM各平臺,android, ios)!

呼叫流程

RTMPSourceCallBack資料回撥說明

EasyRTMPClient可以回調出多種型別的資料:

#define EASY_SDK_VIDEO_FRAME_FLAG  /*視訊幀資料*/
#define EASY_SDK_AUDIO_FRAME_FLAG  /*音訊幀資料*/
#define EASY_SDK_EVENT_FRAME_FLAG  /*事件幀/日誌資料*/

EASY_SDK_VIDEO_FRAME_FALG 資料可支援的視訊格式:

#define EASY_SDK_VIDEO_CODEC_H264

視訊幀標識支援

#define EASY_SDK_VIDEO_FRAME_I  /* I幀 */
#define EASY_SDK_VIDEO_FRAME_P  /* P幀 */
#define EASY_SDK_VIDEO_FRAME_B  /* B幀 */

當回調出RTSP_FRAME_INFO-codec為EASY_SDK_VIDEO_CODEC_H264資料,RTSP_FRAME_INFO->type為EASY_SDK_VIDEO_FRAME_I關鍵幀時,我們輸出的資料結構為SPS+PPS+I的組合:

|-----sps-----|-----sps-----|-------I Frame-------|
|             |             |                     |
|---------reserved1-----reserved2-------------length

EASY_SDK_AUDIO_FRAME_FLAG資料可支援多種音訊格式:

#define EASY_SDK_AUDIO_CODEC_AAC  /* AAC */
#define EASY_SDK_AUDIO_CODEC_MP3  /* MP3 */

如果以上格式無法滿足您的需求,可聯絡我們進行定製開發。

獲取更多資訊

Copyright © EasyDarwin Team 2012-2017

EasyDarwin