N Audio中AudioFileReader.Length和AudioFileReader.TotalTime之间的关系是什么?

时间:2018-01-07 10:10:09

标签: c# audio bitmap naudio waveform

我正在编写一个小应用程序来创建MP3文件的波形。我创建了一个位图,但目前只是让它太大(12800像素),所以我可以确保整个波长适合。

var samples = reader.Length / (reader.WaveFormat.Channels * reader.WaveFormat.BitsPerSample / 8);
Bitmap bim = new Bitmap(12800, 200);
Graphics g = Graphics.FromImage(bim);

这样可行,但我最终在波形图像的末尾有一堆空格:

enter image description here

我想更聪明地做这件事,并使用由样本数计算的变量来确保位图宽度与波形的长度相匹配(即没有空格)。

我真正想做的是将宽度与时间联系起来 - 因此1秒(例如)15像素。

我可以使用AudioFileReader.TotalTime获取持续时间,但我无法弄清楚这与AudioFileReader.Length的关系。

1 个答案:

答案 0 :(得分:2)

Length以字节为单位,TotalTime使用TimeSpan <{p>的AverageBytesPerSecond将其转换为WaveFormat