读书人

ffmpeg aac编码pcm 音频流,该如何解

发布时间: 2012-09-14 23:00:49 作者: rapoo

ffmpeg aac编码pcm 音频流
AVCodec *m_DecodeCodec;

AVCodecContext *m_DecodeC;

int CMyAudio::InitDecode()
{
m_DecodeCodec = avcodec_find_decoder(CODEC_ID_ADPCM_IMA_WAV);

if(!m_DecodeCodec)
{
TRACE("查找解码器失败\n");

return 1;
}

m_DecodeC = avcodec_alloc_context();

m_DecodeC->codec_type = CODEC_TYPE_AUDIO;
m_DecodeC->sample_rate = 44100;
m_DecodeC->channels = 2;
m_DecodeC->bit_rate = 64000;
m_DecodeC->sample_fmt = SAMPLE_FMT_S16;

if(avcodec_open(m_DecodeC,m_DecodeCodec) < 0)
{
TRACE("打开解码器失败\n");

return 1;
}

return 0;
}

int CMyAudio::EncodeAudio(char *chSourceData,int nSourceLen,char *chTargetData,int &nTargetLen)
{
int frame_size, out_size, outbuf_size;

short *samples;

uint8_t *outbuf;

frame_size = m_EncodeC->frame_size;

samples = (short*)malloc(nSourceLen);

outbuf_size = 10000;

outbuf = (uint8_t*)malloc(outbuf_size);

memcpy(samples,chSourceData,nSourceLen);

while(1)
{
out_size = avcodec_encode_audio(m_EncodeC, outbuf, outbuf_size, samples);

if(out_size > 0)
break;
}

nTargetLen = out_size;

memcpy(chTargetData,outbuf,out_size);

free(outbuf);

free(samples);

return 0;
}

aac的音频流 这样 解码成 pcm音频流 行吗

[解决办法]
解码比较简单啊,按照流程下来就好了 av_register_all(), av_open_codec()...之后就是把AAC一政的数据塞给解码器就OK了,注意ADTS的头,
你还可以用faad,一个纯粹的AAC decode

读书人网 >VC/MFC

热点推荐