1

2 つ以上 (たとえば、最大 5 つ) の短い ogg ファイルを同時に再生できる必要があります。同時にとは、完全な同期を意味します。それらをSoundPoolにロードして再生することはできますが、これにより再生開始時間に顕著な差が生じることがあります。これを取り除きたいです。

私の理解では、PCM を 1 つのバッファーにミックスして再生すると、これを回避できます。しかし、OGG は PCM ではないため、再生前に何らかの方法で効率的にデコードする必要があり、理想的にはユーザーがボタンを押した直後にレイテンシーを非常に低くする必要があります。そこで、OGG を PCM にストリーミングする方法が必要だと考えました。バッファを受信したら、それらをミックスして AudioTrack にフィードします。私の要件は Android 2.3.3+ であるため、Jelly Bean で提供される新しいコーデックは使用できません。

また、OGG 自体は小さいですが、たくさんあります。そのため、それらをすべてメモリにデコードしておくと (SoundPool または一部のプリデコード)、問題が発生する可能性もあります。

誰かがどこを掘るべきかヒントをくれますか? OpenSL ES はそれを行うことができますか? または、ffmpeg の統合を検討する必要がありますか? また、低遅延で同時ファイルをストリーミングすることさえ可能ですか?

ありがとう

4

1 に答える 1

1

AssetPlayers を使ってサウンドを再生することはできますが、これによって再生開始時間に顕著な差が生じることがあります...

したがって、Ogg Vorbis (ここのように) を使用して ogg をデコードし、この PCM バッファを BufferPlayer に使用することをお勧めします。

ところで、この OpenSL ES ラッパーを確認してください

https://github.com/Suvitruf/Android-ndk/tree/master/OpenSLES

于 2014-04-06T07:43:06.537 に答える