本文为H264的码流解析,包括SPS、PPS、SEI、I frame、P frame、B frame,其中具体字段的意思可参考H.264文档
000000 seq_parameter_set (29 bytes)
000000 Header (5 bytes)
000000 zero_byte: 0 (0x00)
000001 start_code_prefix_one_3bytes: 1 (0x000001)
000004 nal_ref_idc: 3 (0x3) - (2 bits)
000004 nal_unit_type: 7 (0x07) - (5 bits)
000005 profile_idc: 100 (0x64) // 当前码流的profile
000006 constraints (1 bytes)
000006 constraint_set0_flag: No
000006 constraint_set1_flag: No
000006 constraint_set2_flag: No
000006 constraint_set3_flag: No
000006 constraint_set4_flag: No
000006 constraint_set5_flag: No
000006 reserved_zero_2bits: 0 (0x0) - (2 bits)
000007 level_idc: 30 (0x1E) - (8 bits) // 当前码流的level
000008 seq_parameter_set_id: 0 (0x0) // 当前序列参数集的id。通过该id值,图像参数集pps可以引用其代表的sps中的参数。
000008 high profile specific (1 bytes)
000008 chroma_format_idc: 1 (0x1) - 4:2:0 // 色度采样结构,取值0(单色)、1(4:2:0)、2(4:2:2)、3(4:4:4)
000008 bit_depth_luma_minus8: 0 (0x0)
000008 bit_depth_chroma_minus8: 0 (0x0)
000008 qpprime_y_zero_transform_bypass_flag: No
000008 seq_scaling_matrix_present_flag: No
000009 log2_max_frame_num_minus4: 0 (0x0)
000009 pic_order_cnt_type: 0 (0x0)
000009 log2_max_pic_order_cnt_lsb_minus4: 2 (0x2)
000009 max_num_ref_frames: 4 (0x4) // 表示参考帧的最大数目
00000A gaps_in_frame_num_value_allowed_flag: No // 表示frame_num中是否允许不连续的值
00000A pic_width_in_mbs_minus1: 39 (0x027) // 其加1表示以宏块为单元的每个解码图像的宽度,亮度分量的图像宽度为:16*(pic_width_in_mbs_minus1+1)色度图像宽度(仅本例)为:2*(pic_width_in_mbs_minus1+1)
00000B pic_height_in_map_units_minus1: 22 (0x16)
00000C frame_mbs_only_flag: Yes
00000D direct_8x8_inference_flag: Yes
00000D frame_cropping_flag (1 bytes)
00000D frame_cropping_flag: Yes
00000D frame_crop_left_offset: 0 (0x0)
00000D frame_crop_right_offset: 0 (0x0)
00000D frame_crop_top_offset: 0 (0x0)
00000D frame_crop_bottom_offset: 4 (0x4)
00000E vui_parameters_present_flag (12 bytes)
00000E vui_parameters_present_flag: Yes
00000E aspect_ratio_info_present_flag: No
00000E overscan_info_present_flag: No
00000E video_signal_type_present_flag: No
00000E chroma_loc_info_present_flag: No
00000E timing_info_present_flag (9 bytes)
00000E timing_info_present_flag: Yes
00000F num_units_in_tick: 1 (0x00000001) - (32 bits)
000013 time_scale: 50 (0x00000032) - (32 bits)
000017 fixed_frame_rate_flag: No
000017 nal_hrd_parameters_present_flag: No
000017 vcl_hrd_parameters_present_flag: No
000017 pic_struct_present_flag: No
000017 bitstream_restriction_flag (3 bytes)
000017 bitstream_restriction_flag: Yes
000017 motion_vectors_over_pic_boundaries_flag: Yes
000017 max_bytes_per_pic_denom: 0 (0x0)
000018 max_bits_per_mb_denom: 0 (0x0)
000018 log2_max_mv_length_horizontal: 10 (0x0A)
000019 log2_max_mv_length_vertical: 10 (0x0A)
000019 max_num_reorder_frames: 2 (0x2)
00001A max_dec_frame_buffering: 4 (0x4)
00001D pic_parameter_set (10 bytes)
00001D Header (5 bytes)
00001D zero_byte: 0 (0x00)
00001E start_code_prefix_one_3bytes: 1 (0x000001)
000021 nal_ref_idc: 3 (0x3) - (2 bits)
000021 nal_unit_type: 8 (0x08) - (5 bits)
000022 pic_parameter_set_id: 0 (0x0)
000022 seq_parameter_set_id: 0 (0x0)
000022 entropy_coding_mode_flag: Yes
000022 bottom_field_pic_order_in_frame_present_flag: No
000022 num_slice_groups_minus1: 0 (0x0)
000022 num_ref_idx_l0_default_active_minus1: 2 (0x2)
000023 num_ref_idx_l1_default_active_minus1: 0 (0x0)
000023 weighted_pred_flag: Yes
000023 weighted_bipred_idc: 2 (0x2) - (2 bits)
000023 pic_init_qp_minus26: -3 (0xFFFFFFFD)
000024 pic_init_qs_minus26: 0 (0x0)
000024 chroma_qp_index_offset: -2 (0xFFFFFFFE)
000024 deblocking_filter_control_present_flag: Yes
000025 constrained_intra_pred_flag: No
000025 redundant_pic_cnt_present_flag: No
000025 transform_8x8_mode_flag: Yes
000025 pic_scaling_matrix_present_flag: No
000025 second_chroma_qp_index_offset: -2 (0xFFFFFFFE)
000027 -------------------------
000027 --- AVC, accepted ---
000027 -------------------------
000027 sei (689 bytes)
000027 Header (4 bytes)
000027 start_code_prefix_one_3bytes: 1 (0x000001)
00002A nal_ref_idc: 0 (0x0) - (2 bits)
00002A nal_unit_type: 6 (0x06) - (5 bits)
00002B sei message - user_data_unregistered - x264 (684 bytes)
00002B sei message header (4 bytes)
00002B payload_type_byte: 5 (0x05)
00002C payload_size_byte: 255 (0xFF)
00002D payload_size_byte: 255 (0xFF)
00002E payload_size_byte: 170 (0xAA)
00002F uuid_iso_iec_11578: DC45E9BD-E6D9-48B7-962C-D820D923EEEF
00003F data: x264
000043 separator: -
000046 data: core 146 r2538 121396c
00005C separator: -
00005F data: H.264/MPEG-4 AVC codec
000075 separator: -
000078 data: Copyleft 2003-2015
00008A separator: -
00008D data: http://www.videolan.org/x264.html
0000AE separator: -
0000B1 options (550 bytes)
0000B1 option: options:
0000B9 separator:
0000BA option: cabac=1
0000C1 separator:
0000C2 option: ref=3
0000C7 separator:
0000C8 option: deblock=1:0:0
0000D5 separator:
0000D6 option: analyse=0x3:0x113
0000E7 separator:
0000E8 option: me=hex
0000EE separator:
0000EF option: subme=7
0000F6 separator:
0000F7 option: psy=1
0000FC separator:
0000FD option: psy_rd=1.00:0.00
00010D separator:
00010E option: mixed_ref=1
000119 separator:
00011A option: me_range=16
000125 separator:
000126 option: chroma_me=1
000131 separator:
000132 option: trellis=1
00013B separator:
00013C option: 8x8dct=1
000144 separator:
000145 option: cqm=0
00014A separator:
00014B option: deadzone=21,11
000159 separator:
00015A option: fast_pskip=1
000166 separator:
000167 option: chroma_qp_offset=-2
00017A separator:
00017B option: threads=6
000184 separator:
000185 option: lookahead_threads=1
000198 separator:
000199 option: sliced_threads=0
0001A9 separator:
0001AA option: nr=0
0001AE separator:
0001AF option: decimate=1
0001B9 separator:
0001BA option: interlaced=0
0001C6 separator:
0001C7 option: bluray_compat=0
0001D6 separator:
0001D7 option: constrained_intra=0
0001EA separator:
0001EB option: bframes=3
0001F4 separator:
0001F5 option: b_pyramid=2
000200 separator:
000201 option: b_adapt=1
00020A separator:
00020B option: b_bias=0
000213 separator:
000214 option: direct=1
00021C separator:
00021D option: weightb=1
000226 separator:
000227 option: open_gop=0
000231 separator:
000232 option: weightp=2
00023B separator:
00023C option: keyint=250
000246 separator:
000247 option: keyint_min=25
000254 separator:
000255 option: scenecut=40
000260 separator:
000261 option: intra_refresh=0
000270 separator:
000271 option: rc_lookahead=40
000280 separator:
000281 option: rc=crf
000287 separator:
000288 option: mbtree=1
000290 separator:
000291 option: crf=23.0
000299 separator:
00029A option: qcomp=0.60
0002A4 separator:
0002A5 option: qpmin=0
0002AC separator:
0002AD option: qpmax=69
0002B5 separator:
0002B6 option: qpstep=4
0002BE separator:
0002BF option: ip_ratio=1.40
0002CC separator:
0002CD option: aq=1:1.00
0002D7 Size is wrong: 0 (0x00000000)
0002D8 slice_layer_without_partitioning (IDR) - 0 (0x0) - Frame 0 - slice_type I - frame_num 0 - pic_order_cnt_lsb 0 (14713 bytes)
0002D8 Header (4 bytes)
0002D8 start_code_prefix_one_3bytes: 1 (0x000001)
0002DB nal_ref_idc: 3 (0x3) - (2 bits)
0002DB nal_unit_type: 5 (0x05) - (5 bits)
0002DC slice_header (4 bytes)
0002DC first_mb_in_slice: 0 (0x0)
0002DC slice_type: 7 (0x07) - I
0002DD pic_parameter_set_id: 0 (0x0)
0002DD frame_num: 0 (0x0)
0002DD idr_pic_id: 0 (0x0)
0002DD pic_order_cnt_lsb: 0 (0x00)
0002DE no_output_of_prior_pics_flag: No
0002DE long_term_reference_flag: No
0002DE slice_qp_delta: -13 (0xFFFFFFF3)
0002E0 disable_deblocking_filter_idc: 0 (0x0)
0002E0 slice_alpha_c0_offset_div2: 0 (0x0)
0002E0 slice_beta_offset_div2: 0 (0x0)
0002E0 slice_data (14698 bytes)
0002E0 (ToDo): (Data)
003C51 slice_layer_without_partitioning (non-IDR) - 4 (0x4) - Frame 1 - slice_type P - frame_num 1 - pic_order_cnt_lsb 4 (6579 bytes)
003C51 Header (5 bytes)
003C51 zero_byte: 0 (0x00)
003C52 start_code_prefix_one_3bytes: 1 (0x000001)
003C55 nal_ref_idc: 2 (0x2) - (2 bits)
003C55 nal_unit_type: 1 (0x01) - (5 bits)
003C56 slice_header (4 bytes)
003C56 first_mb_in_slice: 0 (0x0)
003C56 slice_type: 5 (0x5) - P
003C56 pic_parameter_set_id: 0 (0x0)
003C56 frame_num: 1 (0x1)
003C57 pic_order_cnt_lsb: 4 (0x04)
003C58 num_ref_idx_active_override_flag (0 bytes)
003C58 num_ref_idx_active_override_flag: Yes
003C58 num_ref_idx_l0_active_minus1: 0 (0x0)
003C58 ref_pic_list_modification_flag_l0: No
003C58 luma_log2_weight_denom: 0 (0x0)
003C58 chroma_log2_weight_denom: 0 (0x0)
003C58 luma_weight_l0_flag: No
003C58 chroma_weight_l0_flag: No
003C59 adaptive_ref_pic_marking_mode_flag: No
003C59 cabac_init_idc: 0 (0x0)
003C59 slice_qp_delta: -13 (0xFFFFFFF3)
003C5A disable_deblocking_filter_idc: 0 (0x0)
003C5A slice_alpha_c0_offset_div2: 0 (0x0)
003C5A slice_beta_offset_div2: 0 (0x0)
003C5A slice_data (6572 bytes)
003C5A (ToDo): (Data)
005604 slice_layer_without_partitioning (non-IDR) - 2 (0x2) - Frame 2 - slice_type B - frame_num 2 - pic_order_cnt_lsb 2 (2088 bytes)
005604 Header (5 bytes)
005604 zero_byte: 0 (0x00)
005605 start_code_prefix_one_3bytes: 1 (0x000001)
005608 nal_ref_idc: 0 (0x0) - (2 bits)
005608 nal_unit_type: 1 (0x01) - (5 bits)
005609 slice_header (4 bytes)
005609 first_mb_in_slice: 0 (0x0)
005609 slice_type: 6 (0x6) - B
005609 pic_parameter_set_id: 0 (0x0)
005609 frame_num: 2 (0x2)
00560A pic_order_cnt_lsb: 2 (0x02)
00560B direct_spatial_mv_pred_flag: Yes
00560B num_ref_idx_active_override_flag (0 bytes)
00560B num_ref_idx_active_override_flag: Yes
00560B num_ref_idx_l0_active_minus1: 0 (0x0)
00560B num_ref_idx_l1_active_minus1: 0 (0x0)
00560B ref_pic_list_modification_flag_l0: No
00560B ref_pic_list_modification_flag_l1: No
00560C cabac_init_idc: 0 (0x0)
00560C slice_qp_delta: -10 (0xFFFFFFF6)
00560D disable_deblocking_filter_idc: 0 (0x0)
00560D slice_alpha_c0_offset_div2: 0 (0x0)
00560D slice_beta_offset_div2: 0 (0x0)
00560D slice_data (2079 bytes)
00560D (ToDo): (Data)