5 秒から 30 秒のように、長さが異なる複数のオーディオ ファイルを再生する必要があります。また、左右チャンネルの音量を個別に設定し、リバーブやディストーションなどのエフェクトも適用したいと考えています。では、どの API を使用すればよいでしょうか?
また、AudioTrack API に関するドキュメントがあまり見つかりません。例をどこで見つけることができるか知っていますか? どうも。
5 秒から 30 秒のように、長さが異なる複数のオーディオ ファイルを再生する必要があります。また、左右チャンネルの音量を個別に設定し、リバーブやディストーションなどのエフェクトも適用したいと考えています。では、どの API を使用すればよいでしょうか?
また、AudioTrack API に関するドキュメントがあまり見つかりません。例をどこで見つけることができるか知っていますか? どうも。
サウンド プールは、実際にはオーディオ ミキサーです。ogg または mp3 としてエンコードされているか、圧縮されていないかに関係なく、短いクリップのみを再生できます。サウンド プールは常に圧縮されていない状態でメモリに保存しますが、制限が 1 MB であることを知っておく必要があります。クリップがメモリ内で大きすぎる場合、サウンド プールは静かになり、次のエラーが表示されます。そのため、はるかに長いクリップを再生できますが、それにはプロセッサのパワーが必要です。
そのため、メディア プレーヤーはバックグラウンド ミュージックに適していますが、サウンド プールは短いオーディオ効果 (クリック、爆発、サウンド ループ) に適しています。さらに、サウンド プールはより多くのクリップを同時に再生でき、音量と速度を制御できます。また、ループ再生も可能です。
1 つの注意: クリップが完全に読み込まれ、デコードされていない場合、サウンド プールから音楽を再生することはできません。そのため、OnLoadCompleteListener (Android 10 以降) を使用して確認する必要があります。デコードする前にサウンドを再生しようとすると、サウンド プールはミュートされます。
メディア プレーヤーには、これらの問題はありません。
他の回答が示唆したことに加えて、MediaPlayer と SoundPool の違いの 1 つは、MediaPlayer では既に再生中のサウンド クリップを再生できないことです (この機能は特にゲームで役立つ可能性があります)。MediaPlayer は、再度再生する前にクリップを完全に終了する必要があります。公式サイトに情報が掲載されていると思います。
ただし、SoundPool にはそのような問題はなく、SoundPool が呼び出されたときにオーディオを再生することにも気付きました ( MediaPlayer を使用すると、わずかな遅延に気付くことがありました)。
ゲームなどの短い音ならSoundPoolの方がいいと言われるのは、そのせいだと思います。お役に立てれば:)
MediaPlayer は、マルチチャンネルの音量設定をサポートしていません。
ここでのニーズに合うのはSoundPoolだけだと思います。
編集: はい、SoundPool が必要です。これを読んでください: https://blog.csdn.net/chen_cheng_fly/article/details/7357350