之前写过一篇文章,分析了h264使用rtp进行封包的格式介绍:RTP封装h264。但里面好像没有把拆分以及一些需要注意的情况说清楚,因此这里做补充,也作为自己的备忘(自己记性好像不太好)。

  1. 关于时间戳,需要注意的是h264的采样率为90000HZ,因此时间戳的单位为1(秒)/90000,因此如果当前视频帧率为25fps,那时间戳间隔或者说增量应该为3600,如果帧率为30fps,则增量为3000,以此类推。
  2. 关于h264拆包,按照FU-A方式说明:
    1)第一个FU-A包的FU indicator:F应该为当前NALU头的F,而NRI应该为当前NALU头的NRI,Type则等于28,表明它是FU-A包。FU header生成方法:S = 1,E = 0,R = 0,Type则等于NALU头中的Type。
    2)后续的N个FU-A包的FU indicator和第一个是完全一样的,如果不是最后一个包,则FU header应该为:S = 0,E = 0,R = 0,Type等于NALU头中的Type。
    3)最后一个FU-A包FU header应该为:S = 0,E = 1,R = 0,Type等于NALU头中的Type。

    因此总结就是:同一个NALU分包厚的FU indicator头是完全一致的,FU header只有S以及E位有区别,分别标记开始和结束,它们的RTP分包的序列号应该是依次递增的,并且它们的时间戳必须一致,而负载数据为NALU包去掉1个字节的NALU头后对剩余数据的拆分,这点很关键,你可以认为NALU头被拆分成了FU indicator和FU header,所以不再需要1字节的NALU头了。

  3. 关于SPS以及PPS,配置帧的传输我采用了先发SPS,再发送PPS,并使用同样的时间戳,或者按照正常时间戳增量再或者组包发送的形式处理貌似都可以,看播放器怎么解码了,另外提一下,如果我们使用vlc进行播放的话,可以在sdp文件中设置SPS以及PPS,这样就可以不用发送它们了。
  4. 使用VLC播放时,sdp文件中的分包模式选项:packetization-mode=1,否则有问题。另外sdp里面设置的编码type必须和rtp包中的一致。

rtp h264注意点(FU-A分包方式说明)相关推荐

  1. FU-A分包方式,以及从RTP包里面得到H.264数据和AAC数据的方法

    From: http://www.cnweblog.com/fly2700/archive/2012/02/23/319718.html RFC3984是H.264的baseline码流在RTP方式下 ...

  2. 关于Rtp封包方式之一的 FU-A分包方式

    RFC3984是H.264的baseline码流在RTP方式下传输的规范,这里只讨论FU-A分包方式,因为工作上刚刚用到,就记下来. FU_A一种分片封包的方式,就是将一个过大的NALU 单元封装成多 ...

  3. rtp h264打包和解包

    1.学习思路 在了解rtp对h264数据的打包之前,需要对rtp.h264的一些基本概念有一个初步的了解,然后再使用rtp对h264的打包解包做解析 2.rtp认知 实时传送协议(Real-time ...

  4. Android开源项目分包方式学习(eoe、oschina、github)

    2019独角兽企业重金招聘Python工程师标准>>> 总感觉Android中关于分包的文章很少,或者几乎可以说没有.但是合理地分包,又可以使整个项目模块化,减少包与包之间的依赖,让 ...

  5. netty开发tcp服务器最好不要用分隔符DelimiterBasedFrameDecoder这种分包方式

    我们都知道,tcp通讯属于流传输,对于上面承载的业务协议栈是不做分包处理的,所以大量客户端给服务器发送数据,就会有黏包现象,所以必须分包,反之,服务器给客户端发数据,也会黏包. netty提供了很多d ...

  6. RTP H264 NAL

    H264 采用了多种错误恢复及适合网络传输的NAL特点来使用各种实时视频传输. (1)参数集:序列参数集和图像参数集 序列参数集包括一个图像序列的所有信息,即两个IDR图像间的所有图像信息 图像参数集 ...

  7. 实现对rtp H264码流的组帧

    rtp打包h264,包含了三种类型的包: 一个rtp包携带了一帧数据(single) 多个rtp包携带了一帧数据(FU-A) 一个rtp包携带了多帧数据(STAP-A) 在实际应用中绝大部分采用的是前 ...

  8. 抓包分析rtsp\rtp\h264

    一.rtsp分析 rtsp是通过tcp传输的,过滤数据包,分析如下: 追踪tcp流,可以得到如下: //tcp.port == 1234过滤得到: OPTIONS rtsp://127.0.0.1:1 ...

  9. RTP协议全解(H264码流和PS流)

    1 视频编码的原理 1.1 一个图像或者一个视频序列进行压缩,产生码流. 对图像的处理即是:帧内预测编码 其预测值P,是由已编码的图像做参考,经运动补偿得到的.预测图像P和当前帧Fn相减,得到两图像的 ...

  10. RTP协议解析和H264码流提取

    一. h264基础概念 SODB: 数据比特串-->最原始的编码数据 RBSP: 原始字节序列载荷-->在SODB的后面填加了结尾比特(RBSP trailing bits 一个bit&q ...

最新文章

  1. 局域网指定 IP 地址后无法上网的问题
  2. 超有趣的几个Linux小命令
  3. python将元组转换为列表_使用python将元组转换成列表,并替换其中元素
  4. java面试宝典有用么_常见的Java面试题汇总
  5. java任务poer_java-Powermock-模拟超级方法调用
  6. 猎鹰spacex_SpaceX:简单,美观的界面是未来
  7. chengxuyuan
  8. [Leedcode][JAVA][第50题][Pow(x, n)][快速幂][分治][转换类型]
  9. mysql event使用,用MySQL的Event设置定时任务执行sql语句 | 老疯子
  10. Eclipse Maven 编译错误 Dynamic Web Module 3.0 requires Java 1.6 or newer 解决方法
  11. centos7和centos6 开机 运行级别详解和设置
  12. IDEA中将WEB-INF\lib下的Jar包添加到项目中
  13. anaconda安装完怎么打开_录像机怎么样安装在机柜上,看完就明白
  14. 计算机主板复位电路的组成,主板复位电路图解 - 主板知识
  15. pulsar client jar包选择-shaded 还是original
  16. r语言赋值为na_R语言中特殊值NaN、Inf 、NA、NULL
  17. Android生物认证Biometric 四十行代码轻松实现面部识别、指纹认证
  18. 四旋翼飞行器室内编队飞行项目整理
  19. python示例--下载mysql数据库中数据--excel表格,合并表格
  20. in unnamed module of loader

热门文章

  1. titanium开发教程-04-05从rows打开window
  2. 使用数据库引擎优化顾问添加建议索引
  3. day-15 磁盘挂载 磁盘格式化
  4. python 利用urllib2通过指定网页访问url,并捕获内容
  5. Qt--将Qt 动态链接生成的exe及依赖dll打包方法
  6. 本地管理表空间(LMT)
  7. Windows下编译redis
  8. day4:单用户及救援模式及互相登录
  9. Oracle中将小数转换成字符丢零.截取小数.除数为零解决法
  10. chrome配置文件校验初始化隐含參数的逆向