在做碼流分析時,影象解析度、幀率這類的基本資訊,當然不可少。本文介紹如何從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.在某幀上右擊儲存裸...