天天看點

開放視訊編碼(H.264)編解碼資料輸入、輸出接口

AnyChat是一套開放的音視訊即時通信解決方案,早期的版本已經開放了原始資料的輸入、輸出接口:

1、通過用戶端回調函數可以輸出使用者原始的視訊采樣幀資料(YUV、RGB):視訊資料回調函數

2、通過外部資料輸入接口可以支援将外部的視訊幀傳給AnyChat進行編碼:如何使用外部音視訊資料輸入功能?

對于某些特定的場合,上層應用希望擷取AnyChat核心原始的H.264編碼資料,或是希望将H.264編碼之後的資料傳輸給AnyChat,自AnyChat r4268版本開始提供了支援,該特性将給AnyChat帶來更大的靈活性、可擴充性,包括:

1、有助于AnyChat與其它平台互聯互通時進行資料交換,實作與其它平台的對接,如SIP通信終端;

2、通過編寫接入網頁,可以實作監控攝像頭、視訊點播平台等資料的接入;

新版本增加常量定義:BRAC_PIX_FMT_H264,API接口沒有改變。

1、當需要通過回調函數擷取使用者的H.264編碼資料時,可以在設定回調函數時傳入常量,如:

// 設定回調函數

BRAC_SetVideoDataExCallBack(BRAC_PIX_FMT_H264,OnVideoDataExCallBack, this);

// 回調函數實作

void CALLBACK OnVideoDataExCallBack(DWORD dwUserid, LPVOIDlpBuf, DWORD dwLen, BITMAPINFOHEADER bmiHeader, DWORD dwTimeStamp, LPVOIDlpUserValue)

{

}

複制代碼

2、當希望将編碼後的H.264資料傳入AnyChat時,可以通過外部資料輸入接口來實作,如:

// 初始化

BRAC_SetInputVideoFormat(BRAC_PIX_FMT_H264, 320, 240, 25, 0);

// 傳入資料

BRAC_InputVideoData(lpH264Frame, dwSize, dwTimeStamp);

複制代碼

相關說明:

1、輸入、輸出的H.264編碼幀資料均為NAL單元,包含幀起始标志:00 00 00 01 ,且每次輸入、輸出為一個NAL單元;

2、關鍵幀需要包含序列參數集(SPS:Sequenceparameter set)和圖像參數集(PPS:Pictureparameter set);

3、時間戳為毫秒值,兩個時間戳之差表示兩個幀的時間間隔(機關:毫秒)

繼續閱讀