H264 RTP payload format

siemens84cn 2009-12-22 02:13:02
请教一个问题,抓了若干个RTSP/RTP的数据包,选择某个RTP包,负载格式如下:
Payload: 419A01000801DF25DF272F31AF968046539CD8E3FFC1075C...
根据RFC3984规范,这个RTP应该是一个single NAL Unit package,type=1


又选择了其他某个RTP包,负载格式如下:
Payload: 780002091000136742D00B888B516274200002BF20002BF2...
同样根据RFC3984,这个RTP包的type=24,是一个single-time Aggregation package

1、通过这些RTP包,我如何判断哪个RTP包是I/P/B Frame呢?

2、看了下H264的标准,NAL nal_unit_type中的6表示SEI、7表示SPS、8表示PPS。 那么其他的type数值,都表示什么意思?

望高手指点。
...全文
2127 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
yyd01245 2012-08-29
  • 打赏
  • 举报
回复
最近就在学习H264的知识,对于sps和PPs的理解还不够啊!
herrydou 2010-09-19
  • 打赏
  • 举报
回复
向大家学习。
siemens84cn 2009-12-24
  • 打赏
  • 举报
回复
胖子兄,H264的码流分析确实比较复杂,往往难点在于,当编码服务器的信息不是很清楚的话,那在接收端进行码流分析是一件很郁闷的事。

当然,如果都按照规范办事的话,在没有扩展标识的情况下,能否定位I/P/B政也非易事啊,呵呵

所以,基于目前H264规范中的一些定义,能对RTP的payload分析到什么程度,我比较关心。目前分析下来,感觉很多内容和规范不一致。。。
比如,你说47表示SPS,67表示PPS,但这两个NAL_Unit_Type都等于7,但根据h264标准,7是sps,8是pps,呵呵,怎么理解了?

H264规范了解的少,还望指教,什么和你联系,如何留言?


ccpaishi 2009-12-24
  • 打赏
  • 举报
回复
呵呵,就CSDN里给我留言可以了。最近出差,上网没那么方便。晚上只能看时间。
首先做这些东西,还是先看你的使用场景吧,首先以最简单的方式实现效果,然后再做最好的方式,在组包阶段,编码端的确要比解码端容易很多。
yinfuyong 2009-12-24
  • 打赏
  • 举报
回复
学习了
Ryan裤子 2009-12-24
  • 打赏
  • 举报
回复
光分析NAL type没有办法准确判断出IPB。通过SPS和PPS也只能判断出I帧类型数据的位置,不能判断出PB类型。而且某些数据流也不会携带SPS/PPS。

准确的IPB类型,可以通过分析slice type来判断得出。

如果是为了计算PTS/DTS,还可以通过分析slice里记载的i_pic_order_cnt_lsb×帧间隔时间直接得到PTS,帧间隔时间可以通过sps里面记载的num_units_in_tick/time_scale得到。不用再去分析IPB类型。
注意i_pic_order_cnt_lsb的取值在每个group都会重置。需要自己做一个累计。
而DTS可以根据slice里面的frame_num和帧间隔时间累加得到,再分析slice type得到IPB类型,在IB位置做个同步即可。
c_cacal 2009-12-23
  • 打赏
  • 举报
回复
楼上,在RTP的扩展位里自己加上了标志位?详细说下哈
ccpaishi 2009-12-23
  • 打赏
  • 举报
回复
RTP的信息楼主可以根据PADDING 和 extension来在packet的结束加上双方都可以认识的标识位。总是送解码库首先第一帧必须是I帧,楼主如果要做H.264的码流分析的话,可以大家一起探讨一下,因为264的规范实在太多太麻烦了,所以一般没有裸的H.264码流,都是分装成ASF或者avi此等封装格式来进行播放的。
ccpaishi 2009-12-23
  • 打赏
  • 举报
回复
呵呵,不好意思,今天刚刚看到回复。分析I B P如果非要做码流分析的话,你可以根据SPS和PPS来做 一般I帧是 00 00 00 01 47后者67 P帧一半是 00 00 00 01 41或者61.你可以看下H264的规范。
因为H264其实码流分析非常难做,关键要看支持的是什么类型。楼主如果用RTP这样好的承载格式,最好在264编码的时候,把信息放到RTP的包头里面,而不要自己在接收端去做码流分析,当然情况是自己做发送和接受,如果是分开做的话,就要规定好格式。最近在出差,有什么时候可以直接给我留言,或者直接和我交流吧。
ccpaishi 2009-12-23
  • 打赏
  • 举报
回复
RTP包里面是不区分IBP帧的,需要自己通过标准码流来判断,本来已经分成了一帧一帧的的包了。我想验证一个IBP的码流分析应该不是那么难,但是264的码流分析的确相当麻烦了一点。我们一般都在RTP的扩展位里自己加上了标志位。楼主也可以这样试试看。
siemens84cn 2009-12-23
  • 打赏
  • 举报
回复
大致看了下H264的标准规范,在Table7-1 NAL unit type codes中,我觉得当nal-unit-type=5时,应该是表示一个完整的I slice,而2/3/4就不知道是表示什么了?

胖子兄,你觉得呢,看不明白啊。
macrojj 2009-12-22
  • 打赏
  • 举报
回复
看看标准啊

H。264中文标准表 7-1

2,543

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