【问题标题】:How can I programmatically determine whether an MP3 file is CBR or VBR? (preferrably using c#)如何以编程方式确定 MP3 文件是 CBR 还是 VBR? (最好使用c#)
【发布时间】:2008-10-13 00:44:26
【问题描述】:

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

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

【问题讨论】:

    标签: c# mp3


    【解决方案1】:

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

    要检测文件是否使用 VBR,您必须检查文件的每一帧,查看文件头并检查比特率字段是否发生变化。如果是,则它是 VBR MP3。

    MP3格式的完整描述在这里:http://www.mpgedit.org/mpgedit/mpeg_format/mpeghdr.htm

    【讨论】:

      【解决方案2】:

      查看这个MP3Header Class,它有一个方法可以告诉你mp3文件是否为VBR,以及所有的mp3头信息...

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

      【讨论】:

      • 这个类用来确定它的VBR文件是否非常有限的方法。它只是检查是否在文件的(可选)ID3v2 标头之后找到字符串“Xing”,但这没有被任何标准描述,并且即使它是 VBR 文件,也有编码器不会将“Xing”放入.
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-17
      • 1970-01-01
      • 2010-12-29
      • 1970-01-01
      相关资源
      最近更新 更多