http://blog.csdn.net/leixiaohua1020/article/details/25430449
可是为什么我这么做了却出来奇怪的声音?经过仔细研究发现是我们使用的ffmpeg版本有了很大的变化造成,我使用的是ffmpeg-2.8.1,对音频编码处理已经有了很大的变化。
查看aac编码
AVCodec ff_aac_encoder = {
.name = "aac",
.long_name = NULL_IF_CONFIG_SMALL("AAC (Advanced Audio Coding)"),
.type = AVMEDIA_TYPE_AUDIO,
.id = AV_CODEC_ID_AAC,
.priv_data_size = sizeof(AACEncContext),
.init = aac_encode_init,
.encode2 = aac_encode_frame,
.close = aac_encode_end,
.supported_samplerates = mpeg4audio_sample_rates,
.capabilities = AV_CODEC_CAP_SMALL_LAST_FRAME | AV_CODEC_CAP_DELAY |
AV_CODEC_CAP_EXPERIMENTAL,
.sample_fmts = (const enum AVSampleFormat[]){ AV_SAMPLE_FMT_FLTP,
AV_SAMPLE_FMT_NONE },
.priv_class = &aacenc_class,
};
支持的转换格式为AV_SAMPLE_FMT_FLTP,而pcm的格式为AV_SAMPLE_FMT_S16
而老版的ffmpeg 的则是:AV_SAMPLE_FMT_S16;
1. pCodecCtx = audio_st->codec;
2. pCodecCtx->codec_id = fmt->audio_codec;
3. pCodecCtx->codec_type = AVMEDIA_TYPE_AUDIO;
4. pCodecCtx->sample_fmt = AV_SAMPLE_FMT_S16;
5. pCodecCtx->sample_rate= 44100;
6. pCodecCtx->channel_layout=AV_CH_LAYOUT_STEREO;
7. pCodecCtx->channels = av_get_channel_layout_nb_channels(pCodecCtx->channel_layout); <