1

C ライブラリ (Aubio) を使用してMediaPlayer、Android で再生中の音楽のビート検出を実行しようとしています。生のオーディオ データをキャプチャするために、私は を使用してVisualizerいます。これは一定の間隔でバイト バッファーをコールバック関数に送信し、JNI を介して C ライブラリに送信します。

一貫性のない結果が得られます (つまり、ほとんどビートが検出されず、実際にはオーディオと一貫していないビートのみが検出されます)。私は何度もチェックしましたが、自分で何をしているのかを正確に除外することはできませんが、ドキュメントVisualizerでは明示されていないため、Android が正確にどのように動作するのか疑問に思っています。

  • を使用してバッファ サイズを設定setCaptureSizeすると、キャプチャされたバッファが完全なオーディオ サンプルにわたって平均化されるということですか? たとえば、キャプチャ サイズを 2 で割ると、キャプチャされたサウンドは同じになりますが、時間軸の精度は 2 分の 1 になりますか?
  • 捕獲率も同じですか?たとえば、半分のレートでキャプチャ サイズを 2 倍に設定すると、同じデータが得られますか?
  • キャプチャは連続していますか? 言い換えれば、キャプチャの処理に時間がかかりすぎると、次のキャプチャを受け取ったときに、処理中に再生された音は無視されますか?

あなたの洞察に感謝します!

4

1 に答える 1

0

コールバック関数がオーディオ信号全体を取得していることを確認してください。たとえば、コールバック関数から出たフレームとコールバックに到達したフレームをカウントします。

ドキュメントを参照すると役立ちVisualizerます。

于 2013-02-28T18:23:15.873 に答える