目前网络直播已经火了多年,本人也曾是游戏直播的忠实粉,一直非常看好这个行业。之前所在的公司部门也是做视频直播点播业务的,只可惜没摸到太多的门路,因为底层封装的核心技术我们是看不到的,仅仅在前端技术上算是入了门。最近不仅是从自己的兴趣上还是从公司的业务出发,都需要对视频知识有一个较为清楚的认识。
视频基础知识点
定义
视频其实就是连续的图像组成,当连续的图像变化每秒超过24帧(frame)画面以上时,由于视觉残留原理,看上去是平滑连续的视觉效果,这样连续的画面叫做视频。
属性
画面更新率
画面更新率也叫帧率,简单说就是一秒钟包含的图像数量,帧率越高,看起来画面就越连贯,最早期时只有每秒6~8张,到如今已经有100以上的量级。
扫描方式
(1)逐行扫描:指显示屏显示图像进行扫描时,从屏幕左上角的第一行开始逐行进行,整个图像扫描一次完成。
(2)隔行扫描:每一帧被分割为两场,通常是先扫描奇数行得到第一场,然后扫描偶数行得到第二场。两者互补成完整的画面。
区别:隔行扫描适用于早期带宽不足的情况,但是由于分两次扫描的,会出现闪烁的情况;而逐行扫描的画质会更优秀,画面会更平滑。
模拟信号与数字信号
这里还要提一下模拟信号与数字信号
(1)模拟信号是连续变化的物理量,如温度,湿度,电压等,形式上通常表现为正余弦曲线,甚至是其他无规律的曲线,但是其变化是连续的。
(2)而数字信号是离散的,不连续的信号。在计算机中,用0,1这种二进制数表示。要对模拟信号进行计算处理的话,必须进行二进制转换,这个时候就需要将模拟信号转换成数字信号(AD转换),这也就是采样的过程。模拟信号采样的频率越高(即时间间隔越短),则得到的数字信号越贴近模拟信号,还原度就更好。
(3)转换过程说明:一般模拟信号会有一个峰值(MAX),而AD转换器是有精度的,比如它是8位的,那它的分辨率就是MAX/2^8。AD转换时,将取样点的值除以分辨率的结果则是数字信号的值。而进行DA转换时,则把每一个数字信号值乘以分辨率得到模拟信号值,所有DA转换后的模拟信号点连接起来便形成了转换后的模拟信号曲线。
视频压缩
要知道,一段视频的某一帧与它的后一帧是很连贯的,那么必然存在重复的信息,因此利用这些重复的信息,我们可以节约很多存储空间。接着,我们可以从时间和空间两个角度分析。
(1)从时间上来看,可以通过记录两帧不同画面间的差异性来实现。这也称为帧间压缩,一般是无损压缩。相关的技术还有运动补偿。
(2)从空间上来看,只记录单帧画面的一部分与另一部分的差异性。这成为帧内压缩,一般采用有损压缩算法,达不到很高的压缩比。
视频封装格式
视频封装格式也叫视频容器,在我们普通人的眼里就是所谓的后缀名,常见的视频格式有MPEG/MPG/DAT,AVI,RA/RM/RAM,MOV,ASF,n AVI(就是New AVI),DivX,RMVB,FLV(Flash Video,文件极小、加载速度极快,采用H.263),F4V(支持H.264的流媒体格式),MP4,3GP,AMV等。
视频编码
常见的视频编码有MicrosoftH.261/H.263/H.264/H.265,MPEG,RealVideo,WMV,QuickTime等。所谓视频编码,说到底是不同的厂商推出的一套标准,通过特定的压缩技术,将某个视频格式的文件转换成另一种视频格式文件的方式。
视频格式和视频编码的区别
看到这里,我也晕了,这两个东西到底在说什么?可以这样理解,视频格式是一个容器,用来把编码器生成的多媒体内容(视频,音频,字幕,章节信息等)混合封装在一起。而视频编码是一种标准,通过符合这种标准的压缩技术,将视频内容压缩成特定的格式。格式是编码的载体。
常用的开发库
Nodejs fluent-ffmpeg