计算波形PCM文件的持续时间(以秒为单位)及其大小

本文关键字:为单位 PCM 波形 文件 持续时间 计算 | 更新日期: 2023-09-27 18:00:35

我想用C#计算波形PCM文件的持续时间(以秒为单位),我发现https://ccrma.stanford.edu/courses/422/projects/WaveFormat/描述波形文件头的链接我使用这个,但这个方法不会返回正确的答案

public static int GetDuration(this byte[] waveFile)
{
     int bitRate = BitConverter.ToInt32(waveFile, 28) * 8;
     int sampleRate = BitConverter.ToInt32(waveFile, 24);
     int headerSize = 36;
     short channels = BitConverter.ToInt16(waveFile, 22);
     return ((waveFile.Length - headerSize) / (sampleRate * (bitRate / 8))) / channels;
}

计算波形PCM文件的持续时间(以秒为单位)及其大小

应该有一个32位的数字,它包含偏移0x1C处每秒的平均字节数。只需将file - 0x2C的长度除以average bytes per second即可。看看这个:http://s14.directupload.net/images/140428/7suewylj.png(来自维基百科)。

这种方法应该适用于大多数波形文件。