大概六七年前,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)以获得良好的质量。如下:

  1. 基于对象或基于内容的表示

  2. 单独的视觉对象的独立编码

  3. 基于内容的访问和操作

  4. 天然与合成物的整合

  5. 交互性-多媒体应用和视频通信

  6. 容易出错的环境的通信

  7. 包括从早期的标准的基于帧的编码技术

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

下一篇我们会逐步铺开,敬请期待。

网络在线直播技术揭秘(一):编码与压缩算法相关推荐

  1. 前沿分享|阿里云数据库资深技术专家 姚奕玮:AnalyticDB MySQL离在线一体化技术揭秘

    简介:本篇内容为2021云栖大会-云原生数据仓库AnalyticDB技术与实践峰会分论坛中,阿里云数据库资深技术专家 姚奕玮关于"AnalyticDB MySQL离在线一体化技术揭秘&quo ...

  2. 一张图看懂2017双11中的网络产品和技术

    摘要: 大家都知道,2017年双11又创造了新纪录,全天交易额1682亿,交易峰值32.5万笔/秒,支付峰值25.6W笔/秒,狂欢的背后是极其复杂庞大的技术系统,其中就有大量阿里云云计算相关的产品和技 ...

  3. 新富人群的快速壮大,急需金融在线直播提供更高效和广泛的服务

    在国内民间资本充沛.投资渠道狭窄.投资需求旺盛的背景下,投资用户们希望得到更多与机构面对面的交流机会.但是面对迅速膨胀起来的中等收入人群,传统的"一对一"人工客服早已不堪重负.&q ...

  4. 视频直播技术详解(3)编码和封装

    声明:本文为CSDN原创投稿文章,未经许可,禁止任何形式的转载. 作者:七牛云 责编:钱曙光,关注架构和算法领域,寻求报道或者投稿请发邮件qianshg@csdn.net,另有「CSDN 高级架构师群 ...

  5. 《视频直播技术详解》之(四):编码和封装

    七牛云于 6 月底发布了一个针对视频直播的实时流网络 LiveNet 和完整的直播云解决方案,很多开发者对这个网络和解决方案的细节和使用场景非常感兴趣. 结合七牛实时流网络 LiveNet 和直播云解 ...

  6. 阿里云技术天团空降 CSDN 独家在线峰会,揭秘核心竞争力

    CSDN 联合阿里云共同举办了"阿里云核心竞争力"系列在线峰会,在 2020 年成功举办两期之后,2021 年,CSDN 系列在线峰会继续启航."阿里云技术竞争力&quo ...

  7. 字节跳动双11电商直播技术大揭秘

    点击上方"LiveVideoStack"关注我们 近几年来,电商直播已经成为了双11促销活动中的重要形式.作为国内电商直播中的佼佼者,双11刚过,抖音便公布了"抖音双11 ...

  8. 关于移动视频直播技术,关键干货都在这里了(三)编码和封装

    关于直播的技术文章不少,成体系的不多.我们将用七篇文章,更系统化地介绍当下大热的视频直播各环节的关键技术,帮助视频直播创业者们更全面.深入地了解视频直播技术,更好地技术选型. 视频编码是视频直播技术系 ...

  9. 《视频直播技术详解》之(三):编码和封装

    在上一期的处理篇中,我们介绍了讲解常见视频处理功能如美颜.视频水印.滤镜.连麦等. 本篇是<解密视频直播技术>系列之三:编码和封装.视频编码是本系列一个重要的部分,如果把整个流媒体比喻成一 ...

最新文章

  1. php 数组 随机选择_php中通过数组进行高效随机抽取指定条记录的算法
  2. python控制手机自动刷新闻_Python脚本利用adb进行手机控制的方法
  3. 使用await和async关键字开发nodejs应用批量取出简书网站的文章标题和超链接
  4. 正则表达式提取括号里面的值
  5. oracle 数据操作的相关参数
  6. mac安装gcc10
  7. 大数据分析中常见的分析模型
  8. 怎样用命令查看Mysql数据库大小?
  9. 创建一个新数组并指定数组的长度
  10. linux系统fsck.ext4,Ext4文件系统fsck后损坏修复过程一例
  11. 186.MultiAutoCompleteTextView
  12. 人工智能课程设计——八皇后问题的求解算法比较
  13. org.eclipse.core.runtime.CoreException: Plug-in org.eclipse.jdt.ui was unable to load class org.ecli
  14. HDMI接口之HPD(热拔插)
  15. DDD(五)——值对象
  16. Breakpoint原理解释
  17. Python爬虫:现学现用xpath爬取豆瓣音乐
  18. mysql数据库安装包离线安装
  19. wireshark安装及使用总结 winpcap
  20. Trac 经验谈之(6完)插件篇补遗

热门文章

  1. L型与R型思维的特征
  2. 三运放差分放大电路分析_三运放组成的差分放大器电路图及特点
  3. 注销公司都需要注销哪些方面?
  4. 园友们赶快行动起来,免费获得微软MCSD证书!
  5. 10寸、10.1寸、10.4寸液晶屏解决方案
  6. uniapp App跳转微信小程序并互相传递参数、接收微信小程序传递的参数
  7. 钢丝流-BISU的战斗哲学
  8. Attention中的Q、K、V
  9. 加解密后字节数组和(16进制)字符串的相互转换问题
  10. LWIP 以太网先启动后插入网线无法入网的解决办法