如何以编程方式确定MP3文件是CBR还是VBR?(最好使用c#)

如何以编程方式确定MP3文件是CBR还是VBR?(最好使用c#),c#,mp3,C#,Mp3,我知道许多实用程序可以告诉我MP3文件的比特率,但我从未见过一个实用程序可以告诉我MP3文件是VBR(可变比特率-比特率在文件中波动)还是CBR(恒定比特率-比特率在文件中保持不变)。我的猜测是,大多数程序对发现这一点不感兴趣,因为它需要对文件进行某种程度的分析,以查看比特率是否发生变化,这会影响速度 因此,我想编写一个实用程序来代替查找实用程序,那么如何通过编程确定MP3文件是VBR还是CBR呢?我有大约15000个文件要查找,所以我需要自动化这个过程。检查这个,它有一个方法告诉你mp3文件是

我知道许多实用程序可以告诉我MP3文件的比特率,但我从未见过一个实用程序可以告诉我MP3文件是VBR(可变比特率-比特率在文件中波动)还是CBR(恒定比特率-比特率在文件中保持不变)。我的猜测是,大多数程序对发现这一点不感兴趣,因为它需要对文件进行某种程度的分析,以查看比特率是否发生变化,这会影响速度

因此,我想编写一个实用程序来代替查找实用程序,那么如何通过编程确定MP3文件是VBR还是CBR呢?我有大约15000个文件要查找,所以我需要自动化这个过程。

检查这个,它有一个方法告诉你mp3文件是否是VBR,以及所有mp3头信息

...
boolVBitRate = LoadVBRHeader(bytVBitRate);
...

MP3文件基本上是由所谓的帧构成的。每个帧都有一个小标题,用于存储有关该帧的信息。标头还存储帧使用的比特率。在CBR文件中,所有帧使用相同的比特率,因此每个头具有相同的比特率信息

要检测文件是否使用VBR,您必须遍历文件的每一帧,查看标题并检查比特率字段是否更改。如果有,那就是一个VBR MP3


这里有MP3格式的完整描述:

该类用于确定其VBR文件是否非常有限的方法。它只是检查是否在文件的(可选)ID3v2头之后找到字符串“Xing”,但任何标准都没有描述这一点,而且有些编码器即使是VBR文件也没有将“Xing”放进去。