音视频开发一:音视频基础概念

基础概念

音视频通用的基本概念有码率、时长,而不同音视频有不同的封装格式、编码协议。其中视频关键参数有分辨率、帧率、画质、旋转角度、像素格式,而音频关键参数有采样率、声道数、声道布局、音质、采样数、采样位数、帧时长。接下来与大家详细探讨

音频

声音介绍

声音是一种物理现象。物体振动时产生声波通过空气传到人们的耳膜经过大脑的反射被感知为声音。

声音有频率和振幅的特征,频率对应于时间轴线,振幅对应于电平轴线。

声音以波的形式振动(震动)传播,声音作为一种波,频率在20 Hz~20 kHz之间的声音是可以被人耳识别的。

种类

按照频率分类: 频率低于20Hz的声波称为次声波; 频率在 20Hz~20kHz的声波称为可闻声; 频率在 20kHz~1GHz的声波称为超声波; 频率大于1GHz的声波称为特超声或微波超声

音质

声音的质量,经过编码压缩后的音频信号保真度,由音量、音高(音频)和音色组成。 **音量:**音频的强度,指的是发出物体的振动的幅度。相同频率,振幅越大,声音越大。

音高(音频): 声音的音调,即音频频率或每秒变化次数。

音色: 音频泛音,又称为音品,不同声音表现在波形方面与众不同的特性。

声音存储的发展

谈到录音,不得不谈到爱迪生发明的现代录音设备的鼻祖:留声机。

留音机 最初是1877年伟大的世界发明大王爱迪生发明的,在一次调试话筒时因为听力不好,爱迪生用一根针来检验传话膜的震动,不料针接触到话膜后随着声音的强弱变化产生一种有规律的颤动,而这一现象就成了他发明的灵感。

因为我们都知道,发送和接受是两个相对应的过程。说话的快慢高低能使短针发生相应的不同颤动,那么反过来,这种颤动也能发出原来的说话声音,可以将声波变换成金属针的震动,然后将波形刻录在圆筒形腊管的锡箔上。当针再一次沿着刻录的轨迹行进时,便可以重新发出留下的声音。于是他就用这一原理制作出了他的第一台留音机。

随着历史的发展慢慢经过了 : 机械录音(以留声机、机械唱片为代表)----- 光学录音(以电影胶片为代表)----- 磁性录音(以磁带录音为代表)等模拟录音方式,直到二十世纪七、八十年代逐渐开始进入了数字录音(数字音频)的时代。

采样频率

采样频率,也称为采样速度或者采样率,定义了单位时间内从连续信号中提取并组成离散信号的采样个数,它用赫兹(Hz)来表示,样率越高,声音的还原越真实。采样频率的倒数是采样周期或者叫作采样时间,它是采样之间的时间间隔。通俗的讲采样频率是指计算机单位时间内能够采集多少个信号样本。 根据奈奎斯特定理:当采样频率大于信号中最高频率的2倍时,采样后的数字信号能够完整保留原始信号的信息。由于人能够听到的最大频率是20khz,所以采样的频率要大于40khz。

信号频率

这个就是信号重复的频率:y=sin(2*f0*pi*t);这个f0就是信号的物理频率。

声道

声道:指声音在录制或播放时,在不同空间位置采集或回放的相互独立音频信号。声道数指在录音时的音源数量或者在播放时的扬声器数量不同声道数对应不同声道布局。常见的声道布局有单声道(mono)、立体声道(stereo)、四声环绕、5.1声道。

不同空间位置采集如下图所示:

左前 - Front Left 、右前 - Front Right、中置 - Center、LFE - Low Frequency Effect、左侧 - Side Left、 右侧 - Side Right、左后 - Back Left、右后 - Back Right。

声道布局

  • 单声道:只有一个声道,优点数据量小,amr_nb和amr_wb默认为单声道,缺点是缺乏对声音位置定位。

  • 立体声道:一般为两个声道,由左声道、右声道组成,改善对声音位置定位的状况。

  • 四声环绕:由前左、前右、后左、后右组成,形成立体环绕。4.1声道是在四声环绕基础上,增加一个低音。

  • 5.1声道:在4.1基础上,增加一个中场声道,杜比AC3就是采用5.1声道,也就是影院宣传的杜比音效。

音帧

