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、時間戳為毫秒值,兩個時間戳之差表示兩個幀的時間間隔(機關:毫秒)