ffmpeg pcm码流编码为aac

在ffmpeg-2.8.1版本中,aac编码处理发生了变化,支持的PCM格式为AV_SAMPLE_FMT_FLTP,而非旧版的AV_SAMPLE_FMT_S16。要将PCM码流编码为AAC,需要使用swr_convert进行格式转换。首先创建SwrContext,设置输入输出格式,然后初始化并执行转换。转换完成后,按照旧版ffmpeg流程进行编码。
摘要由CSDN通过智能技术生成
根据雷霄骅博文介绍非常清楚

 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_FLTPpcm的格式为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);  <

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值