Android の「ビジュアライザー」で可視化したい PCM ストリームがありますが、大声で再生する必要はありません。
そのため、私はandroid-visualizerを実装しました。
使用すると、視覚化は成功します
audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, 44100,
AudioFormat.CHANNEL_OUT_STEREO, AudioFormat.ENCODING_PCM_16BIT,
fileContent.length, AudioTrack.MODE_STREAM);
audioTrack.play();
mVisualizerView.link(audioTrack);
..
audioTrack.write(fileContent, 0, bytes);
しかし今、私の問題は、PCM を実際に「再生」したくないということです。視覚化したいだけです。ユーザーはメディア プレーヤーで音楽を聴いている可能性がありますが、邪魔したくありません。
だから私は「OK、AudioTrack をミュートするだけでいい」と思いました:
audioTrack.setStereoVolume(0.0f, 0.0f);
しかし悲しいことに、これ以上の視覚化もありません。SCALING_MODE_NORMALIZED により、Visializer は AudioTrack のラウドネスを無視する必要があると考えました。
キャプチャされたデータの内容に基づいて増幅が適用されるキャプチャ モードを定義します。これはデフォルトのビジュアライザー モードで、音楽の視覚化に適しています。
次に試したのは、PCM をオーディオ トラックに書き込むのではなく、直接ドロワーに提供することでした。
mVisualizerView.updateVisualizer(fileContent);
これにより曲線が作成されますが、非常にクレイジーに見え、私が期待したものとは何の関係もありません (モノではなくステレオを提供しているためでしょうか?)。
また、PCM ストリームの「波形」または「fft」データの作成にも成功しませんでした。
誰かアイデアはありますか?