音频帧的概念没有视频帧那么清晰,几乎所有视频编码格式都可以简单的认为一帧就是编码后的一副图像,而音频帧会因编码格式的不同而不同。不同的编码格式,每秒的采取的帧数量是不同的。

帧时长

帧数的倒数。

采样数

也就是帧大小,每帧的采样数量。它的值是固定的。在FFmpeg的AVFrame中,定义为nb_samples。

采样位数

即每个采样占用多少位。在RIFF(Resource Interchange File Format)资源交换文件格式有个字段bits_per_sample表示采样位数,在FFmpeg也是用这个字段表示采样位数。采样占用的位数越大,活命量化的值也就越大,声音的音量范围就越大。

存储空间

计算公式为:(采样频率采样位数声道数)/8*时间(秒)。假设采样率为44.1k,声道数为2,采样位数为16。那么,每秒所占存储空间字节数=44100 * 2 * 16 / 8=176.4k。

码流(比特率)

码率,又叫比特率,单位时间内传输的数据量,原始音频数据1秒钟的数据量为(采样率) * (位深度)* (声道数),单位一般为kbps(千位每秒)。需要注意的是,这里b代表bit,而不是byte。

计算公式:平均码率(kbps)=文件大小(kb) * 8/时间(s)。动态码率(kbps)=每秒传输数据量(kb) * 8。

码流越大,图像或声音传输的数据就越多,画面或声音就越清晰逼真,但同时也会占用更大的带宽和存储空间。因此,码流大小要根据实际需求和资源限制进行控制和调整,不能盲目追求码流越大或越小。

采样格式

音频的采样格式分为大端存储和小端存储。按照符号划分有:有符号与无符号。按照类型划分有:整型与浮点型。按照存储位数划分有:8位、16位、32位、64位,都是8的倍数。在FFmpeg的AVSampleFormat枚举如下:

enum AVSampleFormat {
    
    
    AV_SAMPLE_FMT_NONE = -1,
    AV_SAMPLE_FMT_U8,          // unsigned 8 bits
    AV_SAMPLE_FMT_S16,         // signed 16 bits
    AV_SAMPLE_FMT_S32,         // signed 32 bits
    AV_SAMPLE_FMT_FLT,         // float
    AV_SAMPLE_FMT_DBL,         // double
 
    AV_SAMPLE_FMT_U8P,         // unsigned 8 bits, planar
    AV_SAMPLE_FMT_S16P,        // signed 16 bits, planar
    AV_SAMPLE_FMT_S32P,        // signed 32 bits, planar
    AV_SAMPLE_FMT_FLTP,        // float, planar
    AV_SAMPLE_FMT_DBLP,        // double, planar
    AV_SAMPLE_FMT_S64,         // signed 64 bits
    AV_SAMPLE_FMT_S64P,        // signed 64 bits, planar
 
    AV_SAMPLE_FMT_NB           // Number of sample formats
};

音频编码(音频压缩)

PCM

连续变化经的模拟信号经过采样、量化和编码产生的数字信号,就是PCM(Pulse-code modulation),即脉冲编码调制。这种电的数字信号称为数字基带信号。经过AudioRecord和MediaRecorder采集的数据就是PCM数据。纯的音频数据,没有任何的格式。它被称为无损编码,也就是模拟信号转成数字信号不压缩,只转换,就是经过话筒录音后直接得到的未经压缩的数据流,对于音频来说,CD就是采用PCM编码。

PCM(脉冲编码调制)是一种模拟信号的数字化方法,PCM编码就是这个方法中的数字音频编码方式。PCM编码是最原始的音频编码,其他编码都是在它基础上再次编码和压缩的。

压缩和编码并不是一个概念。

压缩是一种通过移除或优化数据中的冗余和不必要的信息,从而减小数据所占用的存储容量或传输带宽的过程。

编码是则是一种将数据转换为更简单的表示形式以便于存储、传输或处理的过程。例如PCM编码就是一种将模拟音频信号以数字形式表示的编码方式。

PCM文件是以PCM编码方式存储音频的文件,是未经压缩的原始数字音频文件,通常称为PCM裸流/音频裸数据/raw data。常用文件扩展名是.pcm和.raw,通常它们是不能直接播放的。PCM裸流经过重新编码,封装(见下节)后,比如变为 .wav格式,就可以正常播放了。

音频编码的作用: 将音频采样数据(PCM 等)压缩成音频码流,从而降低音频的数据量。 常用的音频编码方式有以下几种:

(1)MP3

MP3,英文全称 MPEG-1 or MPEG-2 Audio Layer III,是曾经非常流行的一种数字音频编码和有损压缩格式,它被设计来大幅降低音频数据量。它是在 1991 年,由位于德国埃尔朗根的研究组织 Fraunhofer-Gesellschaft 的一组工程师发明和标准化的。MP3 的普及,曾对音乐产业造成极大的冲击与影响。

(2)AAC

AAC,英文全称 Advanced Audio Coding,是由 Fraunhofer IIS、杜比实验室、AT&TSony 等公司共同开发,在 1997 年推出的基于 MPEG-2 的音频编码技术。2000 年,MPEG-4 标准出现后,AAC 重新集成了其特性,加入了 SBR 技术和 PS 技术,为了区别于传统的 MPEG-2 AAC 又称为 MPEG-4 AACAACMP3 有更高的压缩比,同样大小的音频文件,AAC 的音质更高。

(3)WMA

WMA,英文全称 Windows Media Audio,由微软公司开发的一种数字音频压缩格式,本身包括有损和无损压缩格式。

音频编码的作用: 将音频采样数据(PCM 等)压缩成音频码流,从而降低音频的数据量。

音频压缩,主要压缩了哪些东西:

​ 音频压缩技术是在保证信号在听觉方面不产生失真的前提下,对音频数据信号进行尽可能大的压缩。

​ 压缩的主要方法是去除采集到音频冗余信息。所谓冗余信息包括人耳听觉范围外的音频信号以及被遮蔽掉的音频信号。

​ 信号的遮蔽可以分为频域遮蔽时域遮蔽

频域遮蔽效应就是,频率很相似的话,在一定的频率范围内,声音大的就会遮蔽声音小的。图中遮蔽源黑线覆盖了虚线指向的被遮蔽的声音,原因就是频率相似,但是声音小于遮蔽源的声音。所以被遮蔽了。

时域遮蔽效应,超出遮蔽时间的范围外,就被遮蔽了。

在听到某个强烈的声音后,听觉系统可能会暂时屏蔽掉某段时间内较弱的声音,导致这些声音在听觉系统内无法被处理和辨别。

时域遮蔽效应,超出遮蔽时间的范围外,就被遮蔽了。

音频解码

音频帧和视频帧处理的工艺都是类似的,差异之处就是音频采用的编码方式为AAC、MP3等,处理出来的基础单元为PCM(视频的基础单元YUV)

封装格式

音频的封装格式,与视频封装格式类似,由特定格式头+媒体信息+音频轨数据组成。常见的封装格式有:mp3、m4a、ogg、amr、wma、wav、flac、aac、ape等

视频

连续的图象变化每秒超过24帧(Frame)画面以上时,根据视觉暂留原理,人眼无法辨别单幅的静态画面,看上去是平滑连续的视觉效果,这样连续的画面叫做视频。

视频的基本单元是图像。既然是图像,图像中的颜色都是RGB,显示器怎么显示呢,在显示器上,是通过电子枪打在屏幕的红、绿、蓝三色发光极上来产生色彩的,显示器的每个像素点背后都有三个发光二极管组成,

如果用放大镜来看的话,屏幕如下图。每个像素点背后都有三个发光二极管组成。

电脑屏幕上的所有颜色,都由这红色绿色蓝色三种色光按照不同的比例混合而成的。一组红色,绿色,蓝色就是一个最小的显示单位。屏幕上的任何一个颜色都可以由一组RGB值来记录和表达。

显像管内电子枪射出的三个电子束,它们分别射到屏上显示出红、绿、蓝色的荧光点上,通过分别控制三个电子束的强度,可以改变三色荧光点的亮度。由于这些色点很小又靠得很近,人眼无法分辨开来,看到的是三个色点的复合.即合成的颜色。

即不仅图片有像素数据, 显示器屏幕显示也有通过像素数据显示的。图像和屏幕至今的关系,就是图像是数据,屏幕是显示设备,图像数据经过驱动程序让屏幕显示图像。

视频像素

视频像素数据作用: 保存了屏幕上每个像素点的像素值。

格式: 常见的像素格式有 RGB24,RGB32,YUV420P,YUV422P,YUV444P 等。压缩编码中一般使用的是 YUV 格式的像素数据,最常见的格式为 YUV420P

