h264拆包方法

h264拆包方法

关于解析h264视频流: http://bbs.rosoo.net/archiver/tid-578.html
h264 RTP Payload 格式: http://bbs.rosoo.net/archiver/tid-23.html

可以通过生成SDP文件给播放器在指定端口接收数据播放,如果你不用动态调整编码器什么的就不用考虑另外发送RTCP. 
而且RTCP必须自己实现RTSP服务结合起来用,没有实现RTSP服务,就谈不上实现RTCP. 

具体H264字节流拆包和RTP封包方法如下: 




如何把MPEG4(或H.264)的视频流拆分成一个个的RTP包?
MPEG-4和H.264拆分RTP包的方法原理基本上相同的,具体实现上还是有差别的,可以查看不同的RFC文档,H.264的是RFC3984。

 

一个rtp包的最大长度为多少,rtp包头信息怎么填,payload type等于多少?
一 个rtp包如果是经过UDP传输的原则上不要超过1460,

原因如下:RTP基于UDP之上的传输协议,而UDP属于运输层,我们知道以太网数据帧的长度 必须在46-1500字节之间,这是由以太网的物理特性决定的,这个1500字节被成为链路层的MTU(最大传输单元),去除IP数据报的首部20字节和 UDP首部的8字节,所以UDP数据报的数据区最大长度为1472字节,考虑到RTP包头的12个字节,这样RTP载荷的最大尺寸为1460字节。

如果要 封装进RTP载荷的数据大于1460字节,而且不在应用层数据装载进RTP分组之前进行载荷的拆分,这样就会产生大于IP网络MTU的分组。

如此一来底层 的协议(IP)将会对这种大的分组进行拆分,分为几个小于IP MTU尺寸的IP分组。这样就无法检测数据是否丢失,

原因如下:IP和UDP协议都没有提供分组到达的检测,如果拆分后第一个分组成功接收,而后续分组丢 失。由于第一个分组中包含完整的RTP头信息,而RTP头中也没有关于RTP载荷长度的指示,因此不能判读该RTP分组是否有丢失,而只能认为是完成接收 了,这样就会造成解码时的错误信息。


rtp头的信息就按照RFC标准填写。


payload type因为没有定义,所以可以是96-127之间的任意值.


RTCP包要不要我来发送,如何发送,什么时候发送,发什么内容??

如果用jrtplib会自动发送RTCP包。


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值