從H264 H265碼流中獲取寬 高及幀率

2021-09-24 17:58:46 字數 1817 閱讀 1361

在做碼流分析時,影象解析度、幀率這類的基本資訊,當然不可少。本文介紹如何從nal中計算到影象寬、高,還有解析度。由於h264和h265有相似性,就在一起寫了。

一、從碼流獲得寬、高

1、h264

寬高可從sps欄位計算得到,公式如下:

width = (pic_width_in_mbs_minus1+1)*16;

height = (pic_height_in_map_units_minus1+1)*16;

但以上是針對寬高是16的整數倍的情況,當不是16整數倍時,frame_cropping_flag值為1,frame_mbs_only_flag為1,公式如下:

(也可以認為統一使用下面的公式)

width = ((pic_width_in_mbs_minus1 +1)*16) - frame_crop_left_offset*2 - frame_crop_right_offset*2;

height= ((2 - frame_mbs_only_flag)* (pic_height_in_map_units_minus1 +1) * 16) - (frame_crop_top_offset * 2) - (frame_crop_bottom_offset * 2);

根據第二個公式

width = (119+1) * 16 - 0*2 - 0*2 = 1920

height = (2-1) * (67+1)*16 - 0*2 - 4*2 = 1088 - 8 = 1080

// 寬高計算公式

width  = (sps->pic_width_in_mbs_minus1+1) * 16;

height = (2 - sps->frame_mbs_only_flag)* (sps->pic_height_in_map_units_minus1 +1) * 16);

if(sps->frame_cropping_flag)

else if (1 == sps->chroma_format_idc) // 4:2:0

else if (2 == sps->chroma_format_idc) // 4:2:2

else // 3 == sps.chroma_format_idc   // 4:4:4

width  -= crop_unit_x * (sps->frame_crop_left_offset + sps->frame_crop_right_offset);

height -= crop_unit_y * (sps->frame_crop_top_offset  + sps->frame_crop_bottom_offset);

}2、h265

h.265類似,但sps的字段不同了。公式如下:

width  = sps->pic_width_in_luma_samples;

height = sps->pic_height_in_luma_samples;

當視窗有裁剪時(conformance_window_flag為1),計算如下:

三、幀率

h264和h265幀率計算公式相同,如下:

max_framerate = (float)(sps->vui.vui_time_scale) / (float)(sps->vui.vui_num_units_in_tick);

使用x264編碼yuv序列,設定為25fps時,time_scale為50,num_units_in_tick為1,計算得50fps,與實際不符。而x265用同樣的引數編碼,計算得到的幀率是正常的。

網上有說法,當nuit_field_based_flag為1時,要再除以2。另外說x264將該值設定為0,所以得到的值不是實際值。參見:

原文: 

從H264 H265碼流中獲取寬 高及幀率

在做碼流分析時,影象解析度 幀率這類的基本資訊,當然不可少。本文介紹如何從nal中計算到影象寬 高,還有解析度。於是h264和h265有相似性,就在一起寫了。寬高可從sps欄位計算得到,公式如下 width pic width in mbs minus1 1 16 height pic height...

從H264 H265碼流中獲取寬 高及幀率

在做碼流分析時,影象解析度 幀率這類的基本資訊,當然不可少。本文介紹如何從nal中計算到影象寬 高,還有解析度。於是h264和h265有相似性,就在一起寫了。一 從碼流獲得寬 高 1 h264 寬高可從sps欄位計算得到,公式如下 width pic width in mbs minus1 1 16...

開源工程 之裸碼流提取工具 H264 H265

序 工程中常常需要分析一些碼流,但碼流檔案過大的話,不利於分析具體的幀資料,由此編寫了碼流提取軟體。此工具是在業餘時間完成,很多功能尚待完善,如果茫茫中,你發現了此工具,也感興趣研究,希望你將工具改進之後開源出來,方便你 我以及大家 2 軟體截圖 1.碼流拖曳到軟體中顯示如下 2.在某幀上右擊儲存裸...