如何使用KEY_I_FRAME_INTERVAL参数在MediaCodec中配置特定的GOP大小?

时间:2014-03-06 19:51:30

标签: android frame mediacodec

我的问题是下一个:我知道MediaFormat.KEY_I_FRAME_INTERVAL是I帧将出现的以秒为单位的间隔(整数)。

因此,如果我将值赋予1,并且我的帧速率为15,则GOP大小将为15,如果帧速率为30,则GOP大小将为30。

因此,在参数MediaFormat.KEY_I_FRAME_INTERVAL是一个整数的情况下(不能使用30的帧速率将值0.5赋予gopsize 15帧),是否有任何解决方案将其配置为特定的GOP大小?

1 个答案:

答案 0 :(得分:2)

正如您在问题中所述,每个KEY_I_FRAME_INTERVAL * KEY_FRAME_RATE帧都会显示关键帧。因此,如果您希望GOP大小为15,请指定间隔为1,帧速率为15,然后以30fps发送视频。

这引出了一个问题:帧速率对编解码器满足比特率目标的能力有何影响?我知道有些设备会根据presentation time stamps而不是固定的每秒帧数来调整质量,这样可以让一切都运行得很好。然而,似乎并非所有设备都以这种方式工作。

不幸的是,MediaCodec没有提供更灵活的方式来指定GOP大小。