Inspecting H.264 Headers: Difference between revisions

From RidgeRun Developer Wiki
(Created page with '= Introduction = The [http://mpeg4ip.sourceforge.net MPEG4IP] project has a nice tool you can use to extract the H264 headers. = Removing file container = If the H.264 video i...')
 
 
Line 36: Line 36:


<pre>
<pre>
 
h264_parse - mpeg4ip version 1.6
Nal length 6 start code 4 bytes
ref 0 type 9 Access unit delimeter
  primary_pic_type: 0
Nal length 47 start code 4 bytes
ref 1 type 7 Sequence parameter set
  profile: 77
  constaint_set0_flag: 0
  constaint_set1_flag: 1
  constaint_set2_flag: 0
  constaint_set3_flag: 0
  level_idc: 30
  seq parameter set id: 0
  log2_max_frame_num_minus4: 0
  pic_order_cnt_type: 0
    log2_max_pic_order_cnt_lsb_minus4: 0
  num_ref_frames: 2
  gaps_in_frame_num_value_allowed_flag: 0
  pic_width_in_mbs_minus1: 44 (720)
  pic_height_in_map_minus1: 14
  frame_mbs_only_flag: 0
    derived height: 480
    mb_adaptive_frame_field_flag: 0
  direct_8x8_inference_flag: 1
  frame_cropping_flag: 0
  vui_parameters_present_flag: 1
    aspect_ratio_info_present_flag: 1
    aspect_ratio_idc:3
    overscan_info_present_flag: 0
    video_signal_info_present_flag: 0
    chroma_loc_info_present_flag: 0
    timing_info_present_flag: 1
    num_units_in_tick: 1001
    time_scale: 60000
    fixed_frame_scale: 1
    nal_hrd_parameters_present_flag: 1
    cpb_cnt_minus1: 0
    bit_rate_scale: 0
    cpb_size_scale: 1
      bit_rate_value_minus1[0]: 109374
      cpb_size_value_minus1[0]: 109374
      cbr_flag[0]: 0
    initial_cpb_removal_delay_length_minus1: 15
    cpb_removal_delay_length_minus1: 23
    dpb_output_delay_length_minus1: 23
    time_offset_length: 0
    vcl_hrd_parameters_present_flag: 1
    cpb_cnt_minus1: 0
    bit_rate_scale: 0
    cpb_size_scale: 1
      bit_rate_value_minus1[0]: 109374
      cpb_size_value_minus1[0]: 109374
      cbr_flag[0]: 0
    initial_cpb_removal_delay_length_minus1: 15
    cpb_removal_delay_length_minus1: 23
    dpb_output_delay_length_minus1: 23
    time_offset_length: 0
    low_delay_hrd_flag: 0
    pic_struct_present_flag: 1
Nal length 9 start code 4 bytes
ref 1 type 8 Picture parameter set
  pic_parameter_set_id: 0
  seq_parameter_set_id: 0
  entropy_coding_mode_flag: 1
  pic_order_present_flag: 0
  num_slice_groups_minus1: 0
  num_ref_idx_l0_active_minus1: 1
  num_ref_idx_l1_active_minus1: 1
  weighted_pred_flag: 0
  weighted_bipred_idc: 0
  pic_init_qp_minus26: 19
  pic_init_qs_minus26: 0
  chroma_qp_index_offset: 0
  deblocking_filter_control_present_flag: 1
  constrained_intra_pred_flag: 0
  redundant_pic_cnt_present_flag: 0
Nal length 26 start code 4 bytes
ref 0 type 6 SEI
  payload_type: 0 buffering_period
  payload_size: 9
    0xd7 0xe4 0x0 0x0 0x57 0xe4 0x0 0x0
    0x40
    seq_parameter_set_id: 0
    initial_cpb_removal_delay[0]: 45000
    initial_cpb_removal_delay_offset[0]: 0
    initial_cpb_removal_delay[0]: 45000
    initial_cpb_removal_delay_offset[0]: 0
  payload_type: 1 pic_timing
  payload_size: 7 0x0 0x0 0x0 0x0 0x0 0x6 0x14
    cpb_removal_delay: 0
    dpb_output_delay: 6
    pict_struct: 1
    clock_timestamp_flag[0]: 0
Nal length 48859 start code 4 bytes
ref 1 type 5 Coded slice of an IDR picture
  first_mb_in_slice: 0
  slice_type: 7 (I)
  pic_parameter_set_id: 0
  frame_num: 0 (4 bits)
  field_pic_flag: 1
    bottom_field_flag: 0
  idr_pic_id: 0
  pic_order_cnt_lsb: 0
Nal length 6 start code 4 bytes
ref 0 type 9 Access unit delimeter
  primary_pic_type: 1
