音视频(入门篇)

概述:最近公司有个业务需求,需要将海康的摄像头对接过来,主要包含回放,实时预览等,因为一些原因,只能自己实现(没有通过第三方api实现),之前也没接触过这方面,就开始慢慢研究主要是音视频方面。

一.音视频简介(音视频=音频+视频)

当下,音视频、流媒体已经无处不在,直播已经火了几年,在后续的时间里面,人们聊天已经不仅仅满足与文字、而是更多的在于“类面对面”交流,能够实时感知对方的表情、动作。
​ 流媒体是什么?流媒体就是指采用流式传输技术在网络上连续实时播放的媒体格式,如音频、视频或多媒体文件。流媒体技术也称流式媒体技术。那么音视频就是流媒体的核心。
那么什么是音视频呢?

​ 一个完整的视频文件,包括音频、视频和基础元信息,我们常见的视频文件如mp4、flv、avi等视频文件,就是一个容器,封装了音频和视频且都是通过一些特定的编码算法,进行编码压缩过后的。
H264、Xvid等就是视频编码格式,MP3、AAC等就是音频编码格式。例如:将一个H264视频编码文件和一个AAC音频编码文件按flv封装标准封装以后,就得到一个flv后缀的视频文件,其实视频就是一张张图片,通过时间间隔很小的连续展示出来。人们就觉得画面中的事物在动。
这里有个问题是为什么需要编码?

1.未经编码的数据数字视频的数据量很大
2.存储困难
3.传输困难

例如:一张大小为1080*720的图像,帧率25FPS,一个像素用12位表示,那么可以作如下计算:

一帧图像的数据大小1080*720*12/8/1024 = 1139KB 约1MB
一秒图像的数据大小1MB*25 = 25MB
一分钟图像的数据大小25MB*60 = 1500MB 约1.6GB

完整的计算:

1080*720*12*25*60 = 1399680000bit

1399680000/8/1024/1024 = 1668MB

从上面的计算就可以看出未经编码的视频数据是有多么的庞大。所以必须经过编码压缩之后,视频数据才方便存储,方便在网络上传输,当然有编码,自然也有解码。

二.视频基础概念

帧(Frame)

简单的理解帧就是为视频或者动画中的每一张画面,而视频和动画特效就是由无数张画面组合而成,每一张画面都是一帧。

帧数(Frames)

帧数其实就是为帧生成数量的简称,可以解释为静止画面的数量,其实就是帧的数量

帧率(Frame Rate)

帧率(Frame rate) = 帧数(Frames)/时间(Time),单位为帧每秒(f/s, frames per second, fps)。

游戏中都有这个属于,大都指的是每秒显示的图像帧数,或者说图形处理器每秒更新的次数
>=24fps 电影基本这个帧率
<30fps 游戏卡顿
>60fps 流畅
>75fps 肉眼不容易察觉出变化

刷新率

屏幕每秒画面被刷新的次数,分为垂直刷新率和水平刷新率,一般我们提到的都是指垂直刷新率,以赫兹(Hz)为单位,刷新率越高,图像就越稳定,图像显示就越自然清晰。
目前, 大多数显示器根据其设定按 30Hz、 60Hz、 120Hz 或者 144Hz 的频率进行刷新。 而其中最常见的刷新频率是 60 Hz。 这样做是为了继承以前电视机刷新频率为 60Hz 的设定。

屏幕刷新率和帧数(FPS)有什么区别

1、本质不同
帧数(FPS),一般就是所说一秒钟内画面刷新的速度,60fps就是一秒钟出现60张画面。
刷新率,一般都是出现在显示器/屏幕上,比如高刷新率显示器144Hz的,就是显示器的物理刷新速度上限时1秒钟144张。

2、决定因素不同
帧数(FPS):对帧数起到决定性的是电脑中的显卡,显卡性能越强,帧数当然就越高啦,然后画面就越流畅。
刷新率:是由显示器决定,需要显示器的面板、驱动电脑支持

明白了它们两个是什么意思之后,可能有些人还是有些问题。如果帧率只有30fps,但是使用的却是60Hz的显示器,会出现什么情况呢?这时,我们就会感到画面卡顿,因为显示器可以显示60张每秒,而帧率只有30fps,那么显示器就会复用同一张画面。还有一个情况是,如果帧率有120fps,但是显示器只支持60Hz,那么这120fps的帧率只能是白搭,因为显示器只能显示60张每秒,也就是说浪费了60fps。
这样来看,它们的区别就很明显了。帧率fps是由显卡的性能来决定,而刷新率Hz则是显示器的物理条件。也就是说,想要真正的体验高帧率,必须把显示器和显卡同步,让它们同时达到144Hz和144fps,这样才能体验高帧率的快感。

