在我的印象里面是H264的流是没有帧率信息的,在用Elecard StreamEye或者是VLC分析H264的视频流的时候,偶尔可以看到帧率信息,有点迷糊,之前有看sps和ssp的相关信息,一直都没有发现,今天仔细研究了一下,和大家分享一下:
在H.264码流中一般没有帧率,主要是在SPS信息中VUI可以解析出timing_info_present_flag,若timing_info_present_flag等于1,则码流中有num_units_in_tick 和 time_scale,我们可以通过这两个值计算出帧率来;
framerate = time_scale/num_units_in_tick. (个人认为 framerate = time_scale/(2*num_units_in_tick))
如果在VUI中timing_info_present_flag 为0,这样就不能直接获取帧率信息了,也可以考虑在H264的容器或者流封装中得到帧率时间等信息;像DVB系统中或者是ts流中,其他格式的流都可以,因为需要把视频播放出来,肯定都有时间和速度控制的信息在里面的;可以在容器中或者协议里面找到帧率或者播放时间信息,可以获取到帧率;