ffmpeg:音频样本的字节顺序

Poo*_*Fan 2 c++ audio ffmpeg decoding libavcodec

我使用 ffmpeg 的 avcodec 从我的 C++ 应用程序中的音乐文件中检索原始音频样本。对于我测试的文件,这些文件样本的字节序似乎是小字节序,但我想知道对于我尝试解码的所有文件是否总是如此(即来自 ffmpeg 的实现或至少它的体系结构 -具体是因为我的计算机的体系结构使用小字节序)。如果没有,我认为这将取决于特定文件的编码格式。在这种情况下,我如何检查我正在解码的每个文件适用哪种字节序?我在文档中找不到任何相关信息。

And*_*kin 5

在内部,ffmpeg 始终对音频样本使用本机字节序,因为它可以更轻松地对数据执行各种操作(libavutil/samplefmt.h有关此事的一些文档,请参阅文件);编解码器的任务是根据文件格式的规定在适当的字节顺序之间进行转换。举一个简单的例子:有一系列简单的音频编解码器,用于读取/写入原始样本,称为pcm_*;例如有pcm_s16lepcm_s16be。在小端架构上,pcm_s16le不会进行任何转换,而pcm_s16be在解码/编码数据时会交换字节。