在FFmpeg for Android中解码AAC

时间:2012-10-11 23:38:32

标签: android ffmpeg decoding aac

我正在尝试使用AAC解码Android设备上的M4A文件。

我使用以下代码初始化编解码器。

codec = avcodec_find_decoder(CODEC_ID_AAC);
c= avcodec_alloc_context();
avcodec_open(c, codec);

然而,当我稍后尝试使用以下方法解码帧时

len = avcodec_decode_audio3(c, (short *)mOutbuf, &out_size, &avpkt);

我在日志中得到-1(表示错误)和以下内容。

10-11 16:30:01.115: INFO/M4ADecoder(5260): channel element 0.0 is not allocated
10-11 16:30:02.195: INFO/M4ADecoder(5260): channel element 2.0 is not allocated
10-11 16:30:03.295: INFO/M4ADecoder(5260): channel element 0.6 is not allocated
10-11 16:30:07.645: INFO/M4ADecoder(5260): Sample rate index in program config element does not match the sample rate index configured by the container.
10-11 16:30:07.655: INFO/M4ADecoder(5260): Number of bands (3) exceeds limit (2).

设置编解码器时是否还需要执行其他步骤?在将数据发送到AAC解码器之前,是否需要预先解析文件?

同样的文件可以在Mac OSX上使用最新的ffmpeg代码(即ffmpeg -i filename.m4a“)。

1 个答案:

答案 0 :(得分:1)

Android手机上的命令行exec工作正常(ffmpeg m4a到flac)

http://pastebin.com/3ZH3HQKc

上面是在GNexus上运行的Android 4.1.1上的ffmpeg的stdout ...

ffmpeg转换的详细信息(m4a / aac到flac / flac):

使用ffmpeg可执行文件而不是调用libavcodec的c程序