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


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

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

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



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

音频转码过程




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

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

首先设置目标音频格式参数和源音频格式参数
SwrContext *swr = swr_alloc_set_opts(NULL, // we're allocating a new context
AV_CH_LAYOUT_STEREO, // out_ch_layout AV_SAMPLE_FMT_S16, // out_sample_fmt
44100, // out_sample_rate AV_CH_LAYOUT_5POINT1, // in_ch_layout
AV_SAMPLE_FMT_FLTP, // in_sample_fmt 48000, // in_sample_rate 0, // log_offset
NULL); // log_ctx
设置完后,调用swr_init()进行初始化。通过swr_convert()进行重采样。

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

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

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

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

 

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:637538335
关注微信