我正在编写一个小应用程序,以从MP3文件创建波形。我创建了一个位图,但是现在只是使其变得过大(12800像素),这样我就可以确保整个波长都适合。

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

这可行,但是我在波形图像的结尾处留了一堆空白:

c# - N Audio中AudioFileReader.Length和AudioFileReader.TotalTime之间是什么关系?-LMLPHP

我想更智能地执行此操作,并使用由样本数量计算出的变量来确保位图宽度与波形的长度匹配(即没有空白)。

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

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

最佳答案

Length以字节为单位,TotalTime使用TimeSpanAverageBytesPerSecond将其转换为WaveFormat

关于c# - N Audio中AudioFileReader.Length和AudioFileReader.TotalTime之间是什么关系?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48136136/

10-09 22:59