![](/img/trans.png)
[英]MediaCodec: MediaFormat setting KEY_I_FRAME_INTERVAL value is ignored
[英]MediaCodec: MediaFormat KEY_I_FRAME_INTERVAL not working for H264codec
我将MediaFormat.KEY_I_FRAME_INTERVAL值设置为1(在给定代码下方),但是它不会每秒生成关键帧,而是每66秒生成一次。 我正在使用Libstreaming库。 谁能帮忙为什么不起作用?
mMediaCodec = MediaCodec.createByCodecName(debugger.getEncoderName());
MediaFormat mediaFormat =MediaFormat.createVideoFormat("video/avc",
640,480);
mediaFormat.setInteger(MediaFormat.KEY_BIT_RATE, 1000000);
mediaFormat.setInteger(MediaFormat.KEY_FRAME_RATE, 15);
mediaFormat.setInteger(MediaFormat.KEY_COLOR_FORMAT,
debugger.getEncoderColorFormat());
mediaFormat.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL, 1); //here
mMediaCodec.configure(mediaFormat, null, null,
MediaCodec.CONFIGURE_FLAG_ENCODE);
mMediaCodec.start();
您确定输入缓冲区的时间戳以正确的单位(微秒)为单位,并且平均每秒进给15帧吗? 错误单位中的时间戳可能是最常见的原因。 这也将导致输出流的比特率偏离您的要求。
如果将MediaFormat.KEY_I_FRAME_INTERVAL
提高到2,而不是1,关键帧间隔是否从66提高到132秒? 那将指示一个单位错误。 如果它完全不响应,则表明编码器根本不接受该参数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.