分辨率

视频、图片、屏幕的画面大小或尺寸。

码率/比特率

码率的定义是视频文件体积除以时间,单位一般是Kbps(Kbit/s)或者Mbps(Mbit/s)。注意,1B(Byte)=8b(bit)。所以一个24分钟,900MB的视频:
体积:900MB = 900MByte = 7200Mbit
时间:24min = 1440s
码率:7200/1440  = 5000 Kbps = 5Mbps

当视频文件的时间基本相同的时候(比如现在一集大概是24分钟),码率和体积基本上是等价的,都是用来描述视频大小的参数。长度分辨率都相同的文件,体积不同,实际上就是码率不同。

码率也可以解读为单位时间内,用来记录视频的数据总量。码率越高的视频,意味着用来记录视频的数据量越多,潜在的解读就是视频可以拥有更好的质量。注意,仅仅是潜在,高码率不一定等于高画质。

图像

图像则是由像素(px)构成的。一张图像有多少像素,称为这个图像的分辨率

像素点(Pixel)

“像素”(Pixel) 是由 Picture(图像) 和 Element(元素)这两个单词的字母所组成的,是用来计算数码影像的一种单位,如同摄影的相片一样,数码影像也具有连续性的浓淡阶调,我们若把影像放大数倍,会发现这些连续色调其实是由许多色彩相近的小方点所组成,这些小方点就是构成影像的最小单位“像素”。

RGB和YUV

yuv: y是亮度分量, uv是色度分量
rgb: 分别是不同的颜色分量, 红色绿色蓝色
YUV占用带宽小,适合传输和存储;而显示系统更适合用RGB。

既然YUV更有优势,为什么还要保留RGB呢?
因为目前人类发明的所有彩色的输入输出设备,本质上都只支持RGB数据。哪怕设备允许YUV的输入输出,那也是经过内部的数据转换而间接支持。

主码流和子码流

高清网络摄像机产品编码器都会产生两个编码格式,称为主码流和子码流。
这就叫双码流技术。目的是用于解决监控录像的本地存储和网络传输的图像的质量问题。
主码流和子码流的概念是海康威视首家提出并应用于安防产品中的,这样既能解决网络带宽不好的情况可以远程预览流畅画面,又能不影响本地录像的清晰度。
主码流一般码流较大,清晰度高,占用的带宽也就高。子码流,在主码流的图像环境下降低了图像格式,清晰度较主码流要低,占用带宽小。主码流一般用于存储,子码流用于网传。主码流本地存储,子码流适用于图像在低带宽网络上传输。
我们的流媒体服务器能够将监控视频网页无插件直播,在这其中就充当了取流和分发的作用,一边是从摄像机取流,一边是转换协议之后进行分发。视频直播点播流媒体服务器可以进行视频直播/录像/回放,在取流的时候可以根据自己的需要来取流,可以是主码流,也可以是子码流。

三.视频清晰度

在码率一定的情况下,分辨率与清晰度成反比关系:分辨率越高,图像越不清晰,分辨率越低,图像越清晰。
在分辨率一定的情况下,码率与清晰度成正比关系,码率越高,图像越清晰;码率越低,图像越不清晰。

四. CPU & GPU

CPU:中央处理器(英文全名:Central Processing Unit),包括运算器(算术逻辑运算单元,ALU,Arithmetic Logic Unit)和高速缓冲存储器(Cache)及实现它们之间联系的数据(Data)、控制及状态的总线(Bus)。

GPU:图形处理器(英语全名:Graphics Processing Unit),专为执行复杂的数学和几何计算而设计的,拥有2D或3D图形加速功能。

GPU相比于CPU,更强大的2D、3D图形计算能力,可以让CPU从图形处理的任务中解放出来,执行其他更多的系统任务,这样可以大大提高计算机的整体性能。

硬件加速

硬件加速(Hardware acceleration)就是利用硬件模块来替代软件算法以充分利用硬件所固有的快速特性。硬件加速通常比软件算法的效率要高。

将2D、3D图形计算相关工作交给GPU处理,从而释放CPU的压力,也是属于硬件加速的一种。

硬解和软解

硬解和上面的硬件加速对应,即使用硬件模块来解析视频、音频文件等,而软解即是用CPU去计算解析。

五.视频编码格式(Container format)

1. MPEG:(Moving Picture Experts Group, ISO旗下的组织)

MPEG是Moving Picture Experts Group的简称。这个名字本来的含义是指一个研究视频和音频编码标准的“动态图像专家组”组织,成立于1988年,致力开发视频、音频的压缩编码技术。

