audio相关(下)
G726的数据使用libEasyAACEncoder编码之后使用系统自带的mediaplay播放没有声音,其他的播放器例如VLC,暴风影音,迅雷等都可以播放声音。最后只能硬着头皮看libEasyAACEncoder的源码,调试中发现了问题:
1) libEasyAACEncoder使用faac将pcm转化为AAC,在PcmToAac的Init函数中将mpegVersion 选择了MPEG2,而我的电脑faacEnOpen打开时mpegVersion 版本为MPEG4
2)libEasyAACEncoder 输出的音频都是带ADTS头的,需要使用raw格式mediaplay才可以播放。
4)必须要设置MP4SetTrackESConfiguration();否则播放没有声音,其中的参数可以通过faacEncGetDecoderSpecificInfo函数获取:
unsigned char* pBuffer = NULL;
unsigned long pBuffLen = 0;
int bRet = faacEncGetDecoderSpecificInfo( hEncoder, &pBuffer, &ppBuffLen);
memcpy( pConfig, pBuff, pBuffLen);
if( pBuff )
{ free( pBuff ); }
扫描下方二维码,关注业余草微信公众号,回复“FFmpeg”关键词,获取 FFmpeg 视频教程!