嘿伙计们我正在开发一个项目,我需要一个加载mp3文件的程序,发现它是bpm(每分钟节拍)并返回给我这个值。首选语言是C,但python也可以。我真的被困在这可能真的使用你的帮助。这是一个IOS应用程序(音乐播放器),我想用这首歌的bpm来帮助创建播放列表。不寻找Xcode解决方案。需要在C中编程然后在我的IOS应用程序中嵌入C.可以真的使用一些帮助人。
答案 0 :(得分:5)
没有简单的方法来通过读取mp3文件来检测节拍。你首先需要探索 各种节拍检测算法,并找到适合您的要求。 你可以从中得到一些帮助。
How to detect the BPM of a song in php
此特定文章也很好地解释了一种这样的节拍检测算法 http://www.flipcode.com/misc/BeatDetectionAlgorithms.pdf
您还需要获取一些音频/视频框架来解码mp3文件。 FFMS2为您提供解码 来自mp3文件和视频文件的音频样本。
https://code.google.com/p/ffmpegsource/
要处理这些原始样本,您可以使用Portaudio开源框架,也可以自己动手。
上述框架都易于使用和设置。
除此之外,你可以看看Audacity现有的节拍器实现方法,这是一个优秀的 用于分析音频的开源工具。
http://audacity.sourceforge.net/
我希望以上信息有所帮助。
答案 1 :(得分:0)
BPM不是一个技术性的东西,可以从文件中读取或类似的东西
您可以尝试通过分析原始音频数据来获取一些信息
(即幅度,频率......)并应用启发式算法,但那就是
a)不一定准确,b)复杂。
答案 2 :(得分:-1)
如果您很幸运,您可以从嵌入式元数据中读取该信息。例如ID3v2有一个TBPM标记,可以保存该值。但是音频文件不需要包含这些数据,所以它最好是一个不稳定的解决方案。