版本用途
MPEG - 1VCD
MPEG - 2DVD、数字有线电视信号
MPEG - 4(第二部分)视频电话、网络传输、广播和媒体存储
2. H.26X : ITU-T VCEG(Visual Coding Experts Group,国际电联旗下的标准化组织)制定
版本用于
H.261老的视频会议和视频电话产品
H.262DVD、数字有线电视信号(与MPEG共同制定,与MPEG-2完全一致)
H.263视频会议、视频电话和网络视频
H.264高精度视频的录制、压缩和发布格式(与MPEG-4第十部分完全一致),当前主流
H.265H.264的两倍之压缩率,可支持4K分辨率甚至到超高画质电视,最高分辨率可达到8192×4320(8K分辨率)
3. H.264

当前主流的编码格式是H.264,这是由ITU-T VCEG和MPEG共同制定的标准,MPEG - 4第十部分内容也是H.264。

六. 音频编码格式

WAV:因其文件扩展名为wav,微软和IBM联合开发的标准,数据本身的格式为PCM或压缩型,属于无损格式。

MP3 : MP3是一种音频压缩技术,其全称是动态影像专家压缩标准音频层面3(Moving Picture Experts Group Audio Layer III),简称为MP3。压缩比4:1~10:1之间。

AAC:Advanced Audio Coding, 出现于1997年,由Fraunhofer IIS、杜比实验室、AT&T、Sony、Nokia等公司共同开发。AAC压缩比通常为18:1。相比MP3,采用更高效的编码算法,音质更佳,文件更小。

Opus:Opus格式是一个开放格式,使用上没有任何专利或限制,比MP3、AAC、HE-AAC等常见格式,有更低的延迟和更好的声音压缩率。2012年7月2日,Opus被IETF批准用于标准化。

视频封装格式 & 视频编码格式

封装格式是提供了一个容器,用于存放视频、音频以及其他配置信息,而编码格式是指对视频画面内容进行压缩的一种标准

七. 流协议

流协议是干什么的,简单说,接收端可以正确的使用这些音视频编码数据,不仅仅需要原始的编码码流,还需要一些额外的信息
1.如:当前视频码流是哪种视频编码标准,是 H264、H265、VP8、VP9 还是 AV1 呢?我们知道每种不同的编码标准,其码流解析的方式肯定也不一样。这个就需要通过 协议告知接收端
2.当我们知道编码标准了,我们就可以正确地解析码流,并解码出图像了。但是我们又会遇到一个新的问题,那就是按照什么速度播放视频呢?这个也需要 协议告知接收端。这就是 协议的一个重要的作用,即告知接收端一些必要的信息。当然 协议的作用不止这些,它其实在网络带宽预测和拥塞控制的时候也发挥出了至关重要的作用。

八. H.264编码介绍(主流)

IPB帧

  • I帧:帧内编码帧(intra picture),采用帧内压缩去掉空间冗余信息。
  • P帧:前向预测编码帧(predictive-frame),通过将图像序列中前面已经编码帧的时间冗余信息来压缩传输数据量的编码图像。参考前面的I帧或者P帧。
  • B帧:双向预测内插编码帧(bi-directional interpolated prediction frame),既考虑源图像序列前面的已编码帧,又顾及源图像序列后面的已编码帧之间的冗余信息,来压缩传输数据量的编码图像,也称为双向编码帧。参考前面一个的I帧或者P帧及其后面的一个P帧。

PTS和DTS

  • DTS(Decoding Time Stamp)是标识读入内存中bit流在什么时候开始送入解码器中进行解码。也就是解码顺序的时间戳。
  • PTS(Presentation Time Stamp)用于度量解码后的视频帧什么时候被显示出来。在没有B帧的情况下,DTS和PTS的输出顺序是一样的,一旦存在B帧,PTS和DTS则会不同。也就是显示顺序的时间戳。

GOP

即Group of picture(图像组),指两个I帧之间的距离,Reference(参考周期)指两个P帧之间的距离。

一个I帧所占用的字节数大于一个P帧,一个P帧所占用的字节数大于一个B帧。所以在码率不变的前提下,GOP值越大,P、B帧的数量会越多,平均每个I、P、B帧所占用的字节数就越多,也就更容易获取较好的图像质量;Reference越大,B帧的数量越多,同理也更容易获得较好的图像质量。

简而言之:

  • 字节大小:I > P > B
  • 解码顺序:I -> P -> B

本期文章就到这里了,我是梦辰,可以微信搜一搜「 梦辰的架构笔记 」公众号,保证是干货!!!欢迎大家和我交流。|

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值