特点:视频像素数据体积很大,一个 **1** 小时电影的RGB24格式的数据体积为: 3600 * 25 * 1920 * 1080 * 3 = 559.872GBytePS:这里帧率为 25Hz,取样精度 8bit,3通道数,分辨率为1920*1080)。

码流(码率,比特率)

码率,又叫比特率,单位时间内传输的数据量。计算公式为:(帧率)* (图像分辨率)* (通道数)* (采样精度)* 1s。

存储空间

视频码率 * 时间。

分辨率

分辨率又称为解析度,分辨率越高,像素越多,图像越清晰。分为图像分辨率和显示分辨率。

  • 图像分辨率: 由视频的宽高组成,表示形式宽x高,常见的视频分辨率有480P、720P、1080P、2K(2048x1080/2160x1440)、4K(4096x2160/3840x2160) 比如一个视频的分辨率为1280_720,就代表了这个视频的水平方向有1280个像素,垂直方向有720个像素。 720P 指的是1280_720分辨率,一般这样的视频被业界称为“高清” 1080P 指的是1920*1080分辨率,也就是我们常说的“全高清” 2K分辨率比较特殊,其水平方向像素达到2000以上就能说是2K分辨率

  • 显示分辨率:描述屏幕分辨率的单位是ppi(pixel per inch,每英寸的像素数)。 其实计算方法很简单,用长跟高的像素数计算出对角方向的像素数(直角三角形,计算方法就不用多说了),然后再用对角的像素数除以屏幕尺寸(对象线)就是ppi了。

常见分辨率以及显示模式如下:

位深

表示了计算机度量声音波形幅度(音量)的精度,就是通常所说的声卡的位数。

又称为位深(BitDepth),每个像素点存储信息的位数。数越多,表示得就越精细,声音质量自然就越好,而数据量也会成倍增大。我们在音频采样过程中常用的位宽是 8bit 或者 16bit。Android的Bitmap常见的有ALPHA_8、RGB_565、ARGB_4444、ARGB_8888。

是影像中常用的最小单位,相当于电影中胶片的每一格镜头,一帧就是一副静止的画面,连续的帧就形成了视频。

帧率

  • 视频帧率:测量显示帧数的量度,单位为每秒显示帧数(FPS,全称为Frame Per Second)。一般视频帧率为24fps,P制(PAL,德国提出,中国、印度、巴基斯坦等国家使用)为25fps,也就是每帧显示40ms,N制(NTSC,美国标准委员会提出,美国、日本、韩国等国家使用)为30fps。有些超高帧率的视频达到60fps。
  • 显示帧率:**以帧为单位的位图图像连续出现在显示器的频率,也称为刷新速率。**Android设备刷新率一般为60Hz,也就是帧率为60fps,每帧为16ms,超过16ms能给人的肉眼带来延迟卡顿的感觉。做性能优化方面,也就是保证从测量、布局、绘制、上传指令、与GPU交换缓冲区等一系列动作在16ms完成。Android11支持120Hz的更高帧率,一般为对帧率要求极高的应用场景,比如互动游戏。

不同帧率下的体验:https://frames-per-second.appspot.com

场频

场频又称为_刷新频率_,即显示器的垂直扫描频率,指显示器每秒所能显示的图象次数,单位为赫兹(Hz)。

一般在60-100Hz左右 场频也叫屏幕刷新频率,指屏幕在每秒钟内更新的次数。

人眼睛的视觉暂留约为每秒16-24次左右,因此只要以每秒30次或更短的时间间隔来更新屏幕画面,就可以骗过人的眼睛,让我们以为画面没有变过。

实际上每秒30次的屏幕刷新率所产生的闪烁现象我们的眼睛仍然能够察觉从而产生疲劳的感觉。所以屏幕的场频越高,画面越稳定,使用者越感觉舒适。

另外:荧光屏上涂的是中短余辉荧光材料,如果电子枪不进行不断的反复“点亮”、“熄灭”荧光点 的话,就会导致图像变化时前面图像的残影滞留在屏幕上。

一般屏幕刷新率场频在每秒75次以上人眼就完全觉察不到了,所以建议场频设定在75Hz-85Hz之间,这足以满足一般使用者的需求了。

