H.264/AVC 是 ITU-T 视频编码专家组(VCEG)和 ISO/IEC 动态图像专家组(MPEG )联合组成的联合视频组(JVT)共同努力制订的新一代视频编码标准。
它最大的优势是具有 很高的数据压缩比率,在同等图像质量的条件下,H.264 的压缩比
是 MPEG-2 的 2 倍以上,是 MPEG-4 的 1.5~2 倍。
同时,采用 视频编码层( (VCL) )和 网络提取层( (NAL ) )的分层设计,非常适用于流媒体技术进行实时传输。
H.264 打包:VCL(mp4格式), annexb附录B
基于 RTP 协议,对 H.264 视频进行流式打包传输,便可实现一个基本的流媒体服务器功能,同时利用开源播放器 VLC 作为接收端,就可构成一个完整的 H.264 视频传输系统。
H.264 基本流的结构
H.264 的基本流(elementary stream,ES)的结构分为两层,包括视频编码层(VCL)和网络适配层(NAL)。
视频编码层负责高效的视频内容表示,而网络适配层负责以网络所要求的恰当的方式对
数据进行打包和传送。引入 NAL 并使之与 VCL 分离带来的好处包括两方面:
(松耦合、高内聚)
使信号处理和网络传输分离,VCL 和 NAL 可以在不同的处理平台上实现;VCL 和 和 NAL 分离设计,使得在不同的网络环境内,网关不需要因为网络环境不同而对 VCL比特流进行重构和重编码。
H.264 的基本流由一系列 NALU (Network Abstraction Layer Unit )组成,不同的 NALU数据量各不相同。
H.264 草案指出,当数据流是储存在介质上时,在每个 NALU 前添加起始码0x000001,
用来指示一个 NALU 的起始和终止位置。
在这样的机制下,解码器在码流中检测起始码,作为一个 NALU 得起始标识,当检测到
下一个起始码时,当前 NALU 结束。每个 NALU 单元由一个字节的 NALU 头(NALU Header)和若干个字节的载荷数据(RBSP)组成。
H.264 流媒体传输系统框架