关于I帧,P帧,B帧和NAL单元的联系。还有slice片和NAL与各帧之间的关系

问题如上:
先说一下个人的理解。分析一个h264文件,以00 00 00 01开始和结尾的部分代表一个NAL单元。live555里面在给每一帧打上时间戳的时候是读取一个完整的NAL单元,之后再读取下一NAL单元。用analyze_slice_header()函数分析这两个slice_header的区别。如果标志字段frame_num,pic_parameter_set_id,field_pic_flag,bottom_field_flag等不相等,就说明当前帧已经是下一帧了,就把slice_header相同的NAL当成是一帧,打上相同的时间戳经过rtp发送出去。

那这么说。
1:一个NAL单元就是一个slice(片)了,而一帧不一定就是一个NAL单元了。一帧里面可能有多个NAL单元(也就是slice)。
2:NAL单元的头信息中的type字段我们能知道当前类型是sps,pps和IDR类型。但是不能判断当前帧是什么类型(I帧P帧等)。那如果一帧中有多个NAL那是I帧 还是P帧 我们怎么判断呢?是根据slice_head的字段判断吗?
我也是刚学 很多东西不懂希望和大家一起交流。

看有的文章  别人说一帧就是一个nal,I帧可以通过nal头获取 ,那p帧和b帧呢 ?有点困惑 请高人指点哦
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
HEVC采用了类似H.264的NAL单元结构,每个NAL单元包含了一个完整的视频段的编码数据。在HEVC中,NAL单元可以是VPS、SPS、PPS、SEI或视频数据。 要判断一个NAL单元中包含的视频类型,需要解析NAL单元中的头部信息。在HEVC中,NAL单元的头部信息包括了NAL单元类型(NAL unit type)和层次(Layer ID)等信息。具体来说,NAL单元类型由header中的`nal_unit_type`字段指定,其值为0~55,其中0-32是VCL NAL单元,表示视频数据,33-35是非VCL NAL单元,表示参数集等信息。 对于VCL NAL单元,可以进一步从NAL单元的payload中获取视频类型。在HEVC中,视频类型与NAL单元类型之间的对应关系如下: - NAL_UNIT_TYPE_BLA_N_LP:前向预测(B) - NAL_UNIT_TYPE_BLA_W_LP:前向预测(B) - NAL_UNIT_TYPE_BLA_W_RADL:前向预测(B) - NAL_UNIT_TYPE_CRA:无参考(I) - NAL_UNIT_TYPE_IDR_W_RADL:关键(I) - NAL_UNIT_TYPE_IDR_N_LP:关键(I) - NAL_UNIT_TYPE_IDR_W_LP:关键(I) - NAL_UNIT_TYPE_P_BLA_W_LP:双向预测(P) - NAL_UNIT_TYPE_P_BLA_W_RADL:双向预测(P) - NAL_UNIT_TYPE_P_RPS_N_LP:双向预测(P) - NAL_UNIT_TYPE_P_RPS_W_LP:双向预测(P) - NAL_UNIT_TYPE_P_RPS_W_RADL:双向预测(P) - NAL_UNIT_TYPE_P_SLICE:双向预测(P) 因此,可以根据NAL单元类型和payload中的数据,判断一个NAL单元中包含的视频类型是I、P还是B

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值