在.NET中如何检测mp3文件的频率?

3

我想在C# .NET中创建一个非常简单的软件,可以传递一个文件夹路径,并检测所有频率低于给定阈值的文件。您有什么建议吗?


你是指采样率吗? - Pacerier
3个回答

4

您需要读取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头部的描述

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

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

有任何支持此的代码片段吗?如果有,那我会将其标记为答案。 - Andrew
@SocialAddict 你是认真的吗?对我来说,挖掘MP3格式以找出它们存储频率的位置很有趣,但我不会为你编写代码,因为这很简单。你应该能够自己完成,因为已经提供了详细信息和链接。 - Andrey
1
我并不是在要求完整的解决方案。 - Andrew
澄清:这并不确定歌曲中任何点的频率,而是显示采样率 - Pacerier
@Pacerier,采样率实际上是采样频率的同义词。但你说得对,在这个上下文中应该称为采样率,以避免与声音本身的频率混淆。 - Andrey

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

1

检查文件中频率位的值。这里有一些关于mp3格式的信息。


这还不够,因为通常情况下ID3出现在mp3标头之前,所以您需要先处理它。 - Andrey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接