2014-02-19 100 views
2

我测试Android MediaCodec,可以解码原始双倍大小的数据吗?

麦克风

- > AudioRecord(原始PCM)

- > MediaCodec编码器(原始AAC)

- > UDP

- > MediaCodec解码器(原始PCM)

- >扬声器

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

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

d/AudioRecoder:字节读

d/AudioEncoder:360个字节编码

d/UDP接收机:接收!!从///127.0.0.1:39000

d/UDP接收机:360个字节接收

d/AudioDecoder:字节解码

显然,我期望的rawPCM大小匹配于原始一个,并感觉错了。

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

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

到目前为止,我还没有做这个解码字节用扬声器播放。

有没有想法?谢谢。


UPDATE:

我试着用扬声器播放,而实际上,它略有工作,所以在解码过程的工作最少。

略微表示等待时间约为10秒,音质很差。我在Genymotion仿真器上测试了这个,不知道这种仿真器是如何影响这个的。

回答

4

这听起来像是在捕捉单声道,编码它,然后解码器将其作为立体声流输出,并将单声道通道复制到左右声道。

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

+0

我试图解决同样的问题,是的,当我在解码器的MediaCodec上调用'MediaCodec.getOutputFormat()'时。INFO_OUTPUT_FORMAT_CHANGED',原始输入中有2个通道,而不是1个。 – Gensoukyou1337

相关问题