场频越大,图象刷新的次数越多,图象显示的闪烁就越小,画面质量越高。注意,这里的所谓“刷新次数”和我们通常在描述游戏速度时常说的“画面帧数”是两个截然不同的概念。后者指经电脑处理的动态图像每秒钟显示显像管电子枪的扫描频率。

颜色模型

光和颜色

光是一种肉眼可以看见(接受)的电磁波可见光谱。在科学上的定义,光有时候是指所有的电磁波。

人类肉眼所能看到的可见光只是整个电磁波谱的一部分。电磁波之可见光谱范围大约为390~760nm(1nm=10-9m=0.000000001m)。 在这个世界如果没有光,我们就无法生存。

颜色是视觉系统对可见光的感知结果,研究表明人的视网膜有对红、绿、蓝颜色敏感程度不同的三种锥体细胞。红、绿和蓝三种锥体细胞对不同频率的光的感知程度不同,对不同亮度的感知程度也不同。

自然界中的任何一种颜色都可以由R,G,B 这 3 种颜色值之和来确定,以这三种颜色为基色构成一个RGB 颜色空间。 颜色=R(红色的百分比)+G(绿色的百分比)+B(蓝色的百分比),只要其中一种不是由其它两种颜色生成,可以选择不同的三基色构造不同的颜色空间。

RGB颜色编码

4624551-cd5ce515e4596c75.png

我们开发场景中使用最多的应该是 RGB 模型,R、G、B 分别代表了红、绿、蓝,这三种颜色称为三原色,将它们以不同的比例相加,可以产生任何颜色。

RGB的格式:

RGB16 RGB24 RGB32 等等这些到底格式有什么区别呢 ?

总的来说区别就是一个像素所使用的位数不同,显示出来的色彩丰富度不同,位数越大,色彩越丰富。

计算机使用的都是二进制,因此所有的数量级都是建立在二进制的基础上的,无论是存储空间,运算速度,文件大小等等。 如果要表示颜色,每一个对应的颜色都需要一个二进制代码来表示,

使用8位的二进制, 可以表示 2^8 (2的8次方) , 也就是256种色彩。 使用16位的二进制,可以表示 2^16 (2 的16次方),也就是65536种色彩。 使用24位的二进制,可以表示 2^24 (2的24次方) ,也就是16,777,216种色彩。

一般称24bit以上的色彩为真彩色,当然还有采用30bit、36bit、42bit的。使用的色彩代码越长,同样像素的文件的文件大小也就相应的成幂次级增长。使用超过16位以上的色彩文件在普通的显示器,尤其是液晶显示器上看不出任何区别,原因是液晶显示器本身不能显示出那么多的色彩。但是对于彩色印刷就非常有用,因为油墨的点非常的细,同时由于印刷尺幅的放大原因, 更大的文件可以在印刷的时候呈现出更细腻的层次和细节。

YUV(YCbCr)颜色编码

相关实验表明,人眼对亮度敏感而对色度不敏感。因而可以将亮度信息和色度信息分离,以这样“欺骗”人的眼睛的手段来节省空间,从而适合于图像处理领域,从而提高压缩效率。

因此有了YUV。YUV是另一种表示颜色的方式。 YUV也称为YCbCr。YUV 颜色编码采用的是 明亮度 Y色度 UV 来指定像素的颜色。 “Y”表示明亮度(LuminanceLuma),也就是灰阶值。 “U”“V” 表示的则是色度(ChrominanceChroma),作用是描述影像色调和饱和度。

YUV是一种亮度与色度分离的颜色空间表示方法。因此,与 RGB 相比,YUV 在响应亮度信息方面更为准确,同时去除了人眼感知中色度无关的特性,使得相对于 RGB,它具有更高的压缩性能,更适合于视频传输或存储。

YCbCr 颜色空间是 YUV 的国际标准化变种,在数字电视和图像压缩(比如JPEG)方面都有应用。 YCbCr 其实是 YUV 经过缩放和偏移的翻版。其中 YYUV 中的 Y 含义一致, CbCr 同样都指色彩, 只是在表示方法上不同而已。在 YUV 家族中, YCbCr 是在计算机系统中应用最多的成员,其应用领域很广泛,JPEGMPEG 均采用此格式。一般人们所讲的 YUV 大多是指YCbCr。 **Cb(相当于U ,blue):**反映的是 RGB 输入信号蓝色部分与 RGB 信号亮度值之间的差异。 **Cr(相当于V ,red):**反映了 RGB 输入信号红色部分与 RGB 信号亮度值之间的差异。

