大概六七年前,Web端就有直播产品。当然还是IE浏览器横行的时代,需要开发ActiveX控件,这个东西是非IE不可,后来开始使用Flash做为前端兼容,服务器端使用Adobe Flash Media Server 或 Real Live Stream Server。直播产品主要的运营方式有歌唱,会议、讲课,靠送花、广告等赢利。但是因为当时带宽、技术等因素,暂未能大规模爆发。
随着移动互联网与4G网络的普及,更多的人开始从手机开始接触互联网,各种资讯APP和电商平台,越发离不开互联网,又加很多非直播为主业的产品也开始加入了直播功能,各种因素形成了当今的直播大潮。
扩展名那点事儿
我想大概人人都喜欢看电影,特别是技术人员。我们的硬盘里会保存着各种格式的视频,总结一下,有.wmv,.avi,.divx,.flv,.mp4,.mov,.mkv,.rmvb,.ogg,.webm等文件格式。你也可能还会发现其它的扩展名。
看了这么多,你可能会感觉原来视频有这么多种类型。其实不然,这些格式看起来挺多,实际是一个封装好的容器(container format),里面包裹着不同的轨道。我们单纯看扩展名,是还不知道里面的“轨道“(即编码标准)长什么样的。
接下来我们就一起详细谈谈这些“轨道”。
视频压缩技术
从静态照片到动态摄像,技术在不断改变世界。这些产品由模仿人类的眼睛,到超过人类的眼睛,成像精度越来越高。
比如一部动画片,从画一幅画,到连续的24帧/秒(24/fps- frames per second)成为一个动态画面。
从技术上讲,从模拟技术到数字技术,由CMOS到CCD成像。因为视频在未经压缩前会占用大量的数据空间。从设备到存储都异常昂贵,只有某个电影厂、电视台才能配置。
因此,在没有大规模数字化之前,存储在磁带的介质都是非常昂贵的。在我们看到的二战前后的电影,能够保存下来的从内容和精神都异常可贵的产品。
如今,到人们人人都能手机拍照片和摄像。我们手里的手机也是步步的升级摄像头的像素,但是苹果们却的存储容量,却是从16G缓缓的向上升级。iPhone 7来了,随着容量的不同,差的价格却不是一般的高。我们还是需要琢磨一下怎么节省存储。即使服务器端,无论是点播还是直播,都需要先存在服务器或CDN端。
iPhone 7视频拍摄支持4k/30fps、1080p/60fps、720p/30fps的标准视频和1080p/120fps、720p/240fps的慢动作视频。
我们对视频压缩的目的是减少存储数量,同时保证视频质量。主要包括如下方法:
实时与非实时
对称与不对称
压缩比
无损与有损压缩
帧间帧内对比
码率控制
视频从系统捕获,到压缩到磁盘,解压缩和播放视频(每秒30帧)所有为实时,没有延迟,比如YY直播等为此技术。还有一些是“伪”直播,是将能够捕捉一些视频压缩处理,再通过CDN等回放给用户,会有几十秒的延迟,市面上很多系统均为此种技术。
当视频为60帧时,画面会比较流畅,当视频每秒30帧时就只能回放一部分画面,但对于人眼来说并不明显。
但帧速率一旦不足就会让人感觉到卡顿。比如一个每秒24帧的视频将明显生涩。此外,丢掉的帧应包括极其重要同步数据。比如一个人的嘴唇动作是由于缺少捕获或回放丢帧,就不能正确地匹配音频。
下面来看不同分辨率原始视频所占用的空间:1280*720*1.5*8 bit = 10.55M。1080P(分辨率为1920*1080) 1920*1080*1.5*8 bit = 23.73M。要知道这只是一副画面的大小,流畅的视频画面需要大概每秒25帧或以上,也就是说高清720p的视频,原始数据大小为每秒10.55*25 = 263.75M,而1080P每秒数据量为23.73M*25 = 593.25M,暂时不算4K视频。这里还都只是算的每秒原始视频数据的数据量,大家再想想,随便一部高清电影,怎么也得有两个多小时,原始数据量就是再乘3600秒*2。因此高清视频需要大量的存储和带宽。
压缩视频的核心目标,主要是压缩每帧与一组帧的空间占用率。不同的分辨率,压缩后的尺寸有什么不同?来看如下表格:
应用场景 |
数据速率 |
|
压缩前 |
压缩后 |
|
视频会议 352*240 (15fps) |
30.4 Mbps |
64-768 Kbps |
CD-ROM 数字视频 352*240 (30fps) |
60.8 Mbps |
1.5 _ 4 Mbps |
广播视频 720*480 @30fps |
248.8 Mbps |
3-8Mbps |
高清视频 1080*720 @60fps |
1.3 Gbps |
20Mbps |
视频压缩标准
我们再看如下表格:
标准 |
应用领域 |
比特率 |
H.261 |
视频会议和电话会议标准(ISDN) |
p x 64 kb/s |
MPEG-1 |
数据存储媒体(CD-ROM品质) |
1.5 Mb/s |
MPEG-2 |
数字电话 |
> 2 Mb/s |
H.263 |
PSTN网络低码率视频 |
< 33.6 kb/s |
MPEG-4 |
基于对象的编码,内容合成,互动 |
Variable 变化的内容 |
H.264 |
从低比特率编码,高清编码,HD-DVD,监控,视频会议。 (改进的视频压缩) |
10到 100 kb/s |
我们根据上面表格中所列视频压缩标准格式做较具体的说明。
MPEG是Moving Picture Experts Group的缩写。与TCP/IP等一样,用来定义视频压缩的标准。
MPEG-1(1991年发布)
目标是压缩的数字存储介质光盘,达到VHS质量的视频在~ 1.5 MB /秒
帧速率锁定在25(PAL)和30(NTSC)FPS FPS分别编码和解码的低计算时间
MPEG-2(1993年发布)
它是MPEG-1的超集,支持更高的比特率,更高的分辨率,和隔行扫描的图片
原来的目标是支持隔行扫描视频到传统的电视机,最终扩展到支持高清电视(HDTV)。
还有一些比MPEG-1多的一些扩展,能够在不同的分辨率和帧速率播放相同的视频。
MPEG-4(1998年发布)
大家也许留意到了,没有写MPEG-3,此版本为较小的变化,可以称为过渡版本。
MPEG-4标准主要是扩展新的功能,而不是实现更好的压缩。从低比特率(10kb/s到1Mb/s)以获得良好的质量。如下:
基于对象或基于内容的表示
单独的视觉对象的独立编码
基于内容的访问和操作
天然与合成物的整合
交互性-多媒体应用和视频通信
容易出错的环境的通信
包括从早期的标准的基于帧的编码技术
MPEG压缩算法编码数据的5个步骤,概要如下:
步骤1:减少分辨率
步骤2:运动评估
步骤3:离散余弦变换(DCT)
步骤4:量化
步骤5:熵编码
人眼对颜色信息的敏感性比暗明亮的对比度低。从RGB色彩空间转换成YUV颜色成分有助于利用这种效应压缩。
由于视频序列连续两帧的差异很小(除了场景发生变化),MPEG提供了一条途径,减少时间冗余度。包括以下几种类型:
I帧(帧内编码),独立于所有其他帧
P帧(预测),编码基于先前编码帧
B帧是P帧的双向版本。参照两个方向:一个前帧和一个后帧。
B帧(双向),编码基于以前和将来的编码帧比较
帧内编码,没有其他框架的参考,压缩比不那么高
H.264
H.264是最早用于安防行业的压缩技术。 它实际上是MPEG-4标准的一个变型,通常称为MPEG-4第10部分高级视频编码(AVC)。
它使用的I,P和B帧相同的基本概念,对视频编码,但依赖于更高级的编码技术。一个例子是使用运动向量的视频压缩到一个较小的尺寸的运动补偿。H.264 为了防止中间 P 帧丢失视频图像会一直错误它引入分组序列(GOP)编码,也就是隔一段时间发一个全量 I 帧,上一个 I 帧与下一个 I 帧之间为一个分组 GOP。从而防止丢包和减小带宽还引入一种双向预测编码的 B 帧,B 帧以前面的 I 或 P 帧和后面的 P 帧为参考帧。
小结
本篇为大家介绍了视频压缩编码的原理。从未来角度来讲,当带宽越来越不是问题后,压缩算法的主要在视频冗余上下的功能会较多。
在目前的视频直播上来讲,主要是应用在手机屏幕的尺寸,基本在400*700px的分辨率左右,清晰度只适配手机显示。很多直播应用每月的在线容量的提升,导至广播的视频开销极大,甚至每月上亿的成本。目前对于互联网公司的最痛点,仍是带宽的问题,那么视频压缩功能更显重要。
整理:汽车锁干扰器 www.xmqisheng.com
下一篇我们会逐步铺开,敬请期待。