计算波形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;
}
应该有一个32位的数字,它包含偏移0x1C
处每秒的平均字节数。只需将file - 0x2C
的长度除以average bytes per second
即可。看看这个:http://s14.directupload.net/images/140428/7suewylj.png(来自维基百科)。
这种方法应该适用于大多数波形文件。