H264/AVC 数据的传输

RBSP、NALU和packet封装(encapsulation)

264的语法元素被封装到Raw Byte Sequence Payload(RBSP)中,然后被封装到Network Abstraction Layer Units(NALU)中。

下图显示了已编码slice、SPS和PPS的语法元素序列。语法元素的形式是长度不同的二进制码流,长度可能是字节的整数倍,也可能不是字节的整数倍。必要时会在RBSP末尾添加一系列0,以保证长度是字节的整数倍。

RBSP封装在NALU中,通过(1)添加一个1字节的NALU头和(2)必要时插入Emulation Prevention字节,以防止Start Code Prefix出现在NALU body中。当与Start Code Prefix相同的3字节碰巧出现在语法元素序列中时,编码器就会插入一个Emulation Prevention(二进制为00000011)。Emulation Prevention由解码器检测和删除,并防止解码器在序列中发现错误的Start Code。

NALU可以使用一种协议来传输,该协议中NALU构成一个数据包的有效负载,或者在一个字节流中以一系列字节顺序地发送NALU。在字节流的情况下,每个NALU前面都有一个Start Code Prefix,Start Code Prefix是一个不能出现在NALU内部的3-byte pattern。解码器可以搜索起Start Code Prefix来寻找NALU之间的边界。从传输包流中提取可解码的264码流需要Start Code Prefix地插入,以便提取的码流可以被解码。


传输协议

264没有为编码的可视数据定义传输机制。然而,有许多可能地解决方案用于传输,例如下面两个,分别是MPEG-2系统和Real-Time协议:

MPEG-2系统:MPEG-2标准的第1部分定义了将音频、视频和相关信息多路复用成适于传输的流(程序流或传输流)的两种方法。每个数据源或elementary stream(编码的视频或音频序列)被packet成PES(Packetized Elementary Stream),来自不同elementary stream的PES包被复用在一起形成一个程序流Program Stream,通常携带一组音频/视频数据(如单个电视频道),或形成一个包含多个通道的传输流Transport Stream。传输流增加了Reed-Solomon和convolutional error control编码,因此提供了传输错误的保护。Timing and synchronisation is supported by a system of clock references and time stamps in the sequence of packets。

 

Real-Time Protocol:RTP 是一种分组协议,可与 UDP(User Datagram Protocol) 结合使用,以使用 IP(Internet Protocol) 跨网络传输实时多媒体数据。在实时应用中,UDP比TCP(Transmission Control Protocol)更可取,因为它提供了跨IP网络的低延迟传输。但是,它没有丢包恢复或同步机制。 RTP 为实时数据定义了一个数据包结构,其中包括1)一个类型标识符,用于表示生成数据的CODEC的类型,2)一个序列号,对于给包进行重排序是必不可少的,3)一个时间戳,是确定解码数据的正确显示时间所必需的。通过 RTP 传输编码的视听流包括将每个elementary stream打包成一系列 RTP 数据包,将它们进行交错并使用 UDP 作为基本传输协议在 IP网络上传输它们。RTP 有效载荷格式(payload formats)是为各种标准视频和音频编解码器定义的,包括 H.264。H.264 的 NAL 结构在设计时考虑了有效的分包,因为每个 NALU 都可以放置在自己的 RTP 包中。


File format

将单个压缩视频序列存储在文件中是很常见的,只需将编码码流映射到文件中的字节序列即可。 然而,存储和回放组合的视听数据需要更复杂的文件结构,尤其是当存储的数据要通过网络流传输或文件需要存储多个视听对象时。 H.264 文件格式旨在存储 H.264 视频数据。 它源自 ISO Base Media File Format,后者又基于 Apple Computer 的 QuickTime 格式。

在 ISO 媒体文件格式中,诸如264 视频序列或音频流之类的编码码流被存储为轨道(track),表示编码数据项或样本的序列,例如带有时间戳的编码 VOP 或编码切片(图 8.32)。 文件格式处理诸如1)轨道之间的同步、2)随机访问索引和3)文件在网络传输机制上的传输等问题。


Coding and transport issues

人们早就认识到,有必要在视频通信系统中考虑到实际的运输问题,每个标准中的若干工具都是专门为解决这些问题而设计的。

Scaling a delivered video stream to support decoders with different capabilities and/or delivery bitrates is addressed by the Scalable Video Coding extension of H.264/AVC。

延迟是视频会议等双向实时应用程序的一个特殊问题。诸如 B-slices 之类的工具,编码图像使用时间顺序的早期和后期图像的运动补偿预测,可以提高压缩效率,但通常会在编码和解码“链”中引入几个帧周期的延迟,这可能是不可接受的 低延迟的双向应用程序。 延迟要求也会对速率控制算法产生影响,因为用于平滑速率变化的后编码器和预解码器缓冲区会导致延迟增加。

每个标准都包含许多有助于处理传输错误的特性。误码是电路交换信道的一个特征;分组交换网络往往会遭受分组丢失,因为分组中的位错误通常会导致分组在传输过程中被丢弃。错误可能对解码质量产生严重影响,因为错误的影响可能会在空间上传播,使当前解码帧内的区域失真,并且在时间上传播到从错误帧在时间上预测的连续解码帧。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值