FFmpeg AVFrame音频数据修改

我想弄清楚FFmpeg在音频解码后如何在AVFrame中保存数据.

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

根据我从FFmpeg doxygen中可以理解的,数据的格式在枚举AVSampleFormat中表示,并且有两个主要类别:交错和平面.在交错类型中,数据全部保存在AVFrame->数据阵列的第一行中,其大小为AVFrame-> linesize [0],而在平面类型中,音频文件的每个通道保存在单独的行中. AVFrame->数据阵列和阵列的大小为AVFrame-> linesize [0].

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

最佳答案 每个数据阵列(平面)中的值是根据指定格式的实际音频样本.例如.如果format是AV_SAMPLE_FMT_S16P,则表示数据数组实际上是int16_t PCM数据的数组.如果我们处理单声道信号 – 只有数据[0]有效,如果它是立体声 – 数据[0]和数据[1]有效,等等.

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

点赞