C ライブラリ (Aubio) を使用してMediaPlayer
、Android で再生中の音楽のビート検出を実行しようとしています。生のオーディオ データをキャプチャするために、私は を使用してVisualizer
います。これは一定の間隔でバイト バッファーをコールバック関数に送信し、JNI を介して C ライブラリに送信します。
一貫性のない結果が得られます (つまり、ほとんどビートが検出されず、実際にはオーディオと一貫していないビートのみが検出されます)。私は何度もチェックしましたが、自分で何をしているのかを正確に除外することはできませんが、ドキュメントVisualizer
では明示されていないため、Android が正確にどのように動作するのか疑問に思っています。
- を使用してバッファ サイズを設定
setCaptureSize
すると、キャプチャされたバッファが完全なオーディオ サンプルにわたって平均化されるということですか? たとえば、キャプチャ サイズを 2 で割ると、キャプチャされたサウンドは同じになりますが、時間軸の精度は 2 分の 1 になりますか? - 捕獲率も同じですか?たとえば、半分のレートでキャプチャ サイズを 2 倍に設定すると、同じデータが得られますか?
- キャプチャは連続していますか? 言い換えれば、キャプチャの処理に時間がかかりすぎると、次のキャプチャを受け取ったときに、処理中に再生された音は無視されますか?
あなたの洞察に感謝します!