0

Android を使用してバックグラウンドで曲を継続的に再生してMediaPlayerいます。つまり、継続的にループするということです。

また、クラス25-30 を使用して個別のデュレーションで再生する短いサウンドもあり、メインの曲で何度も再生する必要があります。SoundPool

音の長さは0.5それぞれ 2 秒で、一部は0.7Mbサイズが異なりますが、曲の平均サイズは約0.4Mb.

このアプリを作成したデバイスでこのすべてをスムーズに実行できますが、SoundPool がデュアル コアの電話で再生する際に問題があることがわかりました。だから私は彼らへの支持を撤回した。

最近、2.3.3 を実行している古いデバイスでアプリをテストしましたが、新しい問題は、サウンドが最初の 4 ~ 5 サイクル、つまりメインの曲が 4 ~ 5 回再生されるまでは正しく再生されているように見えることです。音の再生に顕著な遅延がありました。値をログに記録したSoundPool.play()ところ、遅延が ~(1 ~ 2 秒) であることがわかりました。この問題はローエンドの電話でのみ発生します。なぜこれが起こっているのでしょうか。問題が発生していると思います。私がテストしSoundPoolたデバイスには十分なRAMie500Mbとまともな600Mhzプロセッサがあったので、これはハードウェアの問題ではありません。

当面の間、デュアルコア電話を除くほとんどのデバイスでアプリが実行されることを期待しているため、これを修正する必要があります。

また、私は MediaPlayer を使用してサウンドを再生することはできません。これは、CPU オーバーヘッドを増やしてアプリの遅延を増やしたくないためです。また、事前に再生したいサウンドの数もわかりません。

この問題を修正してラグを減らす方法についての手がかりは大歓迎です。

4

1 に答える 1

1

多くのハードウェア/低レベルのソフトウェア要因が関係しているため、オーディオ/ビデオの再生には通常問題があります (個別のチップ上に特殊なデコード ハードウェアが存在するか、CPU に組み込まれている可能性があり、そのすべてがソフトウェア デコーダーと組み合わせて、Bluetooth 間の切り替え、ヘッドフォンジャックと 2 つのスピーカー、カーネルから Android システムまでの膨大なソフトウェア スタックなど)。これはおそらく、Android デバイスのサブシステムの中で最も壊れやすいものです。多くのデバイスには、その領域に小さな癖があり、Mhz / RAM / デュアルコアに直接関連するものではありません。残念ながら、あなたはそれらのいくつかと一緒に暮らす必要があります:(

あなたの最善の策は、オーディオを再生/圧縮するさまざまな方法を試すことです。5サイクル後に再生を再開するなど

于 2012-04-24T18:55:41.933 に答える