【发布时间】:2017-07-18 13:24:45
【问题描述】:
我需要实现H264编码并配置MediaCodec如下
MediaCodec codec = MediaCodec.createEncoderByType("video/avc");
MediaFormat mediaFormat = MediaFormat.createVideoFormat("video/avc", resolution.getWidth(), resolution.getHeight());
mediaFormat.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, 1);
mediaFormat.setInteger(MediaFormat.KEY_BIT_RATE, 1000000);
mediaFormat.setInteger(MediaFormat.KEY_FRAME_RATE,30);
codec.configure(mediaFormat, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE);
比特率设置为 1000000,这是由网络限制定义的要求。当我在三星 Galaxy J7 上进行测试时,我看到 1000 kbps 的输出与预期的一样。但是当我在三星 Galaxy Grand 2 Duos (android 4.4) 或华为 Nexus 6P (android 7.1.2) 等特定设备上测试相同的代码时,我看到编码器每秒产生高达 5 兆字节的输出,这意味着编解码器完全忽略每秒 1000000 位的指定值。它出什么问题了?有没有办法强制编码器使用这个指定的值?
【问题讨论】: