OMX.google.aac.encoder не работает в MediaCodec при кодировании pcm в aac
Я кодирую дорожку wcm pcm файла в 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, и второй кодировщик работает.
Кстати, я добавил заголовок объявления в поток aac.
1 ответ
На моем Nexus 5 MediaCodec.createByCodecName() никогда не работает при передаче имен кодировщиков (как указано в MediaCodecList).
Кодеры AAC на моем Nexus 5 (4.4.4):
имя: OMX.google.aac.encoder типы: [audio/mp4a-latm]
имя: AACEncoder типы: [audio/mp4a-latm]
Это работает однако:
MediaCodec.createEncoderByType("audio/mp4a-latm");
Примечание: любопытно, что при вызове этого метода журналы показывают:
A component of name 'OMX.qcom.audio.decoder.aac' already exists, ignoring this one.
что-то странное.
Так что, если это не работает для вас, то, вероятно, это в вашей реализации кодера, а не создания MediaCodec.