Nal length 15 start code 4 bytes
ref 0 type 6 SEI
  payload_type: 1 pic_timing
  payload_size: 7 0x0 0x0 0x1 0x0 0x0 0x6 0x24
    cpb_removal_delay: 1
    dpb_output_delay: 6
    pict_struct: 2
    clock_timestamp_flag[0]: 0
Nal length 12257 start code 4 bytes
ref 1 type 1 Coded slice of non-IDR picture
  first_mb_in_slice: 0
  slice_type: 5 (P)
  pic_parameter_set_id: 0
  frame_num: 0 (4 bits)
  field_pic_flag: 1
    bottom_field_flag: 1
  pic_order_cnt_lsb: 1
Nal length 6 start code 4 bytes
ref 0 type 9 Access unit delimeter
  primary_pic_type: 1
Nal length 15 start code 4 bytes
ref 0 type 6 SEI
  payload_type: 1 pic_timing
  payload_size: 7 0x0 0x0 0x6 0x0 0x0 0x6 0x14
    cpb_removal_delay: 6
    dpb_output_delay: 6
    pict_struct: 1
    clock_timestamp_flag[0]: 0
Nal length 8015 start code 4 bytes
ref 1 type 1 Coded slice of non-IDR picture
  first_mb_in_slice: 0
  slice_type: 5 (P)
  pic_parameter_set_id: 0
  frame_num: 1 (4 bits)
  field_pic_flag: 1
    bottom_field_flag: 0
  pic_order_cnt_lsb: 6
Nal length 6 start code 4 bytes
ref 0 type 9 Access unit delimeter
  primary_pic_type: 1
Nal length 15 start code 4 bytes
ref 0 type 6 SEI
  payload_type: 1 pic_timing
  payload_size: 7 0x0 0x0 0x7 0x0 0x0 0x6 0x24
    cpb_removal_delay: 7
    dpb_output_delay: 6
    pict_struct: 2
    clock_timestamp_flag[0]: 0
...
..
.
</pre>
</pre>


[[Category: HowTo]]
[[Category: HowTo]]

Latest revision as of 15:25, 19 March 2014

Introduction

The MPEG4IP project has a nice tool you can use to extract the H264 headers.

Removing file container

If the H.264 video is in a Transport Stream container, you can use GStreamer to remove the TS wrapper:

INPUT_TS_FILE=video.m2t
OUTPUT_264_FILE=video.264

gst-launch filesrc location=$INPUT_TS_FILE  ! mpegtsdemux ! filesink location=$OUTPUT_264_FILE

If the H.264 video is in an MP4 container, you can use GStreamer to remove the MP4 wrapper:

INPUT_MP4_FILE=vido.mp4
OUTPUT_264_FILE=video.264

gst-launch filesrc location=$INPUT_MP4_FILE ! qtdemux ! h264parse output-format=1 ! filesink location=$OUTPUT_264_FILE

The GStreamer pipeline uses the h264parse element to convert the H264 content from packetized to bytestream in the MP4 file.

Examining H.264 headers

Now you can use the h264_parse tool to extract the H.264 headers. This tool belongs to the MPEG4IP package

h264_parse $OUTPUT_264_FILE

The h264_parse tool expects the H.264 video file to be in bytestream format in order to extract the headers.

Example H.264 header

h264_parse - mpeg4ip version 1.6
Nal length 6 start code 4 bytes 
 ref 0 type 9 Access unit delimeter
   primary_pic_type: 0
Nal length 47 start code 4 bytes 
 ref 1 type 7 Sequence parameter set
   profile: 77
   constaint_set0_flag: 0
   constaint_set1_flag: 1
   constaint_set2_flag: 0
   constaint_set3_flag: 0
   level_idc: 30
   seq parameter set id: 0
   log2_max_frame_num_minus4: 0
   pic_order_cnt_type: 0
    log2_max_pic_order_cnt_lsb_minus4: 0
   num_ref_frames: 2
   gaps_in_frame_num_value_allowed_flag: 0
   pic_width_in_mbs_minus1: 44 (720)
   pic_height_in_map_minus1: 14
   frame_mbs_only_flag: 0
     derived height: 480
    mb_adaptive_frame_field_flag: 0
   direct_8x8_inference_flag: 1
   frame_cropping_flag: 0
   vui_parameters_present_flag: 1
    aspect_ratio_info_present_flag: 1
     aspect_ratio_idc:3
    overscan_info_present_flag: 0
    video_signal_info_present_flag: 0
    chroma_loc_info_present_flag: 0
    timing_info_present_flag: 1
     num_units_in_tick: 1001
     time_scale: 60000
     fixed_frame_scale: 1
    nal_hrd_parameters_present_flag: 1
     cpb_cnt_minus1: 0
     bit_rate_scale: 0
     cpb_size_scale: 1
      bit_rate_value_minus1[0]: 109374
      cpb_size_value_minus1[0]: 109374
      cbr_flag[0]: 0
     initial_cpb_removal_delay_length_minus1: 15
     cpb_removal_delay_length_minus1: 23
     dpb_output_delay_length_minus1: 23
     time_offset_length: 0
    vcl_hrd_parameters_present_flag: 1
     cpb_cnt_minus1: 0
     bit_rate_scale: 0
     cpb_size_scale: 1
      bit_rate_value_minus1[0]: 109374
      cpb_size_value_minus1[0]: 109374
      cbr_flag[0]: 0
     initial_cpb_removal_delay_length_minus1: 15
     cpb_removal_delay_length_minus1: 23
     dpb_output_delay_length_minus1: 23
     time_offset_length: 0
    low_delay_hrd_flag: 0
    pic_struct_present_flag: 1
