FFmpeg AVFrame音频数据修改

Arl*_*ind 5 c audio ffmpeg

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

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

从FFmpeg doxygen可以理解,数据的格式用表示,enum AVSampleFormat并且有2个主要类别:交错和平面。在交错类型中,数据全部AVFrame->data以大小保留在数组的第一行中,AVFrame->linesize[0]而在平面类型中,音频文件的每个通道都保留在AVFrame->data数组的单独行中,并且数组的大小保留为size AVFrame->linesize[0]

是否有指南/教程说明数组中的数字对每种格式意味着什么?

Ser*_*gio 3

每个data数组(平面)中的值都是根据指​​定格式的实际音频样本。例如,如果 format 是,AV_SAMPLE_FMT_S16P则意味着data数组实际上是int16_tPCM 数据的数组。如果我们处理单声道信号 - 仅data[0]有效,如果它是立体声 -data[0]并且data[1]有效,依此类推。

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