0

現在、getID3() を使用して、アーティスト名、ファイルサイズ、期間などの mp3 タグ データを読み取っています。ユーザーがファイルをサイトにアップロードすると、これらすべてがオンザフライで行われます。

ただし、データベースに保存するために、各曲のテンポを bpm で自動的に検出したいと考えています。

つまり、一言で言えば、centOS サーバーから実行できるコマンド ライン ユーティリティ、または mp3 または wav ファイルを取得して分析し、テンポを bpm として返す PHP ベースのスクリプトを探しています。

私はsoundstretchを見つけましたが、それは明らかにそれを行うことができますが、いくつかの理由でそれをインストールできないようです.

誰にもアイデアはありますか?

編集:私は最終的にsoundtouch/soundstretchを正常にインストールすることができました.

戻り bpm 値をデータベースに追加できるように、php アップロード スクリプト内から動的に呼び出したいと思います。

私は成功しなかったフォローしようとしました...

$bpm = exec("soundstretch $filename -bpm");

変数 $bpm に bpm が含まれると仮定します。サウンドタッチの仕組みを誤解しているに違いありません。残念ながら、ドキュメントは最小限です。

返された bpm を収集し、それを変数として格納してデータベースに保存するにはどうすればよいでしょうか。

4

3 に答える 3

0

以下は、SoundStretch を使用して BPM をテキストとして取得するための bash コマンド ラインです。

soundstretch audio.wav -bpm 2>&1 | grep "Detected BPM" | awk '{print $4}'

コマンドライン出力のstderr代わりにSoundStretchを使用しています。stdout詳細はソースコード (SoundStretch/main.cpp) で確認できます。

于 2016-10-04T06:45:06.040 に答える
0

deseven によるphp-bpm-detectをチェックしてください。これは非常にシンプルな php ラッパーであり、うまく機能します。ffmpeg と soundstrech の依存関係をインストールするだけです:

基本的な使い方:

$bpm_detect = new bpm_detect("file.mp3");  
echo $bpm_detect->detectBPM(); 
于 2016-01-23T02:04:36.933 に答える