将pcm编码为aac时,OMX.google.aac.encoder在MediaCodec中不起作用

时间:2013-12-25 03:09:35

标签: android audio aac mediacodec

我正在使用Android 4.1上的MediaCodec将wcm文件的pcm轨道编码到aac中,在我的S3上,有两个编码器,OMX.google.aac.encoder和OMX.SEC.aac.enc,第一个用于if调用createEncoderByType,但它不起作用,输出无法播放(没有声音),如果使用“OMX.SEC.aac.enc”调用createByCodecName,则可以正常工作。在我的HTC ONE上,只有“OMX.google.aac.encoder”,但不起作用。我认为我的代码没有问题,因为它是从谷歌复制的,第二个编码器可以工作。

BTW,我在adac流中添加了adts标题。

1 个答案:

答案 0 :(得分:0)

在我的Nexus 5上,MediaCodec.createByCodecName()在传递编码器名称时似乎不起作用(由MediaCodecList指定)。

我的Nexus 5上的AAC编码器(4.4.4):

名称:OMX.google.aac.encoder 类型:[audio / mp4a-latm]

name:AACEncoder 类型:[audio / mp4a-latm]

但这有效:

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

注意:奇怪的是,当调用此方法时,日志会显示:

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

这有点奇怪。

因此,如果这对你不起作用,那么可能是你的编码器实现而不是MediaCodec的创建。