RTP发送H264图像发灰解决方法

使用RTP打包发送按包获取的编码码流, 如果是静态图像,图像就发灰(类似图片的会灰阶处理一样),如果图像是运动的,那么图片色彩正常 。经测试和I帧有关。比如,现在帧率是25,I帧间隔是100.那么每四秒会出现一次刷新(图像变灰,一直持续)。经过好心人帮助得知这是 I帧丢失造成的 。经过抓包分析果然丢失了一个字节的数据!!下面是分析:
下图是好心人发给我的一个H264文件分析的程序界面:
RTP发送H264图像发灰解决方法 - zmurder - 起点的博客

 下图是抓包工具的截图:
RTP发送H264图像发灰解决方法 - zmurder - 起点的博客

 
这两个是一个数据源。
首先看第一个NALU
(来自h264文件数据分析)00 00 00 01 67 42 E0 1E DB 02 C0 49 10
此数据00 00 00 01是h264的起始码 67开始往后就是NALU数据  其中67是NALU头(7表示此NALU的type为ssp ) 后面的全是载荷数据  RBSP  
        
抓包工具显示:80 e0 00 00 00 00 0e 10 00 00 00 0a 67 42 e0 1e db 02 c0 49 10
数据分析如下:
80:RTP头部分,包含 V(2位),P(1位),,X(1位),CC(5位)
e0:  RTP头部分  ,M(1位),PT(7位)
00 00:    RTP头部分  ,序号
00 00 0e 10:    RTP头部分  ,时间戳
00 00 00 0a:    RTP头部分  ,ssrc
67:NALU头( 由于数据长度小于每包发送的长度(1400)此处就是NALU除去起始码的第一个字节
42 e0 1e db 02 c0 49 10  :RBSP

再看第二个NALU
(来自h264文件数据分析)   00 00 00 01 68 CE 30 A4 80
此数据00 00 00 01是h264的起始码 68开始往后就是NALU数据 其中68是NALU头(8表示此NALU  的type  是pps) 后面的全是载荷数据   RBSP    

抓包工具显示: 80 e0 00 01 00 00 1c 20 00 00 00 0a 68 ce 30 a4 80
数据分析如下:
80:RTP头部分,包含 V(2位),P(1位),,X(1位),CC(5位)
e0:   RTP头部分  ,M(1位),PT(7位)
00 01:     RTP头部分  ,序号
00 00 1c 20:     RTP头部分  ,时间戳(此时间戳与上一时间戳差值为3600  =90000/25)
00 00 00 0a:     RTP头部分  ,ssrc
68:NALU头(由于数据长度小于每包发送的长度(1400)此处就是NALU除去起始码的第一个字节)
ce 30 a4 80   :RBSP

再看第三个NALU
(来自h264文件数据分析) 00 00 00 01 06 E5 01 72 80 
此数据00 00 00 01是h264的起始码 06开始往后就是NALU数据 其中06是NALU头(6表示此NALU  的type  是SEI)后面的全是载荷数据   RBSP    

抓包工具显示: 80 e0 00 02 00 00 2a 30 00 00 00 0a 06 e5 01 72 80
80:RTP头部分,包含 V(2位),P(1位),,X(1位),CC(5位)
e0:   RTP头部分  ,M(1位),PT(7位)
00 02:     RTP头部分  ,序号
00 00 2a 30:     RTP头部分  ,时间戳(此时间戳与上一时间戳差值为3600  =90000/25)
00 00 00 0a:     RTP头部分  ,ssrc
06:NALU头(由于数据长度小于每包发送的长度(1400)此处就是NALU除去起始码的第一个字节)
 e5 01 72 80     :RBSP

再看第四个NALU
(来自h264文件数据分析) 00 00 00 01 65 B8 00 00 AC 5E 04 45 0A C6 A2 39 。。。。。共18942字节
此数据00 00 00 01是h264的起始码 65开始往后就是NALU数据 其中65是NALU头(5表示此NALU  的type  是IDR(I帧)) 后面的全是载荷数据   RBSP    

抓包工具显示:  80 60 00 03 00 00 38 40 00 00 00 0a 7c 81 b8 00 00 ac 5e 04 45 0a c6 a2 39 。。。。
80:RTP头部分,包含 V(2位),P(1位),,X(1位),CC(5位)
60:   RTP头部分  ,M(1位),PT(7位)
00 03:     RTP头部分  ,序号
00 00    38 40       RTP头部分  ,时间戳(此时间戳与上一时间戳差值为3600  =90000/25)
00 00 00 0a:     RTP头部分  ,ssrc
7c   :FU_INDICATOR(由于数据长度大于每包发送的长度(1400)此处就是拆包发送需要加上 FU_INDICATOR 
81:FU_HEADER  由于数据长度大于每包发送的长度(1400)此处就是拆包发送需要加上   FU_HEADER      
b8 00 00 ac 5e 04 45 0a c6 a2 39 。。。。       :RBSP

再看第五个NALU 
(来自h264文件数据分析)  00 00 00 01 61 E2 31 42 B7 08 4D 8E A3 48 39 B6。。。共4424字节
此数据00 00 00 01是h264的起始码 61开始往后就是NALU数据 其中61是NALU头(5表示此NALU  的type  是IDR) 后面的全是载荷数据   RBSP    

抓包工具显示: 80 60 00 11 00 00 46 50 00 00 00 0a 7c 81 e2 31 42 b7 08 4d 8e a3 48 39 b6 。。。
80:RTP头部分,包含 V(2位),P(1位),,X(1位),CC(5位)
60:   RTP头部分  ,M(1位),PT(7位)
00 11:     RTP头部分  ,序号
00 00      46 50         RTP头部分  ,时间戳(此时间戳与上一时间戳差值为3600  =90000/25)
00 00 00 0a:     RTP头部分  ,ssrc
7c   :FU_INDICATOR(由于数据长度大于每包发送的长度(1400)此处就是拆包发送需要加上   FU_INDICATOR  
81:FU_HEADER   (由于数据长度大于每包发送的长度(1400)此处就是拆包发送需要加上     FU_HEADER      
 e2 31 42 b7 08 4d 8e a3 48 39 b6 。。。     :RBSP
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ww506772362

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值