\\ 公式 并不是固定的, 不同的RGB的格式,转换的的公式也是不一样的
\\ RGB 转换为 Ycbcr 公式

Y = 0.257*R+0.564*G+0.098*B+16
Cb = -0.148*R-0.291*G+0.439*B+128
Cr = 0.439*R-0.368*G-0.071*B+128

\\ Ycbcr 转换为 RGB 公式

R = 1.164*(Y-16)+1.596*(Cr-128)
G = 1.164*(Y-16)-0.392*(Cb-128)-0.813*(Cr-128)
B = 1.164*(Y-16)+2.017*(Cb-128)



使用YUV的优点有两个: 一、彩色YUV图像转黑白YUV图像。 如果只有Y信号分量而没有U、V分量,那么这样表示的图像就是黑白灰度图像。因此可兼容老式黑白电视。

二、YUV是数据总尺寸小于RGB格式。 因为YUV,可以增加亮度的信号,减少颜色的信号,用于减少体积。

YUV采样格式
为节省带宽,大多数 YUV 格式平均使用的每像素位数都少于24位。
主要的采样格式有YUV4:2:0(使用最多)、YUV4:2:1、YUV4:2:2和YUV4:4:4。4:2:0表示每4个像素有4个亮度分量,2个色度分量 (YYYYCbCr)。4:2:2表示每4个像素有4个亮度分量,4个色度分量(YYYYCbCrCbCr)、4:4:4表示全像素点阵(YYYYCbCrCbCrCbCrCbCr)。

4:4:4 表示完全取样。和 RGB 大小一样

4:2:2 表示 2:1 的水平取样,垂直完全采样。比 RGB 小了三分之一。

4:2:0 表示 2:1 的水平取样,垂直 2:1 采样,可以看出是每存储两行 Y,才会存储半行 U 和半行 V。比 RGB 小了二分之一

YUV存储格式

先存储个整张图像的 Y 信息,然后存储 U 信息,最后存储 V 信息。但存储的比例是不同的,可以看出是每存储两行 Y,才会存储半行 U 和半行 V,内存相对RGB少了二分之一,而且这种先存Y再存UV,就比较兼容,如果是黑白显示,只读取Y的信息就可以。

另外还要注意不同的打包格式:

画质

画质:画面质量,由清晰度、锐度、解析度、色彩纯度、色彩平衡等指标构成。

清晰度:指图像细节纹理及其边界的清晰程度。

锐度:反应图像平面清晰程度,以及图像边缘的锐利程度。

解析度:指像素点的数量,与分辨率对应,分辨率越高,解析度越高。

色彩纯度:指色彩的鲜艳程度。所有色彩都是三原色组成,其他颜色都是三原色混合而成,理论上可以混合出256种颜色。原色的纯度最高。色彩纯度是指原色在色彩中的百分比。

色彩平衡:用来控制图像的色彩分布,使得图像整体达到色彩平衡。

色域与HDR

色域:指某种表色模式所能表达的颜色构成的范围区域,色域空间越大,所能表现的颜色越多。

HDR:High Danamic Range,高动态范围,比普通图像提供更多动态范围和图像细节,能够更好反应真实环境的视觉效果。颜色值经过归一化后,范围一般是[0,1]。而HDR可以表达超出1的颜色值,拥有更大的颜色范围。

旋转角度

旋转角度:视频的YUV储存方向。一般的视频旋转角度是0°,对应的是横屏显示。后置摄像头竖屏拍的视频,旋转角度为90°,对应的是竖屏显示。Android中可以通过MediaMetaDataRetriever获取旋转角度。

时长

视频所有图像播放所需要的时间称为视频时长。计算公式:时长(s)=帧数x每帧时长=帧数x(1/帧率)。假设一个视频帧数为1000,帧率为25fps,那么时长为40s。

视频构成

一个完整的视频文件是由音频和视频2部分组成的,而视音频又是由封装格式和编码格式构成,我们在表面看到的如AVI、RMVB、MKV、WMV、MP4、3GP、FLV等文件其实只能算是一种封装标准,一个外壳

外壳里面核心还有一层是编码文件,编码文件经过封装后,才成为我们现在看到的.mp4 .avi等视频。如H.264、mpeg-4等就是视频编码格式, MP3、AAC等就是音频编码格式。

