2.ffmpeg:H.264视频码流解析——视频编码

本文初衷是博主学习所用,学习雷神文章整理成自己笔记,希望雷神理解

参考雷神:视音频数据处理入门:H.264视频码流解析

前一篇文章是对视音频原始数据的处理,本文开始介绍视音频码流的处理——视频编码

1.原理

H.264原始码流(又称为“裸流”)是由一个一个的NALU组成的。他们的结构如下图所示。

其中每个NALU之间通过startcode(起始码)进行分隔,起始码分成两种:0x000001(3Byte)或者0x00000001(4Byte)。如果NALU对应的Slice为一帧的开始就用0x00000001,否则就用0x000001。
H.264码流解析的步骤就是首先从码流中搜索0x000001和0x00000001,分离出NALU;然后再分析NALU的各个字段。本文的程序即实现了上述的两个步骤。

2.视频编码

视频编码的主要作用是将视频像素数据(RGB,YUV等)压缩成为视频码流,从而降低视频的数据量。如果视频不经过压缩编码的话,体积通常是非常大的,一部电影可能就要上百G的空间。视频编码是视音频技术中最重要的技术之一。视频码流的数据量占了视音频总数据量的绝大部分。高效率的视频编码在同等的码率下,可以获得更高的视频质量。

视频编码的简单原理可以参考:视频压缩编码和音频压缩编码的基本原理

注:视频编码技术在整个视音频技术中应该是最复杂的技术。如果没有基础的话,可以先买一些书看一下原理,比如说《现代电视原理》《数字电视广播原理与应用》(本科的课本)中的部分章节。

注:H.264仍然是主流编码标准

3.深入了解视频编码

参考雷神:视音频数据处理入门:H.264视频码流解析

猜你喜欢

转载自blog.csdn.net/weixin_40535588/article/details/89948568