字节流格式(Annex B)和RTP格式流浅析
来源:互联网 发布:async await js 编辑:程序博客网 时间:2024/05/24 00:29
RTP
H.264协议只规定了字节流格式,没有规定 RTP 格式。可能也是因为这个原因,JM 的 RTP 格式没有被用到任何场合场合中,成为了摆设。下图中的 RTP 格式是h.264乐园的firstime从 JM86 中分析出来的。实际包交换网络中必须按照 RFC3984 将 NALU 数据封装为 RTP 包,而不能使用 JM 的 RTP 格式。
下面引自“QUESTIONMARK”的博客
下面说明3字节起始码和4字节起始码。
以下和leading_zero_8bits、trailing_zero_8bits已无关系,忘掉。
根据B.1节,可以看到所谓的4字节起始码是(zero_byte + 3字节起始码)。那么看zero_byte的说明,就可以明白zero_byte什么时候出现,也就能明白什么时候出现4字节起始码:
1. SPS、PPS nalu是4字节起始码;
2. Access Unit的首个nalu是4字节起始码(参见7.4.1.2.3)。
这里举个例子说明,用JM可以生成这样一段码流(不要使用JM8.6,它在这部分与标准不符),这个码流可以见本楼附件:
I0(slice0)是序列第一帧(I帧)的第一个slice,是当前Access Unit的首个nalu,所以是4字节头。而I0(slice1)表示第一帧的第二个slice,所以是3字节头。P1(slice0) 、P1(slice1)同理。
总结:
1 附录 B字节流在一个byte_stream_nal_unit的前后可能出现若干个0x00,仅用作填充之用。这个不常见。
2 4字节头只出现在SPS、PPS和7.4.1.2.3规定的Access Unit的首个nalu。其余情况都是3字节头
一共有两种起始码:3字节的0x000001和4字节的0x00000001
3字节的0x000001只有一种场合下使用,就是一个完整的帧被编为多个slice的时候,包含这些slice的nalu使用3字节起始码。其余场合都是4字节的。
- 字节流格式(Annex B)和RTP格式流浅析
- 字节流格式(Annex B)和RTP格式流浅析
- 字节流格式(Annex B)和RTP格式流浅析
- H.264协议:Annex B格式和AVCC格式
- H.264流媒体协议格式中的Annex B格式和AVCC格式深度解析
- H.264流媒体协议格式中的Annex B格式和AVCC格式深度解析
- H.264 码流格式: Annex-B, AVCC与extradata详解
- 码流格式: Annex-B, AVCC(H.264)与HVCC(H.265), extradata详解
- RTP格式图 NNEXB格式和RTP格式
- ffmpeg ffplay rtp推流命令和sdp格式
- Annex B 基础编码规则-标签长度值数据对象格式 155
- H264码流的两种形式:Annex B和AVCC——非常详细的翻译
- 字节流的格式|国际标准的组成部分
- 用于MPEG-4视听流的RTP负载格式
- 用于MPEG-4视听流的RTP负载格式
- H.264码流的RTP打包格式
- 用于MPEG-4视听流的RTP负载格式
- rfc3016:用于MPEG-4视听流的RTP负载格式
- user agent stylesheet 处理
- struts2-core-2.0.14更新到2.3.15
- ubuntu 下ssh xrdp ftp jdk等软件安装
- DEDE去掉会员登录及注册验证码的方法
- WIN7(64)下memcached安装使用
- 字节流格式(Annex B)和RTP格式流浅析
- 深入了解字符集和编码
- Qt VTK ITK安装与测试(一) Qt的安装与测试
- 动态添加控件
- Groovy
- GroupName of radiobutton doesn't work in gridview
- Replace关键字的妙用
- GSL快速傅里叶变换FFT
- error while loading shared libraries: xxx.so"错误的原因和解决办法