**例如:**将一个H.264视频编码文件和一个MP3视频编码文件按AVI封装标准封装以后,就得到一个AVI后缀的视频文件,这个就是我们常见的AVI视频文件了。

部分技术先进的容器还可以同时封装多个视频、音频编码文件,甚至同时封装进字幕,如MKV封装格式。MKV文件可以做到一个文件包括多语种发音、多语种字幕,适合不同人的需要。

封装格式

我们经常看到的视频格式mp4、avi、mkv。在技术概念中,叫『视频封装格式』,简称视频格式,里面包含了封装视频文件所需要的视频信息、音频信息和相关的配置信息(比如:视频和音频的关联信息、如何解码等等)。它就是一个外壳,相当于一个容器。常见的封装格式有:mp4、mkv、webm、avi、3gp、mov、wmv、flv、mpeg、asf、rmvb等。

(1)封装格式(也叫容器)就是将已经编码压缩好的视频轨和音频轨按照一定的格式放到一个文件中,也就是说仅仅是一个外壳,可以把它当成一个放视频轨和音频轨的文件夹也可以。 (2)通俗点说视频轨相当于饭,而音频轨相当于菜,封装格式就是一个碗,或者一个锅,用来盛放饭菜的容器。 (3)封装格式和专利是有关系的,关系到推出封装格式的公司的盈利。 (4)有了封装格式,才能把字幕,配音,音频和视频组合起来。

举例MKV格式的封装:

下面详细介绍几个视频的封装格式

  • 1、AVI 格式,对应的文件格式为 .avi,全称 Audio Video Interleaved,是由 Microsoft 公司于 1992 年推出。这种视频格式的优点是图像质量好,无损 AVI 可保存 alpha 通道。

    特点:兼容性好、跨平台支持、恒定帧率,体积大、容错性差,不是流媒体,已经过时

  • 2、DV-AVI 格式,对应的文件格式为 .avi,英文全称 Digital Video Format,是由索尼、松下、JVC 等多家厂商联合提出的一种家用数字视频格式。常见的数码摄像机就是使用这种格式记录视频数据的。它可以通过电脑的 IEEE 1394 端口传输视频数据到电脑,也可以将电脑中编辑好的的视频数据回录到数码摄像机中。

  • 3、WMV 格式,对应的文件格式是 .wmv、.asf,英文全称 Windows Media Video,是微软推出的一种采用独立编码方式并且可以直接在网上实时观看视频节目的文件压缩格式。在同等视频质量下,WMV 格式的文件可以边下载边播放,因此很适合在网上播放和传输。

  • 4、MPEG 格式,对应的文件格式有 .mpg、.mpeg、.mpe、.dat、.vob、.asf、.3gp、.mp4 等等,英文全称 Moving Picture Experts Group,是由运动图像专家组制定的视频格式,该专家组于 1988 年组建,专门负责视频和音频标准制定,其成员都是视频、音频以及系统领域的技术专家。MPEG 格式目前有三个压缩标准,分别是 **MPEG-1、MPEG-2、**和 MPEG-4MPEG-4 是现在用的比较多的视频封装格式,它为了播放流式媒体的高质量视频而专门设计的,以求使用最少的数据获得最佳的图像质量。

  • 5、Matroska 格式,对应的文件格式是 .mkv,Matroska 是一种新的视频封装格式,它可将多种不同编码的视频及 16 条以上不同格式的音频和不同语言的字幕流封装到一个 Matroska Media 文件当中。

    特点:支持多音轨、软字幕、流式传输、强大的兼容性, 能够在一个文件中容纳无限数量的视频、音频、图片或字幕轨道,任何视频编码文件都可以放入MKV 。

  • 6、Real Video 格式,对应的文件格式是 .rm、.rmvb,是 Real Networks 公司所制定的音频视频压缩规范称为 Real Media。用户可以使用 RealPlayer 根据不同的网络传输速率制定出不同的压缩比率,从而实现在低速率的网络上进行影像数据实时传送和播放。

  • 7、QuickTime File Format 格式,对应的文件格式是 .mov,是 Apple 公司开发的一种视频格式,默认的播放器是苹果的 QuickTime。这种封装格式具有较高的压缩比率和较完美的视频清晰度等特点,并可以保存 alpha 通道。

  • 8、Flash Video 格式,对应的文件格式是 .flv,是由 Adobe Flash 延伸出来的一种网络视频封装格式。这种格式被很多视频网站所采用。

