前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >音视频基础(3):h264码流结构

音视频基础(3):h264码流结构

作者头像
用户6280468
发布2022-11-28 16:55:30
7170
发布2022-11-28 16:55:30
举报
文章被收录于专栏:txp玩Linuxtxp玩Linux

一.什么是H264压缩格式?

H.264,同时也是MPEG-4第十部分,是由ITU-T视频编码专家组(VCEG)和ISO/IEC动态图像专家组(MPEG)联合组成的联合视频组(JVT,Joint Video Team)提出的高度压缩数字视频编解码器标准。这个标准通常被称之为H.264/AVC(或者AVC/H.264或者H.264/MPEG-4 AVC或MPEG-4/H.264 AVC)而明确的说明它两方面的开发者。

二.H264有什么强大的地方:

低码率(Low Bit Rate):在同等图像质量下,采用H.264技术压缩后的数据量只有MPEG2的1/8,MPEG4的1/3 2.2.高质量的图像:H.264能提供连续、流畅的高质量图像 2.3.容错能力强:H.264提供了解决在不稳定网络环境下容易发生的丢包等错误的必要工具 2.4.网络适应性强:H.264提供了网络抽象层(Network Abstraction Layer),使得H.264的文件能容易地在不同网络上传输(例如互联网,CDMA,GPRS,WCDMA,CDMA2000等)。2.5.高压缩率,H.264的压缩比达到惊人的102∶1

其中2.5这一条是最重要的,因为其压缩比之高,它能够实时编码1920 * 1080 60FPS以上的视频。

三.H264码流组成部分

H264分层能够分成两层,一层是VCL层(视频编码层),另外一层是NAL层(网络提取层)。其中VCL层包含的是具体的H264视频内容,NALU的工作则是负责把网络视频流进行打包和传送。下面我们来重点看看NALU的结构(一般对于我们开发来说,VCL层不怎么需要去关心)。

SODB(String ofData Bits)数据比特串:最原始的编码数据,即VCL数据,没有任何附加数据。

RBSP(Raw ByteSequence Payload)原始字节序列载荷:在SODB的后面填加了结尾比特(RBSP trailing bits),一个bit“1”,若干bit “0”,以便字节对齐;

EBSP(EncapsulationByte Sequence Packets)扩展字节序列载荷:在RBSP基础上填加了仿校验字节(0X03)。它的原因是:在NALU加到Annexb上时,需要添加每组NALU之前的开始码StartCodePrefix,如果该NALU对应的slice为一帧的开始则用4位字节表示,ox00000001,否则用3位字节表示ox000001(是一帧的一部分)。解码器检测每个起始码,作为一个NAL的起始标识,当检测到下一个起始码时,当前NAL结束。对于NAL中数据出现0x000001或0x000000时,H.264引入了防止竞争机制,如果编码器遇到两个字节连续为0,就插入一个字节的0x03。解码时将0x03去掉,也称为脱壳操作。

通常来说,一个原始的H.264 NALU 单元常由 [StartCode] [NALU Header] [NALU Payload]。三部分组成,其中 Start Code 用于标示这是一个NALU 单元的开始,必须是"00 00 00 01" 或"00 00 01",具体的如下图:

如这张图所示,划红线的都是每一帧的NALU单元,如:00 00 00 01 06 05、00 00 00 01 67等都是NALU数据。

那H264的NALU数据有什么特殊的意义呢?我们来重点介绍一下:

00 00 00 01 06 05 SEI数据:是视频的附加增强信息,它包含了一些用户自定义的数据,如时间戳,字幕,弹幕等信息。SEI信息一般放在编码图像之前,很多时候SEI可以被忽略。

00 00 00 01 67 SPS数据:指的是序列参数集,它保存了一组编码视频序列的全局参数。编码视频序列指的是原始数据经过编码后组成的一系列序号集。

00 00 00 01 68 PPS数据:指的是图像参数集,主要用于保存图像序列集中一个或者多个独立的图像。一般情况下,配合SPS和PPS都是H264开头的两个NALU头。

00 00 00 01 65 IDR数据:IDR指的是H264的一帧完整的图像数据,也就是我们经常说的关键帧。

所以一个标准的H264码流结构:SEI+SPS+PPS+IDR

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-10-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 txp玩Linux 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
图像处理
图像处理基于腾讯云深度学习等人工智能技术,提供综合性的图像优化处理服务,包括图像质量评估、图像清晰度增强、图像智能裁剪等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档