有没有可能我可以通过 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()
有没有可能我可以通过 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()
我为音频文件中的 BPM 检测编写了一个简单的 php 类。它使用 soundtouch 和 ffmpeg 来获取 BPM。你可以在这里得到它 - php-bpm-detect
您可以尝试在服务器上安装 SoundTouch 音频处理库后从 php 调用它。
常见问题解答指出它可以检测 BPM。我不知道它是否可以处理 mp3 文件,但是您可以使用 ffmpeg 将它们转换为 wav,然后运行 bpm 检测。
请检查链接以获取更多信息。
可以通过多种方式计算节拍率 (BPM)。首先,您需要找到如何检测只有局部声能峰值的节拍。假设您要分析 WAV 文件,最好逐个样本搜索整个文件并找到连续样本之间的高差异。差异有多大?很难说,您将不得不尝试使用不同的值(不同的检测阈值)。MP3 检测更难,因为它也是经过压缩的。
这里有一些其他的想法:
BTW:您确定要使用 PHP 进行 BPM 检测吗?如果您有服务器,您可能还可以使用其他语言,例如作为 cgi 脚本启动的 C/C++。它会更有效地使用内存和 CPU。
祝你的项目好运!
编辑:尝试使用 Google 查找不同的项目,但涵盖相同的主题(wav 分析),例如http://www.ixwebhosting.mobi/2011/09/20/3445.html - 从 WAV 文件和将其保存为 PNG。如果它绘制波形,你就领先一步——现在你必须实现算法,而不是绘制样本值,而是分析它们以找到节拍。