2013-12-25 4 views
0

Я кодирую pcm-трек wav-файла в aac, используя MediaCodec на Android 4.1, на моем S3 есть два кодера, OMX.google.aac .encoder и OMX.SEC.aac.enc, первый используется, если вызывает createEncoderByType, но он не работает, выход не может быть воспроизведен (не имеет звука), если вызывает createByCodecName с «OMX.SEC.aac. enc ", он работает. Хотя на моем HTC ONE есть только «OMX.google.aac.encoder» и не работает. Я думаю, что у моего кода нет проблем, потому что он был скопирован из Google, а второй кодер работает.OMX.google.aac.encoder не работает в MediaCodec при кодировании pcm в aac

BTW, я добавил заголовок adts в поток aac.

ответ

0

На моем Nexus 5 MediaCodec.createByCodecName() никогда не работает при передаче имен кодеров (как указано в MediaCodecList).

ААС энкодеры на моем Nexus 5 (4.4.4):

имя: типы OMX.google.aac.encoder : [аудио/mp4a-latm]

Имя: AACEncoder типы: [аудио/mp4a-latm]

Это работает, однако:

MediaCodec.createEncoderByType("audio/mp4a-latm"); 

Примечание: любопытно, что при вызове этого метода журналы показывают:

A component of name 'OMX.qcom.audio.decoder.aac' already exists, ignoring this one. 

, который является нечетным.

Так что, если это не работает для вас, то это, вероятно, в вашей реализации кодера, а не в создании MediaCodec.