Android MediaCodec,是否可以获得原始双倍大小的解码数据?

时间:2014-02-19 04:53:50

标签: java android encoding decoding mediacodec

我正在测试

MIC

- > AudioRecord(原始PCM)

- > MediaCodec编码器(原始AAC)

- > UDP

- > MediaCodec解码器(原始PCM)

- >扬声器

目前,解码器进程已成功完成,至少没有错误。

然而,rawPCM的Byte []大小作为每个解码周期的输出大约是编码周期输入的两倍。

D / AudioRecoder: 4096 字节读取

D / AudioEncoder:360字节编码

D / UDP接收器:已收到!!来自/// 127.0.0.1:39000

D / UDP接收器:收到360个字节

D / AudioDecoder: 8192 字节已解码

显然,我预计rawPCM大小与原始大小相匹配,并且感觉不对。

这个问题与我以前的问题有关,代码也在那里。

PCM -> AAC (Encoder) -> PCM(Decoder) in real-time with correct optimization

到目前为止,我还没有完成这个解码后的字节来播放扬声器。

有什么想法?感谢。


更新:

我尝试使用扬声器,实际上,略微工作,所以解码过程至少有效。

略微意味着,延迟约为10秒,音质非常糟糕。我在Genymotion模拟器上测试它,并且不知道这种模拟器如何影响它。

1 个答案:

答案 0 :(得分:3)

听起来你正在捕捉单声道,对其进行编码,然后解码器将其输出为立体声流,单声道通道在左右声道中重复。

确保在MediaCodec.dequeueOutputBuffer()返回MediaCodec.INFO_OUTPUT_FORMAT_CHANGED时,您致电MediaCodec.getOutputFormat()以获取当前格式。