問題描述:
調用av_interleaved_write_frame接口發送AAC格式的音頻數據時,報錯:Invalid data found when processing input。
解決方案:
if (pOutFormatCtx->oformat->flags & AVFMT_GLOBALHEADER){
pOutAudioCodecCtx->flags |= CODEC_FLAG_GLOBAL_HEADER;
}
我之前添加過上面的代碼,但是沒有執行到,導致av_interleaved_write_frame接口失敗,強制設置了一下,可以了。
pOutAudioCodecCtx->flags |= CODEC_FLAG_GLOBAL_HEADER;
AV_CODEC_FLAG_GLOBAL_HEADER在源碼中的定義如下:
/**
* Place global headers in extradata instead of every keyframe.
* 將全局頭部信息放在extradata指針中,而不是每一個關鍵幀中
*/
#define AV_CODEC_FLAG_GLOBAL_HEADER (1 << 22)
注意:有些格式需要設置該參數。
其具體使用可參考:
https://blog.csdn.net/a812073479/article/details/79856262
https://blog.csdn.net/passionkk/article/details/75528653