繁体   English   中英

MediaCodec编码数据太大

[英]MediaCodec encode data too big

我使用MediaCodec对摄像机数据进行编码,当我在名为Vivo X5 Pro(android 5.0,API 21)的设备上使用它时,MediaCodec编码的数据大小大于90000,通常在其他设备上约为15000。更改媒体格式的参数,也无效。 我还发现,当我在Vivo X5 Pro(android 5.0,API 21)上使用MediaCodec.getOutputFormat()方法获取格式时,它具有7个数据,比其他正常情况多一个数据,它名为“ buffer-size”,其值为1048576,这会影响MediaCodec编码吗? 如何使用Vivo X5 Pro(android 5.0,API 21)编码常规数据大小? 谢谢帮忙!!!

    MediaCodec mEncoder = MediaCodec.createEncoderByType(MediaFormat.MIMETYPE_VIDEO_AVC);
    MediaFormat format = MediaFormat.createVideoFormat(MediaFormat.MIMETYPE_VIDEO_AVC, 320, 568);
    format.setInteger(MediaFormat.KEY_BIT_RATE, 320 * 568 * 2);
    format.setInteger(MediaFormat.KEY_FRAME_RATE, 20);
    format.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, 1);
    format.setInteger(MediaFormat.KEY_MAX_INPUT_SIZE, 320 * 568);

PS:但是,我更改了参数Vivo X5 Pro(android 5.0,API 21)编码的数据大小仍然大于90000。

确保以正确的单位(微秒)为输入帧传递正确的时间戳,否则编码器可以为每个帧分配太少/很多位-请参阅https://stackoverflow.com/a/20663056/3115956以获得更长的时间对此的解释。

您是否尝试过降低/提高比特率参数以查看其是否实际上改变了输出大小? 否则,编码器可能会因为不遵守该参数而被破坏。 (此外,第一个输出数据包的大小可能无法完全反映输出流的总平均比特率。因此,即使第一个帧可能太大,后面的帧也有可能弥补它。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM