Android AudioTrack очень медленный на некоторых устройствах
У меня есть система декодирования аудио MP3 с MediaExtractor
, преобразовав это с MediaCodec
и играть с AudioTrack
, На большинстве устройств это работает нормально, но на Samsung Galaxy S3 и Samsung Galaxy Tab некоторые пользователи сообщают о крайне медленном воспроизведении звука. Я не могу воспроизвести его на эмуляторе или физических устройствах.
1 ответ
Оказывается, после многих неприятностей проблема была с моим использованием MediaFormat
, На некоторых устройствах MediaFormat возвращается MediaCodec
не совпадает с тем, который возвратил MediaExtractor
, Частота кадров и т. Д. Может изменяться. Вместо того, чтобы создавать AudioTrack
с MediaFormat, возвращенным MediaExtractor, необходимо было дождаться начала декодирования. В таком случае, MediaCodec.dequeueOutputBuffer()
вернусь MediaCodec.INFO_OUTPUT_FORMAT_CHANGED
, MediaCodec.getOutputFormat()
затем можно использовать возврат правильного MediaFormat, с помощью которого можно инициализировать AudioTrack. Надеюсь, это кому-нибудь поможет.