從RTSP的DESCRIBE返回的SDP中計算視訊寬和高

weixin_34208283發表於2016-08-12

以下限於H264.

  • SDP中計算寬高用到的引數


    1720840-15ee96ffe2f2bfb7.png
    DESCRIBE成功後返回sdp資訊中的SPS資訊區域性
  • 計算公式

// 計算寬和高 簡易公式
Width  = (pic_width_in_mbs_minus1        + 1) * 16;
Height = (pic_height_in_map_units_minus1 + 1) * 16;
Width  -= (frame_crop_left_offset + frame_crop_right_offset) * 2;
Height -= (frame_crop_top_offset  + frame_crop_bottom_offset) * 2;

更詳細複雜的可參見: http://ju.outofmemory.cn/entry/208773

  • 計算例項
Width  = (119 + 1) * 16 - (0 + 0) * 2 = 1920
Height = (67  + 1) * 16 - (0 + 4) * 2 = 1088 - 8 = 1080
  • 程式碼例項
        Width  = (pic_width_in_mbs_minus1        + 1) * 16;
        Height = (pic_height_in_map_units_minus1 + 1) * 16;

        int frame_mbs_only_flag;
        int frame_cropping_flag, frame_crop_left_offset, frame_crop_right_offset;
        int frame_crop_top_offset, frame_crop_bottom_offset;

        ...

        frame_cropping_flag = u(1,buf,StartBit);
        if (frame_cropping_flag)
        {
            frame_crop_left_offset   = ...;
            frame_crop_right_offset  = ...;
            frame_crop_top_offset    = ...;
            frame_crop_bottom_offset = ...;

            Width  -= (frame_crop_left_offset + frame_crop_right_offset) << 0x1;
            Height -= (frame_crop_top_offset  + frame_crop_bottom_offset) << 0x1;
        }

References:
http://ju.outofmemory.cn/entry/208773
http://www.latelee.org/my-study/get-width-height-framerate-from-bitstream.html

相關文章