音视频基础

音频基础

1 物理性质

声音是由物体振动产生,振动的物体称为声源,声音的本质是机械波,以介质是空气为例,物体振动都会引起空气有节奏的振动,使周围的空气产生疏密变化,形成疏密相间的纵波,由此就产生了声波,这种现象会一直延续到振动消失为止。
波的图像:

在这里插入图片描述

声音有三个属性:音量(响度),音色,音调,这些我们物理学中也学过。我们从波的角度来解析下,声波的振动幅度描述的是音量的高低;振动频率和音调有关,振动频率越快,听起来音调越高;音色不同的声音,声音的波形不同(即周期性变化的曲线不同)。

采集与量化

我们将物理界声音录制下来,传输或者播放等等,这些都是声音的数字化,我们把模拟信号数字化。我们通过几个概念来描述声音的数字化。

采样率

即声音单位时间内采集声音的次数,单位是Hz,比如我们采样率是44100Hz,即每秒采集声音44100次。我们每次采集获得的值是响度值,这样如果我们采集的次数越多,采集出来的整体数据就能越接近声波。这样就能还原生硬。

声道

指声音在录制或播放时在不同空间位置采集或回放的相互独立的音频信号,那么声道数也就是声音录制时的音源数量或回放时相应的扬声器数量。

量化位数

我们采集到了声音如何表示,这个步骤被称为量化,如果我们用16来表示,位即是bit,16位就是2字节,针对无符号来说,表示范围是[0, 65535], 即我们把声音的幅度分为65536份,从而能够表示一次采样的数值。

比特率

即1秒时间内的比特数目,它用于衡量音频数据单位时间内的容量大小。采样率,表示位数,采样声道数不同都会影响比特率的大小。
如果是裸流,以位数是16位(2字节)为例,单声道采集,44100的采样率,那么比特率就是(44100*2*1)字节。

编码格式

所谓编码,就是按照一定的格式记录采样和量化后的数字数据,比如顺序存储或压缩存储。

PCM(Pulse Code Modulation)

可以理解成裸流的存储格式,仅仅是顺序存储而没有压缩。

WAV

同样不会进行压缩,只是在PCM编码格式的数据前边加上头,分别用来描述PCM的采样率、声道数、数据格式等信息。
PCM与WAV是裸流,所以存储空间占用大。

MP3

声音经过压缩,具有不错的压缩比,音质在128Kbit/s以上表现还不错。大量软件和硬件都支持。

AAC

是新一代的音频有损压缩技术,主要应用于低码率场景的编码。

视频基础

图像表示

视频是由多张图片组成,每张图片称为视频的一帧,通常每秒钟视频有15~25帧,我们先来探究下图片如何表示。
图片是由多个像素点构成,假设手机分辨率是1280*720,说明每行有1280个像素点,每列有720个像素点,总共有1280*720个像素点。

RGB

一个像素点可以使用颜色分量RGB来表示,或者RGBA,或者BRGA等等,总之就是red,green,blue,alpha构成,每个分量通常来说占一个字节(8bit),假设分辨率为1280*720,用RGBA_8888来表示,那么这张图片的大小为1280*720*4字节 = 3.516M的大小

YUV

对于视频帧的裸数据表示,其实更多的是YUV数据格式的表示,相比较于RGB的表示方式,YUV占据更小的空间。
其中“Y”表示明亮度(Luminance或Luma),也称灰阶值;而“U”和“V”表示的则是色度(Chrominance或Chroma),用于指定像素点的颜色。采用YUV色彩空间,是因为它的亮度信号Y和色度信号U、V是分离的,只有Y信号的话,那么画面就是黑白的。
YUV常用有yuv444,yuv422,yuv420等几种方式来表示。前边三个字母分别对应着三个数字。


|Y1|Y2|Y3|Y4|

|Y5|Y6|Y7|Y8|


每个格子里边代表一个像素点,且每个像素点都单独占有一个Y分量

  • yuv444,每4个像素点,y,u,v的分量为1:1:1,每个像素点都是|yuv|
  • yuv422, 占比即为2:1:1,这里Y1和Y2共同使用一个U和一个V,第一,二个像素点可以表示为|y1u1v1|y2u1v1|,以此类推。
  • yuv420,这个不好理解,是Y与U及V的比例为2:1,可以理解为四个像素点共用U,V分量。公用的方式为如果第一行yuv比例为4:2:0,那么第二行就是4:0:2,我们可以表示为:

    |y1u1|y2u1|y3u2|y4u2|

    |y5v1|y6v1|y7v2|y8v2|


    既然公用了UV分量,那么只存储一遍就可以了。那么1280*720的图片用YUV格式存储就是:
    1280 * 720 * 1 + 1280 * 720 * 0.5 = 1.318MB比rgb格式节省了很多空间。

视频编码

视频的编码也是对整个视频进行压缩,节省空间,便于传输等。相较于音频数据,视频数据有极强的相关性,也就是说有大量的冗余信息,包括空间上的冗余信息和时间上的冗余信息。

  • 去除时间冗余的话可以使用不同帧之间信息互补来实现,通过先前的局部图像来预测、补偿当前的局部图像,减少帧序列之间的冗余信息
  • 去除空间冗余就是对一帧图像本身的压缩,比如说jpeg,png这个图像格式都是对完整图像进行压缩。

常见的视频编码方式有H264,mpeg,vp8等

视频编码格式和封装格式

初识音视频要区分封装格式和编码格式。
我们看到的视频文件的后缀名大多为 flv,mkv、mov、mp4 等扩展名都是封装格式,而H264,H265,aac,vp8等都是编码格式。

  • 封装格式,也叫容器的格式,容器即封装了音频,视频,字幕等。不同的封装格式封装内容的方式也不同。
  • 编码格式,指音视频中编码方式。

篇幅影响就到这里了😁

参考

《音视频开发进阶指南》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值