如何将音频数据与时间联系起来

本文关键字:时间 联系 起来 数据 音频 | 更新日期: 2024-10-20 04:58:18

假设我想从Mp3文件中读取1毫秒的声音数据并将其呈现出来

var stream = NAudio.WaveStream.Mp3FileReader(filename);
int intervalInMilliseconds = someInterval;
int bytesPerInterval = ???;
for(int i = 0; i < bytesPerInterval;i++)
{
     Console.WriteLine(stream.GetByte());
}

我需要做什么来解决bytesPerInterval?这有可能做到准确吗?(注意:NAudio不是这里的要求,只是我目前使用的。)

或者,如果我有一个字节索引,是否可以确定该字节将在哪个时间点播放(相对于时间00:00:0000)?

如何将音频数据与时间联系起来

您无法直接从MP3中读取1毫秒的音频数据。MP3在具有固定大小时间片的频域中工作。一个典型的切片大约是13毫秒。

为了获得准确的时间,您需要将音频转换回时域中的样本。CD质量的音频以16位PCM采样每秒采样44100次。计算这些数据的原始大小(以字节为单位)很简单:

sampleCount * bytesPerSample * channels

此外,一毫秒的音频并不能平均划分为44.1kHz,所以你需要选择这样的时间。