音频音频
🌍

音频

FFmpeg学习4:音频格式转换
前段时间,在学习试用FFmpeg播放音频的时候总是有杂音,网上的很多教程是基于之前版本的FFmpeg的,而新的FFmepg3中audio增加了平面(planar)格式,而SDL播放音频是不支持平面格式的,所以通过FFmpeg解码出来的数据不能直接发送到SDL进行播放,需要进行一个格式转换。通过网上一些资料,也能够正确的播放音频了,但是对具体的音频转换过程不是很了解,这里就对FFmpeg的对音频的存储格式及格式转换做个总结。本文主要有以下几个方面的内容: AVSampleFormat 音频sample的存储格式 channel layout 各个通道存储顺序 使用FFmpeg对音频数据进行格式转换 音频解码API avcodec_decode_audio4在新版中已废弃,替换为使用更为简单的avcodec_send_packet和avcodec_receive_frame。本文简单的介绍了该API的使用。 在FFmpeg中使用枚举 AVSampleFormat 表示音频的采样格式,其声明如下: enum AVSampleFormat { AV_SAMPLE_FMT_NONE = -1, AV_SAMPLE_FMT_U8, /// sample_rate) + frame->nb_samples, frame->sample_rate, frame->sample_rate, AVRounding(1)); 函数 av_rescale_rnd是按照指定的舍入方式计算a * b / c 。 函数 swr_get_delay得到输入sample和输出sample之间的延迟,并且其返回值的根据传入的第二个参数不同而不同。如果是输入的采样率,则返回值是输入sample个数;如果输入的是输出采样率,则返回值是输出sample个数。 3.
FFmpeg学习4:音频格式转换