Nal length 9 start code 4 bytes 
 ref 1 type 8 Picture parameter set
   pic_parameter_set_id: 0
   seq_parameter_set_id: 0
   entropy_coding_mode_flag: 1
   pic_order_present_flag: 0
   num_slice_groups_minus1: 0
   num_ref_idx_l0_active_minus1: 1
   num_ref_idx_l1_active_minus1: 1
   weighted_pred_flag: 0
   weighted_bipred_idc: 0
   pic_init_qp_minus26: 19
   pic_init_qs_minus26: 0
   chroma_qp_index_offset: 0
   deblocking_filter_control_present_flag: 1
   constrained_intra_pred_flag: 0
   redundant_pic_cnt_present_flag: 0
Nal length 26 start code 4 bytes 
 ref 0 type 6 SEI
   payload_type: 0 buffering_period
   payload_size: 9
    0xd7 0xe4 0x0 0x0 0x57 0xe4 0x0 0x0
    0x40
    seq_parameter_set_id: 0
    initial_cpb_removal_delay[0]: 45000
    initial_cpb_removal_delay_offset[0]: 0
    initial_cpb_removal_delay[0]: 45000
    initial_cpb_removal_delay_offset[0]: 0
   payload_type: 1 pic_timing
   payload_size: 7 0x0 0x0 0x0 0x0 0x0 0x6 0x14
    cpb_removal_delay: 0
    dpb_output_delay: 6
    pict_struct: 1
    clock_timestamp_flag[0]: 0
Nal length 48859 start code 4 bytes 
 ref 1 type 5 Coded slice of an IDR picture
   first_mb_in_slice: 0
   slice_type: 7 (I)
   pic_parameter_set_id: 0
   frame_num: 0 (4 bits)
   field_pic_flag: 1
    bottom_field_flag: 0
   idr_pic_id: 0
   pic_order_cnt_lsb: 0
Nal length 6 start code 4 bytes 
 ref 0 type 9 Access unit delimeter
   primary_pic_type: 1
Nal length 15 start code 4 bytes 
 ref 0 type 6 SEI
   payload_type: 1 pic_timing
   payload_size: 7 0x0 0x0 0x1 0x0 0x0 0x6 0x24
    cpb_removal_delay: 1
    dpb_output_delay: 6
    pict_struct: 2
    clock_timestamp_flag[0]: 0
Nal length 12257 start code 4 bytes 
 ref 1 type 1 Coded slice of non-IDR picture
   first_mb_in_slice: 0
   slice_type: 5 (P)
   pic_parameter_set_id: 0
   frame_num: 0 (4 bits)
   field_pic_flag: 1
    bottom_field_flag: 1
   pic_order_cnt_lsb: 1
Nal length 6 start code 4 bytes 
 ref 0 type 9 Access unit delimeter
   primary_pic_type: 1
Nal length 15 start code 4 bytes 
 ref 0 type 6 SEI
   payload_type: 1 pic_timing
   payload_size: 7 0x0 0x0 0x6 0x0 0x0 0x6 0x14
    cpb_removal_delay: 6
    dpb_output_delay: 6
    pict_struct: 1
    clock_timestamp_flag[0]: 0
Nal length 8015 start code 4 bytes 
 ref 1 type 1 Coded slice of non-IDR picture
   first_mb_in_slice: 0
   slice_type: 5 (P)
   pic_parameter_set_id: 0
   frame_num: 1 (4 bits)
   field_pic_flag: 1
    bottom_field_flag: 0
   pic_order_cnt_lsb: 6
Nal length 6 start code 4 bytes 
 ref 0 type 9 Access unit delimeter
   primary_pic_type: 1
Nal length 15 start code 4 bytes 
 ref 0 type 6 SEI
   payload_type: 1 pic_timing
   payload_size: 7 0x0 0x0 0x7 0x0 0x0 0x6 0x24
    cpb_removal_delay: 7
    dpb_output_delay: 6
    pict_struct: 2
    clock_timestamp_flag[0]: 0
...
..
.