Ffmpeg Libavcodec:解码H.264流时如何告知访问单元的结束

Ffmpeg Libavcodec:解码H.264流时如何告知访问单元的结束,ffmpeg,h.264,libavcodec,Ffmpeg,H.264,Libavcodec,我正在通过RTP接收H.264视频,并用libavcodec对其进行解码。我正在从RTP数据包中解包NAL单元,然后再将它们传送到avcodec(包括重新组装碎片单元) 我试图展示有效的解码帧速率。我过去常常记录成功解码视频通话后的时间,其中*got_picture_ptr为非零。到目前为止,这是可行的,因为我只得到过每帧一个片段的视频。但现在我接收到的视频中,I帧和P帧分别由2个NAL单元组成,类型分别为5和1。现在,当我馈送一帧的任意一个片段时,解码视频返回它得到了一张图片,并且pAVFra

我正在通过RTP接收H.264视频,并用libavcodec对其进行解码。我正在从RTP数据包中解包NAL单元,然后再将它们传送到avcodec(包括重新组装碎片单元)

我试图展示有效的解码帧速率。我过去常常记录成功解码视频通话后的时间,其中*got_picture_ptr为非零。到目前为止,这是可行的,因为我只得到过每帧一个片段的视频。但现在我接收到的视频中,I帧和P帧分别由2个NAL单元组成,类型分别为5和1。现在,当我馈送一帧的任意一个片段时,解码视频返回它得到了一张图片,并且pAVFrame->coded\u picture\u编号从每个片段增加

如何可靠地查找视频帧/图片/访问单元的开头或结尾?

我已经从流中转储了一些NAL单元,并通过h264位流中的h264_分析运行它们

4台NAL装置上h264_分析的输出

