MPEG4码流的帧率计算

本文介绍了MPEG4标准中帧率的确定方法,包括VOL头中的Vop_time_increment_resolution与VOP头中的Vop_time_increment的作用,以及fixed_vop_rate和Fixed_vop_time_increment的含义,并给出了实际应用中的问题及解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MPEG4标准协议中。

VOL头中的Vop_time_increment_resolution和VOP头中的Vop_time_increment,一起确定了码流所采用的帧率。

VOL头中的Vop_time_increment_resolution,指示了vop_time_increment 的时间分辨率。它的值实际上就表示了1 秒被分成多少间隔。

VOP头中的Vop_time_increment,单位为vol 中定义的1/vop_time_increment_resolution 秒,它给出当前vop 的以modulo_time_base 为基准的精确时间。它的取值范围为[0,vop_time_increment_resolution]。

简单计算,码流的实时帧率应该等于Vop_time_increment_resolution/(每个Vop_time_increment的差值)。


VOL中的fixed_vop_rate,表示所有VOP是否采用固定的帧率编码。只有当任意两个连续的vop 显示间隔是常数时,它才被设置为1。

Fixed_vop_time_increment:这个码字描述了显示序列中两个vop 之间的时间长度,单位由vop_time_increment_resolution 决定, 等于它的倒数。

在这种情况下,码流的固定帧率由vop_time_increment_resolution/fixed_vop_time_increment给出。


对于VOP中的modulo_time_base,它由一个0 和后面紧跟着的若干个1 组成,每个1 表示1秒。每过1s,0后面多1个1。

GOV头中的时间显示以此为基准。


以下是标准中的例子。


存在VLC接收码流时,帧率显示与实际帧率不一致的情况。

使用ElecardStreamEye分析帧率30的码流,使用VLC接收却是60或30000。

应该是因为VLC在解码时,只关心vop_time_increment_resolution的值,而没有关心vop_time_increment的值。


在实际应用中还存在这样的问题:

设置的帧率是25帧,GOV中的时间也是按照25帧1秒来计算。

但vop_time_increment_resolution和vop_time_increment的增量分别是60和2,等于是30帧,实际码率也是按照30帧来控制。

这样需要从编码入手进行修改。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值