2012-11-23 25 views
19

私は、5から30秒のような異なる持続時間で、複数のオーディオファイルを再生する必要があります。また、左右のチャンネルの音量を独立に設定したい場合や、リバーブやディストーションのようなエフェクトを適用したい場合もあります。だから、どのAPIを使うべきですか?AudioTrack、SoundPool、MediaPlayerどちらを使用しますか?

また、私はAudioTrack APIであまりにも多くのドキュメントを見つけることができません。あなたはどこで例を見つけられますか? Thx。

答えて

2

MediaPlayerでは、マルチチャネルの音量の設定はサポートされていません。

私はSoundPoolがあなたのニーズに合った唯一のものだと思います。

編集:私は、このような期間のためのMediaPlayerをお勧めします http://www.wiseandroid.com/post/2010/07/13/Intro-to-the-three-Android-Audio-APIs.aspx

+0

ありがとう、私はsoundpoolで試してみます。 – Fede

+0

MediaPlayerは左右チャンネルの音量を個別に設定することができます。これは良い例です:https://www.codota.com/android/methods/android.media.MediaPlayer/setVolume さらに、ここでドキュメントを参照できます: https://developer.android.com/ reference/android/media/MediaPlayer.html#setVolume(float、float) –

39

サウンドプールは、実際には、オーディオミキサーです。 oggまたはmp3としてエンコードされているか、または非圧縮であるかにかかわらず、短いクリップだけを再生できます。サウンドプールは常に圧縮されていないメモリにそれらを格納し、その制限が1 MBであることを知る必要があります。あなたのクリップのメモリが大きすぎると、サウンドプールが無音になり、次のエラーが表示されます: "AudioFlingerはトラックを作成できませんでした"ステータス:-12 " メディアプレーヤーはストリームを再生し、リアルタイムでデコードします。だから、より長いクリップを再生することができますが、そのためのプロセッサパワーが必要です。

メディアプレーヤーはバックグラウンドミュージックに適していますが、サウンドプールは短時間の音声効果(クリック、爆発、サウンドループ)に優れています。さらに、サウンドプールは同時に多くのクリップを再生することができ、ボリュームとスピードコントロールを備えています。また、それはループを再生することができます。

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

メディアプレーヤーはこれらの問題を抱えていません。

4

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

SoundPoolにはこのような問題はなく、SoundPoolは呼び出されたときに音声を再生することに気付きました(MediaPlayerを使用したときに時々少しの遅延が見られました)。

私は、SoundPoolがゲームなどの短い音に優れていると言う理由の一部です。 これが役に立ちますようお願いいたします。

関連する問題