У меня есть система декодирования аудио MP3 с MediaExtractor
, конвертирующая ее с MediaCodec
и играя ее с AudioTrack
. На большинстве устройств он работает нормально, но на Samsung Galaxy S3 и Samsung Galaxy Tab некоторые пользователи сообщают о чрезвычайно медленном воспроизведении звука. Я не могу воспроизвести его на эмуляторе или на физических устройствах.Android AudioTrack очень медленный на некоторых устройствах
ответ
После многих неприятностей выяснилось, что вопрос был с моим использованием MediaFormat
. На некоторых устройствах MediaFormat, возвращаемый MediaCodec
, не совпадает с возвращаемым MediaExtractor
. Частота кадров и т. Д. Может измениться. Вместо создания экземпляра AudioTrack
с MediaFormat, возвращаемого MediaExtractor, необходимо было подождать, пока не начнется декодирование. В этот момент MediaCodec.dequeueOutputBuffer()
вернет MediaCodec.INFO_OUTPUT_FORMAT_CHANGED
. Затем можно использовать MediaCodec.getOutputFormat()
, чтобы вернуть правильный MediaFormat для инициализации AudioTrack. Надеюсь, это поможет кому-то.
Можете ли вы вставить пример «раннего» и «позднего» MediaFormats в ответ? Мне любопытно, в чем разница. – fadden
На самом деле у меня нет поврежденного устройства, поэтому я не знаю деталей. Поскольку голос был медленным, он должен быть более быстрым битрейтом, монофоническим или, возможно, большим количеством бит на выборку. Однако несколько человек сообщили, что воспроизведение происходит слишком быстро. Я отправлю сюда, когда узнаю, что с этим происходит. – Tad
@fadden: Я видел, как некоторые декодеры AAC декодируют моно входные данные в стерео по крайней мере. (Это обычное явление со многими декодерами при фактических данных HE-AACv1, но в моем случае это произошло либо с простым AAC-LC, либо с AAC-LD). – mstorsjo
http://stackoverflow.com/questions/30788496/android-audio-too-fast-on-some-devices-with-mediacodec-and-audiotrack является продолжением этой проблемы? – fadden
Это связанная, но другая проблема. Это относится к решению аппаратного обеспечения, которое делает правильные вещи - это относится к аппаратным средствам, которые делают неправильную вещь. – Tad