2015-06-08 6 views
1

У меня есть система декодирования аудио MP3 с MediaExtractor, конвертирующая ее с MediaCodec и играя ее с AudioTrack. На большинстве устройств он работает нормально, но на Samsung Galaxy S3 и Samsung Galaxy Tab некоторые пользователи сообщают о чрезвычайно медленном воспроизведении звука. Я не могу воспроизвести его на эмуляторе или на физических устройствах.Android AudioTrack очень медленный на некоторых устройствах

+0

http://stackoverflow.com/questions/30788496/android-audio-too-fast-on-some-devices-with-mediacodec-and-audiotrack является продолжением этой проблемы? – fadden

+0

Это связанная, но другая проблема. Это относится к решению аппаратного обеспечения, которое делает правильные вещи - это относится к аппаратным средствам, которые делают неправильную вещь. – Tad

ответ

2

После многих неприятностей выяснилось, что вопрос был с моим использованием MediaFormat. На некоторых устройствах MediaFormat, возвращаемый MediaCodec, не совпадает с возвращаемым MediaExtractor. Частота кадров и т. Д. Может измениться. Вместо создания экземпляра AudioTrack с MediaFormat, возвращаемого MediaExtractor, необходимо было подождать, пока не начнется декодирование. В этот момент MediaCodec.dequeueOutputBuffer() вернет MediaCodec.INFO_OUTPUT_FORMAT_CHANGED. Затем можно использовать MediaCodec.getOutputFormat(), чтобы вернуть правильный MediaFormat для инициализации AudioTrack. Надеюсь, это поможет кому-то.

+1

Можете ли вы вставить пример «раннего» и «позднего» MediaFormats в ответ? Мне любопытно, в чем разница. – fadden

+0

На самом деле у меня нет поврежденного устройства, поэтому я не знаю деталей. Поскольку голос был медленным, он должен быть более быстрым битрейтом, монофоническим или, возможно, большим количеством бит на выборку. Однако несколько человек сообщили, что воспроизведение происходит слишком быстро. Я отправлю сюда, когда узнаю, что с этим происходит. – Tad

+0

@fadden: Я видел, как некоторые декодеры AAC декодируют моно входные данные в стерео по крайней мере. (Это обычное явление со многими декодерами при фактических данных HE-AACv1, но в моем случае это произошло либо с простым AAC-LC, либо с AAC-LD). – mstorsjo

 Смежные вопросы

  • Нет связанных вопросов^_^