从RTSP的DESCRIBE返回的SDP中计算帧率

DESCRIBE返回SDP信息后, 可通过如下途径获取帧率:

  • 通过frameratex-framerate
从RTSP的DESCRIBE返回的SDP中计算帧率_第1张图片
Paste_Image.png
  • 利用SDP的SPS中计算帧率

SDP信息实例如下:

从RTSP的DESCRIBE返回的SDP中计算帧率_第2张图片
Paste_Image.png

从SDP中的SPS中可能能获取到视频的帧率,但不是每种设备或摄像头能正常返回相关的信息,比如海康的有些摄像头可以获取到帧率.

能获取帧率必须有两个前提:

vui_parameters_present_flag=1
timing_info_present_flag=1

然后帧率的计算公式为:

framerate = time_scale/(num_units_in_tick*2)

从上图中可计算出帧率为:
framerate = 50000/(1000*2) = 25

实例代码:

...
if (vui_parameters_present_flag)
{
    ...     
    bool timing_info_present_flag = u(1,buf,StartBit);
    if (timing_info_present_flag) 
    {
        num_units_in_tick = u(32,buf,StartBit);
        time_scale = u(32,buf,StartBit);
        iFps = time_scale/(2*num_units_in_tick);
    }

你可能感兴趣的:(从RTSP的DESCRIBE返回的SDP中计算帧率)