在PHP中获取MP3的节拍率

时间:2013-04-23 13:09:03

标签: php mp3

我是否有可能通过PHP获得放置在我的服务器上的音频文件的节拍率(每分钟节拍或每秒节拍)。 主要场景是我的服务器上的某个位置有一些音频文件(mp3,wav等),我要根据它们的节拍率对它们进行分类。


我得到了这个: http://pear.php.net/reference/MP3_IDv2-0.1.4/__filesource/fsource_MP3_IDv2__MP3_IDv2-0.1.4IDv2FrameTBPM.php.html

任何人都可以解释如何使用函数getBPM()

3 个答案:

答案 0 :(得分:2)

我为音频文件中的BPM检测编写了一个简单的php类。它使用soundtouch和ffmpeg来获取BPM。你可以在这里得到它 - php-bpm-detect

答案 1 :(得分:1)

在服务器上安装后,您可以尝试从php调用SoundTouch音频处理库。

FAQ说明它可以检测BPM。我不知道它是否可以处理mp3文件,但是你可以使用ffmpeg将它们转换为wav然后运行bpm检测。

请查看链接以获取更多信息。

SoundStretch audio processing utility

答案 2 :(得分:0)

节拍率(BPM)可以通过多种方式计算。首先,你需要找到如何检测节拍,这些节拍只是声能的局部峰值。假设您想要分析WAV文件,最好逐个样本地搜索整个文件,并找出连续样本之间的高差异。差异有多大?很难说,你将不得不尝试不同的值(不同的检测阈值)。 MP3检测更难,因为它也是压缩的。

以下是其他一些想法:

How to detect the BPM of a song in php

BTW:您确定要使用PHP进行BPM检测吗?如果您有服务器,您可以使用其他语言,例如作为cgi脚本启动的C / C ++。它会有更多的内存和CPU效率。

祝你的项目好运!

编辑:尝试使用Google查找不同的项目,但涵盖相同的主题(wav分析),e.x。 http://www.ixwebhosting.mobi/2011/09/20/3445.html - 从WAV文件中绘制波形图并将其保存到PNG的项目。如果它绘制波形你是领先一步 - 现在你必须实现算法不绘制样本值,但分析它们以找到节拍。