【问题标题】:How do I detect frequency of mp3's in .NET?如何检测 .NET 中 mp3 的频率?
【发布时间】:2010-09-30 09:11:23
【问题描述】:

我想在 C# .NET 中创建一个非常简单的软件,我可以将文件夹的路径传递给它并检测频率低于给定阈值的所有文件。关于我将如何做到这一点的任何指示?

【问题讨论】:

标签: c# .net mp3


【解决方案1】:

您必须阅读 mp3 文件。为此,您必须找到它们的规格。

一般mp3文件被包装在ID3标签中,所以你必须阅读它,找到它的长度并跳过它。我们以ID3v2.3 为例:

ID3v2/file identifier   "ID3" 
ID3v2 version           $03 00
ID3v2 flags             %abc00000
ID3v2 size              4 * %0xxxxxxx

所以字节 6,7,8,9 以大端形式存储标头长度。这是一些文件的示例:

 0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F
49 44 33 03 00 00 00 00 07 76 54 43 4f 4e 00 00

07 76 - 是大小。您需要将第一个字节左移,以便实际大小为3F6。然后加 10 (A) 得到偏移量 = 400。这是mp3头的起始地址。

然后你对mp3 header进行描述:

位是:AAAAAAAA AAABBCCD EEEEFFGH IIJJKLMM,我们需要FF,采样频率并将t转换为实际频率:

bits    MPEG1   MPEG2   MPEG2.5
00  44100   22050   11025
01  48000   24000   12000
10  32000   16000   8000
11  reserv. reserv. reserv.

【讨论】:

  • 是否有任何 sn-ps 代码支持这一点?然后我会标记为答案
  • @SocialAddict 你是认真的吗?深入研究 mp3 格式以找出它们存储频率的位置对我来说很有趣,但我不会为您编写代码,因为它是微不足道的。您应该能够自己完成,提供了广泛的信息和链接。
  • 我并不是要一个完整的解决方案。
  • 澄清:这并不能确定歌曲中任何点的频率,而是显示sampling rate
  • @Pacerier 采样率实际上是采样频率的同义词。但你是对的,在这种情况下它应该被称为采样率,因为它可能与声音本身的频率混淆。
【解决方案2】:

您可以使用UltraID3Lib 获取mp3 元数据(比特率、频率)

【讨论】:

    【解决方案3】:

    检查文件中频率位的值。 There is some mp3 格式信息。

    【讨论】:

    • 是不够的,因为通常ID3在mp3 header之前,需要先处理。
    猜你喜欢
    • 2011-04-04
    • 1970-01-01
    • 1970-01-01
    • 2011-02-08
    • 1970-01-01
    • 2012-10-23
    • 1970-01-01
    • 1970-01-01
    • 2011-07-11
    相关资源
    最近更新 更多