视频编码

**采集的原始音视频信号体积都非常大,里面有很多相同的、眼看不到的、耳听不到的内容,**比如,如果视频不经过压缩编码的话,体积通常是非常大的,一部电影可能就要上百G的空间。

专业的来说,视频编码也就是文件当中的视频所采用的压缩算法,视频编码的主要作用是将视频像素数据(RGB,YUV等)压缩成为视频码流,从而降低视频的数据量。

编码格式

将视频像素数据(RGB,YUV 等)压缩成视频码流,从而降低视频的数据量,编码格式指的是对封装格式中视频流数据的压缩编码方式的一种描述。视频不进行压缩的话,体积会非常大。

视频压缩,主要压缩了哪些东西:

空间冗余:图像相邻像素之间有较强的相关性 时间冗余:视频序列的相邻图像之间内容相似 编码冗余:不同像素值出现的概率不同 视觉冗余:人的视觉系统对某些细节不敏感 知识冗余:规律性的结构可由先验知识和背景知识得到

常见的视频编解码方式有,H.26X(H.264,H.265等),MPEG等。这里需要留意到,不同的视频封装格式,其实里面使用的编解码方式很多是可能一样的,封装格式是不同厂家的包装。这就好比,多个雪糕厂家生产一个口味的雪糕,外面的包装都是不一样的。

(1)、H.26X 系列

H.26X 由**国际电传视讯联盟远程通信标准化组织(ITU-T)**主导,包括 H.261、H.262、H.263、H.264、H.265

  • H.261,主要用于老的视频会议和视频电话系统。是第一个使用的数字视频压缩标准。实质上说,之后的所有的标准视频编解码器都是基于它设计的。
  • H.262,等同于 MPEG-2 第二部分,使用在 DVD、SVCD 和大多数数字视频广播系统和有线分布系统中。
  • H.263,主要用于视频会议、视频电话和网络视频相关产品。在对逐行扫描的视频源进行压缩的方面,H.263 比它之前的视频编码标准在性能上有了较大的提升。尤其是在低码率端,它可以在保证一定质量的前提下大大的节约码率。
  • H.264,等同于 MPEG-4 第十部分,也被称为高级视频编码(Advanced Video Coding,简称 AVC),是一种视频压缩标准,一种被广泛使用的高精度视频的录制、压缩和发布格式。该标准引入了一系列新的能够大大提高压缩性能的技术,并能够同时在高码率端和低码率端大大超越以前的诸标准。
  • H.265,被称为高效率视频编码(High Efficiency Video Coding,简称 HEVC)是一种视频压缩标准,是 H.264 的继任者。HEVC 被认为不仅提升图像质量,同时也能达到 H.264 两倍的压缩率(等同于同样画面质量下比特率减少了 50%),可支持 4K 分辨率甚至到超高画质电视,最高分辨率可达到 8192×43208K 分辨率),这是目前发展的趋势

(2)、MPEG 系列

MPEG 系列由**国际标准组织机构(ISO)**下属的运动图象专家组(MPEG)开发。

  • MPEG-1 第二部分,主要使用在 VCD 上,有些在线视频也使用这种格式。该编解码器的质量大致上和原有的 VHS 录像带相当。
  • MPEG-2 第二部分,等同于 H.262,使用在 DVDSVCD 和大多数数字视频广播系统和有线分布系统中。
  • MPEG-4 第二部分,可以使用在网络传输、广播和媒体存储上。比起 MPEG-2 第二部分和第一版的 H.263,它的压缩性能有所提高。
  • MPEG-4 第十部分,等同于 H.264,是这两个编码组织合作诞生的标准。
视频解码

有了编码,当然也需要有解码。 因为压缩(编码)过的内容无法直接使用,使用(观看)时必须解压缩,还原为原始的信号(比如视频中某个点的颜色等),这就是“解码“或者”解压缩“。

视频解码的过程,就是将以某种编码方式(H264)进行编码的二进制数据,解码成YUV图片的过程,即“H.264->YUV”。 最广泛使用的莫过于FFmpeg这个开源的编解码套件,里面广泛涵盖了常见的编解码方式,还有封装格式(视频格式)。

猜你喜欢

转载自blog.csdn.net/qq_38056514/article/details/129848139