!! Found NAL at offset 695262 (0xA9BDE), size 25 (0x0019) ==================== NAL ==================== forbidden_zero_bit : 0 nal_ref_idc : 1 nal_unit_type : 7 ( Sequence parameter set ) ======= SPS ======= profile_idc : 66 constraint_set0_flag : 1 constraint_set1_flag : 1 constraint_set2_flag : 1 constraint_set3_flag : 0 reserved_zero_4bits : 0 level_idc : 32 seq_parameter_set_id : 0 chroma_format_idc : 0 residual_colour_transform_flag : 0 bit_depth_luma_minus8 : 0 bit_depth_chroma_minus8 : 0 qpprime_y_zero_transform_bypass_flag : 0 seq_scaling_matrix_present_flag : 0 log2_max_frame_num_minus4 : 12 pic_order_cnt_type : 2 log2_max_pic_order_cnt_lsb_minus4 : 0 delta_pic_order_always_zero_flag : 0 offset_for_non_ref_pic : 0 offset_for_top_to_bottom_field : 0 num_ref_frames_in_pic_order_cnt_cycle : 0 num_ref_frames : 1 gaps_in_frame_num_value_allowed_flag : 0 pic_width_in_mbs_minus1 : 79 pic_height_in_map_units_minus1 : 44 frame_mbs_only_flag : 1 mb_adaptive_frame_field_flag : 0 direct_8x8_inference_flag : 1 frame_cropping_flag : 0 frame_crop_left_offset : 0 frame_crop_right_offset : 0 frame_crop_top_offset : 0 frame_crop_bottom_offset : 0 vui_parameters_present_flag : 1 === VUI === aspect_ratio_info_present_flag : 1 aspect_ratio_idc : 1 sar_width : 0 sar_height : 0 overscan_info_present_flag : 0 overscan_appropriate_flag : 0 video_signal_type_present_flag : 1 video_format : 5 video_full_range_flag : 1 colour_description_present_flag : 0 colour_primaries : 0 transfer_characteristics : 0 matrix_coefficients : 0 chroma_loc_info_present_flag : 0 chroma_sample_loc_type_top_field : 0 chroma_sample_loc_type_bottom_field : 0 timing_info_present_flag : 1 num_units_in_tick : 1 time_scale : 25 fixed_frame_rate_flag : 0 nal_hrd_parameters_present_flag : 0 vcl_hrd_parameters_present_flag : 0 low_delay_hrd_flag : 0 pic_struct_present_flag : 0 bitstream_restriction_flag : 1 motion_vectors_over_pic_boundaries_flag : 1 max_bytes_per_pic_denom : 0 max_bits_per_mb_denom : 0 log2_max_mv_length_horizontal : 6 log2_max_mv_length_vertical : 6 num_reorder_frames : 0 max_dec_frame_buffering : 1 === HRD === cpb_cnt_minus1 : 0 bit_rate_scale : 0 cpb_size_scale : 0 initial_cpb_removal_delay_length_minus1 : 0 cpb_removal_delay_length_minus1 : 0 dpb_output_delay_length_minus1 : 0 time_offset_length : 0 !! Found NAL at offset 695290 (0xA9BFA), size 4 (0x0004) ==================== NAL ==================== forbidden_zero_bit : 0 nal_ref_idc : 1 nal_unit_type : 8 ( Picture parameter set ) ======= PPS ======= pic_parameter_set_id : 0 seq_parameter_set_id : 0 entropy_coding_mode_flag : 0 pic_order_present_flag : 0 num_slice_groups_minus1 : 0 slice_group_map_type : 0 num_ref_idx_l0_active_minus1 : 0 num_ref_idx_l1_active_minus1 : 0 weighted_pred_flag : 0 weighted_bipred_idc : 0 pic_init_qp_minus26 : 3 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 transform_8x8_mode_flag : 1 pic_scaling_matrix_present_flag : 0 second_chroma_qp_index_offset : 1 !! Found NAL at offset 695297 (0xA9C01), size 50725 (0xC625) ==================== NAL ==================== forbidden_zero_bit : 0 nal_ref_idc : 1 nal_unit_type : 5 ( Coded slice of an IDR picture ) ======= Slice Header ======= first_mb_in_slice : 0 slice_type : 2 ( I slice ) pic_parameter_set_id : 0 frame_num : 0 field_pic_flag : 0 bottom_field_flag : 0 idr_pic_id : 0 pic_order_cnt_lsb : 0 delta_pic_order_cnt_bottom : 0 redundant_pic_cnt : 0 direct_spatial_mv_pred_flag : 0 num_ref_idx_active_override_flag : 0 num_ref_idx_l0_active_minus1 : 0 num_ref_idx_l1_active_minus1 : 0 cabac_init_idc : 0 slice_qp_delta : 5 sp_for_switch_flag : 0 slice_qs_delta : 0 disable_deblocking_filter_idc : 0 slice_alpha_c0_offset_div2 : 0 slice_beta_offset_div2 : 0 slice_group_change_cycle : 0 === Prediction Weight Table === luma_log2_weight_denom : 0 chroma_log2_weight_denom : 0 luma_weight_l0_flag : 0 chroma_weight_l0_flag : 0 luma_weight_l1_flag : 0 chroma_weight_l1_flag : 0 === Ref Pic List Reordering === ref_pic_list_reordering_flag_l0 : 0 ref_pic_list_reordering_flag_l1 : 0 === Decoded Ref Pic Marking === no_output_of_prior_pics_flag : 0 long_term_reference_flag : 0 adaptive_ref_pic_marking_mode_flag : 0 !! Found NAL at offset 746025 (0xB6229), size 38612 (0x96D4) ==================== NAL ==================== forbidden_zero_bit : 0 nal_ref_idc : 1 nal_unit_type : 5 ( Coded slice of an IDR picture ) ======= Slice Header ======= first_mb_in_slice : 1840 slice_type : 2 ( I slice ) pic_parameter_set_id : 0 frame_num : 0 field_pic_flag : 0 bottom_field_flag : 0 idr_pic_id : 0 pic_order_cnt_lsb : 0 delta_pic_order_cnt_bottom : 0 redundant_pic_cnt : 0 direct_spatial_mv_pred_flag : 0 num_ref_idx_active_override_flag : 0 num_ref_idx_l0_active_minus1 : 0 num_ref_idx_l1_active_minus1 : 0 cabac_init_idc : 0 slice_qp_delta : 5 sp_for_switch_flag : 0 slice_qs_delta : 0 disable_deblocking_filter_idc : 0 slice_alpha_c0_offset_div2 : 0 slice_beta_offset_div2 : 0 slice_group_change_cycle : 0 === Prediction Weight Table === luma_log2_weight_denom : 0 chroma_log2_weight_denom : 0 luma_weight_l0_flag : 0 chroma_weight_l0_flag : 0 luma_weight_l1_flag : 0 chroma_weight_l1_flag : 0 === Ref Pic List Reordering === ref_pic_list_reordering_flag_l0 : 0 ref_pic_list_reordering_flag_l1 : 0 === Decoded Ref Pic Marking === no_output_of_prior_pics_flag : 0 long_term_reference_flag : 0 adaptive_ref_pic_marking_mode_flag : 0 !! 在偏移量695262(0xA9BDE)处发现NAL,大小为25(0x0019) ==================================NAL==================== 禁止的\u零\u位:0 nal_参考数据中心:1 nal\u单元\u类型:7(序列参数集) =======SPS======= 国际数据中心:66 约束设置0标志:1 约束设置1\u标志:1 约束设置2_标志:1 约束设置3\u标志:0 保留的0位4位:0 二级idc:32 序列参数集id:0 色度格式idc:0 残差颜色变换标志:0 位深度亮度减8:0 位深度色度减数8:0 qpprime_y_zero_transform_bypass_标志:0 序列缩放矩阵当前标志:0 log2最大帧数减4:12 图片订单类型:2 日志2最大图片顺序cnt lsb最小值4:0 delta_pic_order_always_zero_标志:0 非参考图片的偏移量:0 从顶部到底部字段的偏移量:0 图片顺序循环中的参考帧数:0 参考帧数:1 间隔\u在\u帧中\u数量\u值\u允许\u标志:0 图片宽度单位:1:79 图片高度单位图单位减1:44 帧仅限帧标志:1 mb_自适应_帧_字段_标志:0 直接\u 8x8 \u推断\u标志:1 帧\u裁剪\u标志:0 帧\裁剪\左\偏移:0 帧\裁剪\右\偏移:0 帧\裁剪\顶部\偏移:0 帧\裁剪\底部\偏移:0 vui\u参数\u当前\u标志:1 ==VUI=== 纵横比信息显示标志:1 纵横比idc:1 sar_宽度:0 sar_高度:0 过扫描\u信息\u当前\u标志:0 过扫描标志:0 视频信号类型当前标志:1 视频格式:5 视频\u满\u范围\u标志:1 颜色\说明\当前\标志:0 原色:0 传输特性:0 矩阵_系数:0 色度位置信息当前标志:0 色度样本位置类型顶部字段:0 色度样本位置类型底部字段:0 定时\信息\当前\标志:1 刻度中的单位数:1 时间刻度:25 固定帧速率标志:0 nal\u hrd\u参数\u当前\u标志:0 vcl\u hrd\u参数\u当前\u标志:0 低延迟hrd_标志:0 图片结构当前标志:0 位流\u限制\u标志:1 运动矢量在图片边界上的运动标志:1 每个图片的最大字节数:0 每个字节的最大字节数:0 对数2_最大值_最小值_长度_水平:6 对数2最大最小垂直长度:6 帧数\u重新排序\u帧:0 最大帧缓冲:1 ==人力资源开发=== cpb_cnt_减数1:0 比特率刻度:0 cpb_大小_比例:0 初始\u cpb\u移除\u延迟\u长度\u减1:0 cpb_移除_延迟_长度_减1:0 dpb_输出_延迟_长度_减1:0 时间偏移量长度:0 !! 在偏移量695290(0xA9BFA)处找到NAL,大小为4(0x0004) ==================================NAL==================== 禁止的\u零\u位:0 nal_参考数据中心:1 nal\u单元\u类型:8(图片参数集) =======PPS======= pic_参数_集合_id:0 序列参数集id:0 熵\编码\模式\标志:0 图片\顺序\当前\标志:0 数值\u切片\u组\u减1:0 切片组映射类型:0 num_ref_idx_l0_active_minus 1:0 num_ref_idx_l1_active_minus 1:0 加权预测标志:0 加权双红色idc:0 图26:3 图26:0 色度指数偏移量:0 解除锁定\过滤器\控制\存在\标志:1 受约束的\u内部\u pred\u标志:0 冗余图片显示标志:0 转换\u 8x8 \u模式\u标志:1 pic\u缩放\u矩阵\u显示\u标志:0 第二个色度qp索引偏移量:1 !! 在偏移量695297(0xA9C01)处找到NAL,大小为50725(0xC625) ==================================NAL==================== 禁止的\u零\u位:0 nal_参考数据中心:1 nal_单元_类型:5(IDR图片的编码切片) =======片头======= 分区中的第一个分区:0 切片类型:2(I切片) pic_参数_集合_id:0 帧编号:0 字段图片标志:0 底部\u字段\u标志:0 idr_图片_id:0 图片顺序:0 delta_pic_顺序_cnt_底部:0 冗余图片:0 直接空间mv pred标志:0 num_ref_idx_active_override_标志:0 num_ref_idx_l0_active_minus 1:0 num_ref_idx_l1_active_minus 1:0 cabac_init_idc:0 切片_qp_delta:5 sp_用于_开关_标志:0 切片_qs_delta:0 禁用\u解除锁定\u筛选器\u idc:0 切片\u alpha\u c0\u偏移量\u div2:0 切片\uβ\u偏移量\u div2:0 切片\u组\u更改\u周期:0 ==预测权重表=== luma_log2_weight_denom:0 色度log2重量denom:0 luma_重量_l0_标志:0 色度重量标志:0 luma_重量_l1_标志:0 色度权重标志:0 ==参考Pic列表重新排序=== 参考图片列表重新排序标志0:0 参考图片列表重新排序标志l1:0 ==解码参考图片标记=== 没有\u优先\u图片\u标志的\u输出\u:0 长期参考标志:0 自适应参考图片标记模式标志:0 !! 在偏移量746025(0xB6229)处找到NAL,大小为38612(0x96D4) ==================================NAL==================== 禁止的\u零\u位:0 nal_参考数据中心:1 nal_单元_类型:5(IDR图片的编码切片) =======片头======= 第一块切片:1840 切片类型:2(I切片) pic_参数_集合_id:0 框