36

5 秒から 30 秒のように、長さが異なる複数のオーディオ ファイルを再生する必要があります。また、左右チャンネルの音量を個別に設定し、リバーブやディストーションなどのエフェクトも適用したいと考えています。では、どの API を使用すればよいでしょうか?

また、AudioTrack API に関するドキュメントがあまり見つかりません。例をどこで見つけることができるか知っていますか? どうも。

4

5 に答える 5

58

サウンド プールは、実際にはオーディオ ミキサーです。ogg または mp3 としてエンコードされているか、圧縮されていないかに関係なく、短いクリップのみを再生できます。サウンド プールは常に圧縮されていない状態でメモリに保存しますが、制限が 1 MB であることを知っておく必要があります。クリップがメモリ内で大きすぎる場合、サウンド プールは静かになり、次のエラーが表示されます。そのため、はるかに長いクリップを再生できますが、それにはプロセッサのパワーが必要です。

そのため、メディア プレーヤーはバックグラウンド ミュージックに適していますが、サウンド プールは短いオーディオ効果 (クリック、爆発、サウンド ループ) に適しています。さらに、サウンド プールはより多くのクリップを同時に再生でき、音量と速度を制御できます。また、ループ再生も可能です。

1 つの注意: クリップが完全に読み込まれ、デコードされていない場合、サウンド プールから音楽を再生することはできません。そのため、OnLoadCompleteListener (Android 10 以降) を使用して確認する必要があります。デコードする前にサウンドを再生しようとすると、サウンド プールはミュートされます。

メディア プレーヤーには、これらの問題はありません。

于 2013-08-31T12:41:24.983 に答える
9

他の回答が示唆したことに加えて、MediaPlayer と SoundPool の違いの 1 つは、MediaPlayer では既に再生中のサウンド クリップを再生できないことです (この機能は特にゲームで役立つ可能性があります)。MediaPlayer は、再度再生する前にクリップを完全に終了する必要があります。公式サイトに情報が掲載されていると思います。

ただし、SoundPool にはそのような問題はなく、SoundPool が呼び出されたときにオーディオを再生することにも気付きました ( MediaPlayer を使用すると、わずかな遅延に気付くことがありました)。

ゲームなどの短い音ならSoundPoolの方がいいと言われるのは、そのせいだと思います。お役に立てれば:)

于 2016-08-27T18:37:16.050 に答える
2

MediaPlayer は、マルチチャンネルの音量設定をサポートしていません。

ここでのニーズに合うのはSoundPoolだけだと思います。

編集: はい、SoundPool が必要です。これを読んでください: https://blog.csdn.net/chen_cheng_fly/article/details/7357350

于 2012-11-23T10:58:30.507 に答える