Mp3文件的PCM数据的存储是否依赖于大端序和小端序?

本文关键字:是否 PCM 文件 数据 存储 Mp3 依赖于 | 更新日期: 2023-09-27 18:14:24

我是在PCM作为一个初学者工作,我正在使用Naudio库。所以我想知道PCM数据的存储是否取决于小端序和大端序或者如果存储不取决于那么内存寻址是否取决于这个大端序和小端序,因为PCM数据有最低有效字节,当然也有最高有效字节,正如我所知,小端序和大端序有不同的方式将这些字节存储到内存中,因此从磁盘读取数据到内存可能会产生错误的值,直到我反转数组,然后将其转换为short值。

为了让你明白我在说什么,这里有一个简短的例子:

一个非常短的PCM数据,只有4字节:

Address Value
1000    90
1001    AB
1002    12
1003    CD

这是一个in大端字节的存储空间。下面是小端

的存储
Address Value
1000    CD
1001    12
1002    AB
1003    90

那么当您使用Naudio读取PCM时,是否会发生字节反转?因为我会检查BitConverter是否为Little Endian,根据它,我会反转字节数组,像这样:

                    Int16 Left_Sample = BitConverter.ToInt16(Buffer, i);
                    Int16 Right_Sample = BitConverter.ToInt16(Buffer, i + 2);
                    Int16 Final_Sample = (Int16)(0.5f * ((float)Left_Sample + (float)Right_Sample));
                    byte[] Final_Byte = BitConverter.GetBytes(Final_Sample);
                    if (BitConverter.IsLittleEndian){ Array.Reverse(Final_Byte); }

总结一下:

问:大小端序对字节存储有影响吗?

Q:我需要使用if(BitConverter.IsLittleEndian)语句来反转数组吗?

Mp3文件的PCM数据的存储是否依赖于大端序和小端序?

在WAV文件中,PCM样本以小端位数存储。

MP3文件是一种压缩的音频格式,所以说它使用什么端序是没有意义的,但是当NAudio转换为PCM时,它将再次是小端序。

AIFF文件通常将样本存储为大端,但同样,NAudio将为您处理此问题。

没有看到更多的代码很难说,但我怀疑你需要做任何字节顺序交换自己,如果你使用NAudio正常。