AAC原始流能让ffmpeg软解或系统硬解,最简单的处理可在前面加上ADTS头,那么这个ADTS头如何添加呢?其实就是七个字节,下面分享一个我使用的代码样例,每次传递数据都是以一个个sample为单元的:
adts_header[7] = {0xff,0xf9,0x00,0x00,0x00,0x1f,0xfc};
//AAC level
switch(AAC_level)
{
case AUDIO_AACM:
adts_header[2] |= (0x00 << 6)&0xc0;
break;
case AUDIO_AACL:
adts_header[2] |= (0x01 << 6)&0xc0;
break;
case AUDIO_AACS:
adts_header[2] |= (0x02 << 6)&0xc0;;
break;
default:/*use AACL*/
adts_header[2] |= (0x01 << 6)&0xc0;
break;
}
//sampling rate
switch(AAC_sample_rate)
{
case SAMPLINGRATE_96000HZ:
adts_header[2] |= (0x00 << 2)&0x3c;
break;
case SAMPLINGRATE_88200HZ:
adts_header[2] |= (0x01 << 2)&0x3c;
br

本文介绍了如何对AAC原始流进行解码播放,特别是通过添加ADTS头实现软解或硬解的方法。示例代码展示了每个sample单元的处理过程。
最低0.47元/天 解锁文章
1034

被折叠的 条评论
为什么被折叠?



