チョッピングせずにAndroidで確実に音楽を再生させる方法は?


10

Sony Ericsson Xperia X10でAndroid 2.3(PowerAmpを含むさまざまなプレーヤーを使用)で音楽を再生しようとすると、信頼性の高いサウンドが得られません。音楽が一時停止するのは、たとえば次の場合です。

  • 電源ボタンを押す(特に繰り返し)(request_suspend_state: sleep;request_suspend_state: wakeupdmesgで)
  • send sigkill to 15497 (ndroid.settings), adj 8, size 6428dmesgのようなメッセージが表示されたとき
  • 一部のプログラムが変更された画面の向きに反応したとき。
  • wifi接続が確立されたとき、強制的に「再関連付け」したとき
  • WidgetLocker画面との間を除いて、ホーム画面(AWDLauncher)からアプリケーションにアクセスする場合。
  • 機内モードを有効/無効にしたとき。
  • ディスプレイがオフのとき(最も煩わしい)

音楽を再生する本当に安定した方法が、StayAwakeを使用してディスプレイを強制的にオンにすることである場合は、Wi-Fiをオフにし、機内モードをオンにし、アプリケーションを切り替えないでください。のようにCPUを開始while true; do true; doneしても、チョッピングには影響しません。

そして、それはAndroid 2.1上で多かれ少なかれうまくいっていました。

「/ serv / dev / msm_pcm_outに書き込む」「mediaserv」プロセスには、リアルタイムioとスケジューリングの優先順位がありますが、とにかく音が途切れます。mplayer -ao pcm:file=/dev/msm_pcm_outサウンドチョップの少ない状態でコンソールから再生を開始した場合(特に、電源ボタンや重いプロセスの束の読み込みによって中断されない)、画面がオフの場合でも正常に動作しない場合(ionice -c1 -p4 cat /dev/urandom > /dev/msm_pcm_outぎくしゃくした場合でも)

音楽Aを通常の方法で開始し、音楽Bをmplayerを使用して/ dev / msm_pcm_out(混合する)に開始すると、音楽Aは通常よりもチョップし、通常、AがチョップしているときにBが聞こえます。画面をオフにすると、AとBの両方が同期してチョップします(Bを停止すると、Aの再生が比較的スムーズになります)。

バックグラウンドロードの存在下でAndroidで音楽を確実に再生する方法は?どこかにバグを報告する必要がありますか?

アップデート音楽を再生する方法が見つかりました。不便ですが、チョッピングはありませ

  1. 「CPUオン、画面オフ、キーボードオフ」モードでWakeLockを起動します。
  2. mplayerを使用して、Androidをバイパスして音楽を再生します。
ionice -c1 -n4  \
  schedtool -R -p 3 -e \
  mplayer -really-quiet \
        -af volume=-26 -quiet \
        -ao pcm:file=/dev/msm_pcm_out,nowaveheader \
    /mnt/sdcard/music/something.ogg
# (created script to start it easily, of course)

起動するアプリケーションの数、Wifi、向き、飛行機モードの処理に関係なく、途切れることなく再生されます。「省電力」のcpufreqガバナーを使用しても(すべて非常に遅いが、音楽は問題なく再生される)。したがって、ハードウェアにはそれを再生するのに十分なリソースがあります。

Update 2の ように見える

for i in `pgrep ''`; do schedtool -D $i; done

つまり、「すべてのプロセスにアイドル優先順位を設定」は、{プログラムを起動し、画面をロックし、画面を回転させ、他のモバイルネットワークステーションに再接続する}場合でも、ゲームの入力遅延を犠牲にして音楽を正常に再生します。それがなぜ起こるか正確に知らない。


どのデバイスをお持ちですか?リソースに制約があるようですね。多分速くて軽いカスタムROMはパフォーマンスを改善するでしょう。
フロー

ソニー・エリクソンXperia X10。「リソースに制約がある」とはどういう意味ですか?通常のアクティビティよりもメディアを優先し、存在するバックグラウンドロードの量に関係なく、滑らかな再生を可能にします。また、CPUとメモリを占有する重いアプリケーションを明示的に使用して負荷をかけようとすると、音声が途切れることはありませんが、Wi-Fi 再関連付けするだけでは常に途切れ生じます。また、Android 2.1で
多かれ少なかれ正常に再生されました-Vi0

powersave cpufreqガバナーを強制しても、音楽は同じように再生されます(この場合、CPUの非適切な負荷は約20%です)。どのリソースが不足する可能性がありますか?
Vi0

あなたの追加コメントから私が読むことができるものから:なし。また、X10のオーディオ再生に一般的な問題があることも聞いたことがありません。
フロー

Android 2.3へのアップデート後も含まれますか?
Vi0

回答:


0

電話のリソースを大量に使用するアプリケーションやハードウェアをオフにしてみてください。GPS、WIFI、ネットワークサービスをオフにし、バックライトを暗くします。また、音楽の再生に必要なアプリケーション以外の実行中のアプリケーションをすべてシャットダウンします。それでも問題が解決しない場合は、デバイスに十分なメモリがない可能性があります。


バグの解決策/回避策ではなく、一般的なアドバイスのように見えます。さまざまなモードを試しました(問題の説明)。OOMキラーは、バグをトリガーするものの1つにすぎません。
Vi0

0

Audio Bufferサイズを増やします。

私はそのDSPパックでPlayerPro音楽プレーヤーを使用します。DSPパックを使用すると、オーディオバッファーサイズを調整できます。この機能を使用する必要はありませんでしたが、役立つでしょう。

この機能をサポートする他の音楽プレーヤーを見つけることもできます。キーはAudio Bufferです。

または、音楽の品質とシステムの負荷を減らすこともできます。


少なくともMixzingプレーヤーで最大バッファサイズを設定しても効果はありません。
Vi0

1
「音楽の品質とシステムの負荷を軽減する」->回避策。修正ではありません。私はすでにハックした回避策を持っています(「アップデート」を参照)
Vi0
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.