2011-09-13 15 views
2

AudioTrackに余分なスレッドを使用して、以前に別のアクティビティで録画したウェーブファイルを再生しています。Android AudioTrackは、最初の2秒だけ再生してから停止します。

私が再生を開始すると、私はLogCatで次の出力を得る:

09-13 09:13:13.207: WARN/Archive(1066): audioplayThread is running..., state is: READY 
09-13 09:13:21.187: WARN/Archive(1066): wave file /mnt/sdcard/myrecording/myrecording_3_12-09-2011_14-14.wav 
09-13 09:13:22.582: WARN/Archive(1066): audioPlayer bufferSize 4090 
09-13 09:13:22.582: WARN/Archive(1066): audioPlayer wave length 206432 
09-13 09:13:22.601: DEBUG/AudioHardware(75): AudioHardware pcm playback is exiting standby. 
09-13 09:13:22.601: DEBUG/AudioHardware(75): openPcmOut_l() mPcmOpenCnt: 0 
09-13 09:13:22.683: WARN/AudioFlinger(75): write blocked for 82 msecs, 1 delayed writes, thread 0xcb08 
09-13 09:13:24.816: WARN/Archive(1066): playbackHeadposition is: 49591 
09-13 09:13:24.816: WARN/Archive(1066): audiostate is: 3 
09-13 09:13:26.089: WARN/AudioTrack(1066): obtainBuffer() track 0x298b18 disabled, restarting 
09-13 09:13:27.214: WARN/AudioTrack(1066): obtainBuffer() track 0x298b18 disabled, restarting 
09-13 09:13:28.332: WARN/AudioTrack(1066): obtainBuffer() track 0x298b18 disabled, restarting 
09-13 09:13:29.457: WARN/AudioTrack(1066): obtainBuffer() track 0x298b18 disabled, restarting 

... 
+0

質問はしていません。 – Karu

+0

詳細情報が必要です。あなたのAudioTrackは、STREAMまたはSTATICのどのモードで再生するように設定されていますか?それがSTREAMの場合、より多くのデータを書き込んでいるスレッドがありますか?全体的なサウンドデータの量はどれくらいですか? – fluffy

答えて

3

私はlogcatを見た:obtainBuffer()トラック0x298b18無効、再起動... 言うことです:あなたが持っていませんオーディオデータと入力オーディオストリームは停止しています。バッファはオーディオストリームを待つ必要があります。私は入力ストリームと読み込みメソッドを確認する必要があると思います。オーディオデータを連続して読み取っていることを確認する必要があります。

+1

ご返信ありがとうございます。私は最終的に、AudioTrackを使用しないことを選択しました。以前のAudioTrackコードは機能していませんでした。 AudioTrackクラスがそれほど信頼できるものではないという気持ちが私に残されました。最後に、オーディオ再生用にMediaPlayerを使いました。たぶん、少しオーバーヘッドがありますが、信頼性があります。 – felix

+3

私はその信頼性が低いとは言いませんが、AudioTrackでもっと注意を払わなければなりません。 – HannahMitt

+0

AudioTrackは心がかすかなものではありません。それはあなたに経験しているエラーの結果、それにバイトフィードをファッジするのは非常に簡単です。私はまだこの問題の解決法を見つけ出していません。 –

0

以前は同じ問題がありました。私はAndroidのMedia Playerに対応したビタミオバンドルを使用し、より多くのオーディオをサポートしています。

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

このコードをマニフェストに追加してみてください。

0

書き込まれたサンプルの数がチャンネルの数で割り切れない場合、私は同じ問題を観察しました。例えば

:チャネルの

番号:2

mAudioTrack.write(バッファ、0、75);

関連する問題