【问题标题】:Android MediaCodec, is it ok to have decoded data of double size of the original?Android MediaCodec,可以解码原始两倍大小的数据吗?
【发布时间】:2014-03-19 05:53:56
【问题描述】:

我正在测试

麦克风

-> 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模拟器上测试过,不知道这种模拟器对这个有什么影响。

【问题讨论】:

    标签: java android encoding decoding android-mediacodec


    【解决方案1】:

    这听起来像是您正在捕获单声道,对其进行编码,然后解码器将其输出为立体声流,单声道通道在左右声道之间复制。

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

    【讨论】:

    • 我正在尝试解决同样的问题,是的,当我在解码器的MediaCodec.INFO_OUTPUT_FORMAT_CHANGED 上调用MediaCodec.getOutputFormat() 时,原始输入中有2 个通道而不是1 个。跨度>
    猜你喜欢
    • 2014-02-06
    • 1970-01-01
    • 2016-05-27
    • 2013-09-18
    • 2021-07-11
    • 1970-01-01
    • 2016-08-04
    • 1970-01-01
    • 2017-12-16
    相关资源
    最近更新 更多