利用ffmpeg进行音频转码

11 篇文章 0 订阅

原文链接:https://blog.csdn.net/unfound/article/details/81205740

在进行音频转码前,首先需要查看我们原始音频中的编码格式以及一些重要的音频参数,包括:采样率,采样格式,通道类型等。

通过将原始的编码格式,采样率,采样格式,通道类型与目标编码格式,采样率,采样格式,通道类型进行对比,只有其中有一项不符合,我们就可以通过重采样操作,转换为所需要的类型。

查看原始音频的编码格式,采样率,采样格式,通道类型方法。

最简单的是通过av_dump_format()函数进行查看

不难看出,输入流中音频编码格式为aac,采样率为16k,通道类型为mono,采样格式为fltp,这些参数中部分是可以通过摄像机进行设置的。

音频转码过程

不同音频编码格式中,一帧音频的nb_samples不相同,G711为320,AAC为1024,如果将G711转为AAC则需要借助于额外的空间,直到采样数量为1024时,开始进行编码。

在此次转码中,需要用到SwrContext进行音频重采样。

首先设置目标音频格式参数和源音频格式参数

  1. SwrContext *swr = swr_alloc_set_opts(NULL, // we're allocating a new context

  2. AV_CH_LAYOUT_STEREO, // out_ch_layout

  3. AV_SAMPLE_FMT_S16, // out_sample_fmt

  4. 44100, // out_sample_rate

  5. AV_CH_LAYOUT_5POINT1, // in_ch_layout

  6. AV_SAMPLE_FMT_FLTP, // in_sample_fmt

  7. 48000, // in_sample_rate

  8. 0, // log_offset

  9. NULL); // log_ctx

设置完后,调用swr_init()进行初始化。通过swr_convert()进行重采样。

关于此部分详细介绍可以参考:

https://blog.csdn.net/BrookIcv/article/details/52464505

https://blog.csdn.net/timesir/article/details/52904024

下面将结合代码进行此部分详细介绍(此部分代码可参考ffmpeg 官方给出的AAC转码源码)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值