FFmpeg AVFrame音频数据修改

时间:2016-09-05 12:15:01

标签: c audio ffmpeg

我试图弄清楚在解码音频后FFmpeg如何在AVFrame中保存数据。

基本上,如果我在AVFrame->data[]数组中打印数据,我会得到许多无符号8位整数,这是原始格式的音频。

根据我对FFmpeg doxygen的理解,数据格式以enum AVSampleFormat表示,主要有两类:交错和平面。在交错类型中,数据全部保存在AVFrame->data数组的第一行,大小为AVFrame->linesize[0],而在平面类型中,音频文件的每个通道都保存在{{{1}的单独行中。 1}}数组和数组的大小为AVFrame->data

是否有指南/教程解释数组中的数字对每种格式的含义是什么?

1 个答案:

答案 0 :(得分:2)

每个data数组(平面)中的值是根据指定格式的实际音频样本。例如。如果格式为AV_SAMPLE_FMT_S16P,则表示data数组实际上是int16_t PCM数据的数组。如果我们处理单声道信号 - 只有data[0]有效,如果它是立体声 - data[0]data[1]有效,等等。

我不确定是否有任何指南可以帮助您解释每个特定情况,但无论如何所描述的方法都非常简单且易于理解。你应该稍微玩一下,事情应该变得清晰。