Android AudioTrack воспроизводит только первые 2 секунды назад, затем останавливается - PullRequest
2 голосов
/ 13 сентября 2011

Я использую дополнительный поток для AudioTrack для воспроизведения волнового файла, который я ранее записал в другом действии.

Когда я запускаю воспроизведение, я получаю следующий вывод в 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

...

Ответы [ 3 ]

3 голосов
/ 29 ноября 2011

Я только что увидел logcat: receiveBuffer () track 0x298b18 отключен, перезапуск .. то есть: у вас нет аудиоданных, и входной аудиопоток остановлен. Поэтому буфер должен ждать поступления аудиопотока. Я думаю, что вы должны проверить входной поток и метод чтения. Вы должны убедиться, что прочитали аудиоданные непрерывно.

0 голосов
/ 29 декабря 2016

Я наблюдал ту же проблему, когда количество записанных выборок не делится на количество каналов.

Например:

количество каналов: 2

mAudioTrack.write (буфер, 0, 75);

0 голосов
/ 30 июня 2014

У меня была такая же проблема раньше. Я использовал пакет vitamio, который является аналогом Android-плеера и имеет больше аудио поддержки. Попробуйте добавить этот код в манифест:

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

Надеюсь, это помогло.

...