文章目录

一、视频基础知识

1、分辨率

常见的分辨率1920*1080,它的意思是横向有1920个像素点,纵向有1080个像素点

  • HD 1280*720
  • Full HD 1920*1080
  • 2K 2560*1440

2、1080p和1080i

  • 1080p:逐行扫描(Progressive Scanning)
  • 1080i:隔行扫描(Interlace Scanning)

在显像管时代,CRT电视的画面是通过电子枪逐行扫描生成画面的,后来电视台为了增加清晰度,但是用户家里又没有做任何变化,所以带宽不够用,于是电视台就想到了隔行扫描的办法解决这个问题。

逐行扫描将一个画面称为一个场,隔行扫描则将一个画面啊划分为奇数场和偶数场,前一帧扫奇数场,后一帧扫偶数场,利用肉眼视觉暂留,实现流畅的动画效果。

隔行扫描相比逐行扫描带宽降低了一半,或者也可以理解为可以在相同的带宽下获得更高的清晰度。

题外话:隔行扫描对于行外人几乎是没有任何关系的,但是对于音视频开发者来说,隔行扫描在视频编码的时候会选错场序,所以在渲染视频的时候应该注意一下。


3、帧率

帧率:FPS(frame per second)每秒钟有多少帧画面


4、封装

封装是把音频、视频、字幕等不同的信息进行集中。

封装格式通俗来说就是你视频文件的后缀名,你可以把格式理解为一个大箱子,这个箱子可以装进视频所有的帧,也可以装进你的音频、媒体信息。等到播放的时候软件会打开这个箱子用正确的方式来播放你的视频。

常见的视频封装格式有MP4、FLV、AVI、MOV、3GP等,简称视频格式,也称为容器。


5、码率(bitrate)

数据速率:视频每秒所包含的数据量、信息量

码率直接决定了视频的大小,并且很大程度上也会影响视频的质量


6、H.264

1080、60fps的视频,一秒的视频有多大呢?

1920​​*​​​1080=2073600≈两百万,所以一幅1920​​*​​1080的画面有两百万个像素,每个像素算3个字节的话,意味着一帧就要占用5.7M的空间,60fps就意味着1秒的视频大小就有342M;

这个计算与我们的认知好像有分歧,1秒的视频怎么可能300多M,其实我们看到的视频都是经过压缩的,靠的就是H.264这样的编码标准。


对于H.264这样的现代编码格式,视频压缩是由 [帧内压缩][帧间压缩] 两种方式相结合的:

帧内压缩:帧内压缩就是把视频里的每一帧画面都压缩成JPEG这类有损图形,JPEG压缩的效率很高,对于视频里的每一帧都压缩成JPEG,就可以缩小90%的视频体积,这就是帧内压缩最基本的概念了。

JPEG压缩原理:人眼对明暗度比较敏感,对色度麻木(不太敏感),所以对明度尽量保留,对色度使劲压缩

帧间压缩:压缩成JPEG还是不够的,现代的视频中其实只有几帧是原生的jpeg图像,其他帧都是靠算法脑补出来的,意思就是说我们只需要记录关键帧,根本不需要记录中间的帧,这样就可以大大地节省了视频的占用空间,这就是帧间压缩就基本的概念了。

关键帧:画面变化比较大的帧

帧间压缩反映到H.264里就有了I帧、P帧、B帧的概念了

I帧:完整的关键帧。GOP:多少秒一个I帧

P帧:前向预测帧。

B帧:双向预测值。

原理详解:我们先把I帧分割成好多个​​8*8​​​或​​16*16​​的“宏块”,然后对I帧和它下一帧每个对应的宏块进行比较,如果发现前后两帧的宏块是有关联性的,有规律可循的,比如说可能有两个宏块是完全一样的,或者说只是细微的变了一个位置,这样我们就可以通过预测得出下一帧,这个预测得出的帧就是P帧(预测帧)。对于P帧里没有变化的宏块,直接照抄I帧就可以了;对于P帧里有变化的宏块,则比较前后的变化,记录下变化的信息,比如说这个宏块里的像素到底是变颜色了?还是运动了?还是怎样了,在编码的时候把这些变化记录下来,解码的时候再预测回去这就是P帧。它是在I帧的基础上预测出来的,它相比I帧可以节约一半以上的空间。B帧是双向预测帧,它是在I帧和P帧的基础上再进行预测,它不仅参考前面的帧,也参考后面的帧,它相比P帧有节省了一半以上的空间。


二、音频基础知识

1、采样率

视频有一个每秒钟采集多少张的概念,叫做视频的帧率;音频也有同样的概念,每秒钟采样数,叫做音频的采样率;
所谓采样率,是指:声音信号在“模拟信号–>数字信号”转换过程中单位时间内采样的次数,采样值是指每一次采样周期内声音模拟信号的积分值;

采样的过程简述:声音是模拟信号,可以理解为一条曲曲折折的曲线,如果采样率是100,然就将曲线划分为100份,然后绘制直方图,给每一份按比例折算成数字,取直方图每一份的中位数,这样就得到了数字信号,如下图所示:

音视频开发基础知识_采样率

人对频率的识别范围是20HZ - 20000HZ,如果每秒钟能对声音做20000个采样,回放时就足以满足人耳的需求,所以22050的采样频率是常用的,44100已经是CD音质了,超过48000的采样对人耳已经没有意义了,这和电影的每秒24帧图片的道理差不多。

  • ​44100HZ 16bit stereo​​:表示每秒钟有44100次采样,采样数据用16位(2字节)记录,双声道(立体声);
  • ​22050HZ 8bit mono​​:表示每秒钟有22050次采样,采样数据用8位(1字节)记录,单声道;
  • 当然也可以有16bit的单声道或8bit的立体声;

对于单声道文件,采样数据为八位的短整数;
对于双声道立体声文件,采样数据为十六位的整数,高八位(左声道)和低八位(右声道)分别代表两个声道;

每次采样数据记录的是振幅,采样精度取决于存储空间的大小:

  • 1 字节(也就是8bit),只能记录2^8(256)个数,也就是只能将振幅划分成256个等级;
  • 2 字节(也就是16bit),可以细到2^16(65536)个数,这已经是CD标准了;

2、PCM数据格式

PCM(Pulse Code Modulation)也被称为“脉码编码调制”。

PCM中的声音数据没有被压缩,如果是单声道的文件,采样数据按时间的先后顺序依次存入(它的基本组织单位是BYTE【8bit】或WORD【16bit】); 如果是双声道的文件,CIA杨数据按时间先后顺序交叉地存入,如下图示:

音视频开发基础知识_数据_02