H.264简介¶
更新日期: 2019-10-14
- 2019-10-14 创建文档
H.264,又称为MPEG-4第10部分,高级视频编码是一种面向块,基于运动补偿的视频编码标准。 到2014年,它已经成为高精度视频录制、压缩和发布的最常用格式之一。
优势:
- 1)网络亲和性,即可适用于各种传输网络
- 2)高的视频压缩比
名词解释¶
视频编码层(VCL, Video Coding Layer)¶
负责有效表示视频数据的内容
网络提取层(NAL, Network Abstraction Layer)¶
负责格式化数据并提供头信息,以保证数据适合各种信道和存储介质上的传输。 以将NAL当成是一个专作封装(packaging)的模块,用来将VCL压缩过的bitstream封装成适当大小的封包单位(NAL-unit),并在NAL-unit Header中的NAL-unit Type字段记载此封包的型式,每种型式分别对应到VCL中不同的编解码工具。
场和帧¶
视频的一场或一帧可用来产生一个编码图像。在电视中,为减少大面积闪烁现象,把一帧分成两个隔行的场。
宏块¶
一个编码图像通常划分成若干宏块组成,一个宏块由一个16×16亮度像素和附加的一个8×8 Cb和一个8×8 Cr彩色像素块组成。
片(slice)¶
每个图象中,若干宏块被排列成片的形式。片分为I片、B片、P片和其他一些片。 I片只包含I宏块,P片可包含P和I宏块,而B片可包含B和I宏块。 I宏块利用从当前片中已解码的像素作为参考进行帧内预测。 P宏块利用前面已编码图象作为参考图象进行帧内预测。 B宏块则利用双向的参考图象(前一帧和后一帧)进行帧内预测。
片的目的是为了限制误码的扩散和传输,使编码片相互间是独立的。 某片的预测不能以其它片中的宏块为参考图像,这样某一片中的预测误差才不会传播到其它片中去。
H264结构中,一个视频图像编码后的数据叫做一帧,一帧由一个片(slice)或多个片组成, 一个片由一个或多个宏块(MB)组成,一个宏块由16x16的yuv数据组成。宏块作为H264编码的基本单位。
H.264码流中SPS PPS¶
SPS Sequence Paramater Set,又称作序列参数集。 PPS Picture Paramater Set,图像参数集。
在H.264的SPS中,第一个字节表示profile_idc
,根据profile_idc
的值可以确定码流符合哪一种档次。
private static final byte[] SPS = {(byte) 0x00, (byte) 0x00, (byte) 0x01, (byte) 0x67, (byte) 0x4d, (byte) 0x00, (byte) 0x1f, (byte) 0xe5, (byte) 0x40, (byte) 0x28, (byte) 0x02, (byte) 0xd8, (byte) 0x80};
private static final byte[] PPS = {(byte) 0x00, (byte) 0x00, (byte) 0x01, (byte) 0x68, (byte) 0xee, (byte) 0x31, (byte) 0x12};
参考
- H.264码流中SPS PPS详解 - DaveBobo
- H.264先进的视频编译码标准 - CSDN
- RGB、YUV和YCbCr
- H264编码总结 - 简书
- 音视频技术总结 - leixiaohua1020 CSDN
本站说明
一起在知识的海洋里呛水吧。广告内容与本站无关。如果喜欢本站内容,欢迎投喂作者,谢谢支持服务器。如有疑问和建议,欢迎在下方评论~