跟阿里云技术专家阙寒一起深度了解视频直播CDN技术

网络直播平台现下已经十分火热,很多常见的直播平台都采用了阿里云直播CDN来搭建自身业务。今天,我们请来了阿里云CDN团队技术专家阙寒,来介绍下视频的一些基础知识和视频直播的架构。

在进入正题之前,我们先来了解视频直播相关的名词含义是什么?扫个盲

通常我们所说的视频,是指连续的图象变化每秒超过24帧(Frame)画面以上时,根据视觉暂留原理,人眼无法辨别单幅的静态画面,看上去是平滑连续的视觉效果,这样连续的画面叫做视频。

而媒体转码是指将一段多媒体包括音频、视频或者其他的内容从一种编码格式转换成为另外一种编码格式。

其中内容分发网络就是大家常说的CDN,这里主要包含流媒体服务器,负载均衡,路由重定向,视频转码,视频录制存储,防盗链,性能等相关技术内容。

 

下面这几个词我们也经常遇到:

码率是数据传输时单位时间传送的数据位数,一般我们用的单位是kbps即千位每秒。通俗一点的理解就是取样率, 单位时间内取样率越大,精度就越高,处理出来的文件就越接近原始文件,但是文件体积与取样率是成正比的,所以几乎所有的编码格式重视的都是如何用最低的码率达到最少的失真。但是因为编码算法不一样,所以也不能用码率来统一衡量音质或者画质。

另一个常见的词是帧,它是一段数据的组合,它是数据传输的基本单位。就是影像动画中最小单位的单幅影像画面,相当于电影胶片上的每一格镜头。一帧就是一副静止的画面,连续的帧就形成动画,如电视图像等。

与之相对应的帧率,即每秒显示帧数,帧率表示图形处理器处理场时每秒钟能够更新的次数。高的帧率可以得到更流畅、更逼真的动画。一般来说30fps就是可以接受的,但是将性能提升至60fps则可以明显提升交互感和逼真感,但是一般来说超过75fps一般就不容易察觉到有明显的流畅度提升了。如果帧率超过屏幕刷新率只会浪费图形处理的能力,因为监视器不能以这么快的速度更新,这样超过新率的帧率就浪费掉了。

华丽丽的分割线

这里阙寒想带我们再展开聊一下视频帧

音频帧一般可以独立解码,可以直播播放。

而视频分为视频关键帧和非关键帧,关键帧可以独立解码渲染,播放器拿到后可以直接看到画面,一般10K以上甚至几十K;其他非关键帧解码依赖于前面的一些视频帧,播放器会根据前面的帧和这一帧来解码产生画面,非关键帧一般大小是几K甚至不到1K。对于播放器来说,服务器一般会从视频关键帧开始发送,这样才不会产生花屏。

对于节点上直播服务器存储的内容,如果是文件加速,节点上存储的内容很明确,就是文件数据,URL不变的话文件数据内容也不变。但是对于直播来讲,传输的就是帧数据,缓存的也是不断变化的帧序列数据。

下面的图里我们可以看到,当前的服务器缓存了V1-V3五帧数据,当V4这个关键帧出现了,服务器把之前的丢掉,开始缓存V4开始的音视频数据,以这个策略保证过来的播放端都是当前最新的数据。一般直播服务器都是用这个策略来进行服务器缓存的。

下面进入正题,常见的CDN加速包括文件加速、点播、直播三种业务。最开始阿里云CDN是从文件加速开始,针对的主要是内部客户,像淘宝,它的图片非常多,那时候支持的都是小文件加速。后来随着各BU的端产品衍生,逐渐会支持大的文件下载业务;等阿里云CDN正式作为产品上线商业化时候,开始支持点播业务。2015年下半年,开始支持直播业务。今天阙寒主要从直播概述、直播架构、业务功能和场景来介绍下阿里云CDN直播系统。

一、直播概述

通常,视频直播常见两种形式是手机直播和游戏直播,手淘、陌陌、映客的典型的手机直播平台,游戏直播就是像斗鱼、全民TV等平台。其实对于播放端来讲,直播和点播都是向服务器获取视频数据,播放端对声音和画面进行播放的过程。从这个角度来讲,直播和点播区别并不大。

那直播和点播究竟区别在哪里?

对于视频点播,你在看的时候,你可以随时选择快进和回退。直播却不能。

对于视频网站上的视频文件来讲,点播可以选择今天看或明天看,但是直播却不能选择时间,像每周末的联赛只在固定的时间播放。一些机顶盒提供回看的功能,也是点播。

所以回归正题,简而言之,直播就是每一帧数据打上时序标签后进行流式传输的过程。发送端源源不断的采集音视频数据,经过编码、封包、推流、再经过分发网络进行扩散传播,播放端再源源不断地下载数据并按时序进行解码播放。如此就产生了边生产、边传输、边消费的直播过程。

我们将视频直播整个流程主要分为几个关键阶段:视频采集、前处理、编码、推流、转码、分发、播放,下图为简化版直播系统的基本架构,后面我们再详细展开。

  1. 采集,是视频直播开始的第一个环节,用户可以通过不同的终端采集视频,也就是主播直播的过程。iOS端适配性较好,采集起来比较简单。Android端因为一直以来市面机型多版本复杂种种情况,加大了一个库适配所有硬件的难度,采集起来相对比较困难。PC端则和摄像头驱动联系紧密,目前市面上最好的PC端源免费软件是OBS。
  2. 前处理,业内有一种说法,80%的主播没有美颜根本没法看。所以美颜已经是对视频源进行前处理的标配功能,除此之外还有水印、模糊特效等,针对不同的手机系统提供不同的处理库。
  3. 编码,编码时候我们需要处理的硬件兼容性问题和寻求码率和画质之前的平衡是最大的两个问题。iOS系统硬件兼容性比较好,可以采用硬编,Android系统则还是因为硬件机型问题,大多采用软编。
  4. 推流与转码,在数据传输的整个过程中从主播端到服务器端,再到边缘节点,以及从边缘节点到播放端。为了让采集端的流适配各个平台端不同协议,一般都会在服务端进行转码处理,将视频文件转成不同格式,支持 RTMP、HLS和FLV等不同的协议。
  5. 分发,随着移动直播兴起和游戏直播的持续火热,网络直播平台支持亿高并发是理论上应该做到的,为了优化终端观看直播的体验,一般都会采用CDN进行内容分发加速,实现高并发等能力。
  6. 客户端播放,也就是解码和渲染,目前 iOS 端的播放兼容性较好,Android 的硬件解码和编码一样也存在兼容性问题。通常秒开、低延时等问题是需要在播放端来克服的。

二、直播架构

这是一张阿里云直播全景解决方案的图,这里包括详细的推流端推流,直播中心的流存储,转码截图录制等视频处理,CDN智能调度与分发,最后到播放端播放整个过程。

  • 对于推流端推流,目前主要使用的是RTMP协议,播放可以使用RTMP、HTTPFLV和HLS协议,常用的推流端是OBS、手机APP、FFmpeg;播放端包括Flash、VLC、HTML5、手机APP等形式;
  • 视频直播中心拥有稳定的推流上行链路,支持连麦、IM、直播间管理等分丰富的直播服务端实现流能力;
  • CDN直播分发提供流畅的播放下行链路,700多个国内节点和300多个海外节点,还有丰富的小运营商节点。
  • 对于播放端,我们做了首屏秒开优化和弱网跳帧播放,确保用户体验。

对于视频直播服务器的一个进程上来讲,我们可以认为一个推流端和多个播放端是一种非常典型的发布和订阅的关系。从下图可以看到,主播完成发布动作,这条直播内容也就是这一路流推动到服务器,三个观众也就是订阅者,从服务器拉流,也就是用播放动作来完成推流。这种进程内部、节点之间的发布、订阅关系是一种级联的关系,CDN的直播分发就是依靠这种模式构建。

那下面我们从CDN分发的角度来基础架构是怎样的。内容通过存储集群到达发布集群,再通过骨干中转环境的L2,利用CDN智能调度到达L1,也就是距离用户最近的节点,从顺利的推送给用户。

三、业务功能及场景

说完了架构,阙寒带我们来了解业务功能和阿里云CDN的应用场景。对于直播来讲,转码这个业务功能很重要。转码后会在原始流名上加后缀,下图是转码前后的画质、码率的区别。和转码相关的有水印、动态模板、延迟转码等功能。

截图也是比较重要的业务,比如说直播平台页面分类下有很多张图片,刷新后图片会变化,都是靠周期性截图来完成。除此之外,阿里云也开放对直播进行动态配置、录制、开播断流回调、推流播放鉴权、断流、黑名单、禁播、各种接口API、转推其他厂商、触发式拉流、连麦、播放纯音频/视频等。

另外比较重要的是直播数据的监控,对客户和我们来说,能时刻关注直播情况,掌握直播数据,对于防范问题来说是十分必要的。视频监控是用来记录一路流重要信息,比如常见的视频码率、播放流量和在线人数、视频帧率监控。视频的特性是每秒钟帧率比较固定,视频帧大概是20~30帧/秒, 造成卡顿的主要原因一般是网络链路的抖动,有了全链路秒级帧率监控图之后, 排查问题变得非常的方便, 针对一路流卡顿以及客户提出的各种问题可以很快的就明确原因。

正常的监控图应该是一条直线,上图的帧率出现的突刺,就是因为公网网络连接抖动后统计出来的数据降低。对于一路流多个播放端来讲,服务器会不断把帧数据写给播放端,一旦网络抖动,遇到写不出去的情况会将这一帧放到连接的等待队列里,超出了帧队列的长度限制,服务器会选择丢帧。一般这种情况产生是因为网络抖动的比较严重,我们也会以此为依据来确定网络全链路的质量,用红绿颜色来标注区分正常和非正常的链路质量。

那以上的架构和业务功能都可以应用于哪些场景呢?我们也对阿里云视频直播CDN服务的客户场景进行了归类汇总,主要有以下五个方向:

  1. UGC互动直播:不仅提供推流到播放的全套直播解决方案,而且集成成熟的互动解决方案,包括IM,连麦等功能。例如:一直播、映客等直播互动平台。
  2. 电商直播:为电商直播提供全套直播解决方案,支持动态扩展的直播技术架构,无需担心直播促销涌入的峰值流量担忧。例如:手淘等电商直播平台。
  3. 体育赛事/大型综艺节目直播:为热门的赛事和综艺直播提供动态扩展的直播服务,通过CDN和PCDN的分发,用户无需为突然涌入的流量担忧。例如:CCTV5,等电视直播平台。
  4. 游戏直播:对游戏直播提供各种采集设备的接入,以及直播的录制功能,便于游戏直播平台提供点播服务。例如:全民,熊猫,等游戏直播平台。
  5. 在线教育/财经直播:提供直播鉴权、直播防盗链、URL加密等功能,为教育、财经类的直播提供安全保障。例如:第一财经等财经平台和知图教育等教育类直播平台。

以上就是阿里云直播CDN相关的内容,目前,超过一半的视频直播、点播平台都在使用阿里云的直播服务,我们会通过不断丰富和升级视频服务能力,打造围绕视频领域的技术生态。

时间: 2024-10-10 11:43:28

跟阿里云技术专家阙寒一起深度了解视频直播CDN技术的相关文章

阿里云李刚:下一代低延时的直播CDN

摘要: 在上周落幕帷幕的多媒体领域技术盛会--LiveVideoStackCon音视频技术大会上,阿里云的高级技术专家李刚进行了<下一代低延时的直播CDN>技术分享.主讲人李刚,多年关注在CDN这个领域,早期主要研究和cache服务器缓存以及流媒体相关的技术, 专注CDN文件分发.图片与大文件下载等业务. 在上周落幕帷幕的多媒体领域技术盛会--LiveVideoStackCon音视频技术大会上,阿里云的高级技术专家李刚进行了<下一代低延时的直播CDN>技术分享.主讲人李刚,多年关注

阿里云姚伟斌发表《场景化的CDN技术》主题演讲

摘要: 在11月14日的2018亚太CDN年度盛典上,阿里云资深技术专家姚伟斌(文景)发表了<场景化的CDN技术>主题演讲,他认为,当下的CDN,需要根据过去CDN的发展历程,更清晰地分析客户不同场景下的不同需求,再通过需求所用到的技术点,来设计出能更好服务客户的CDN产品. 在11月14日的2018亚太CDN年度盛典上,阿里云资深技术专家姚伟斌(文景)发表了<场景化的CDN技术>主题演讲,他认为,当下的CDN,需要根据过去CDN的发展历程,更清晰地分析客户不同场景下的不同需求,再

阿里云移动端播放器高级功能---视频下载

基本介绍优酷.爱奇艺.腾讯等主流的视频类App都有视频离线下载的功能,主要目的是在wifi下将视频离线在本地,然后在无网或者4G的情况下去观看离线视频.那么阿里云播放器也提供了视频下载的功能.这个功能主要针对的是点播视频,也就是vid播放的视频的下载. 主要问题m3u8如何下载?我们知道m3u8是一个索引文件,真正的视频文件是各个ts的分片,那么如何下载成一个完成的视频呢?如何对视频下载进行多线程控制?在一些app中,多个视频同时下载被认为是高级VIP才有的功能.如何实现断点续传?当在下载过程中

【初码干货】使用阿里云对Web开发中的资源文件进行CDN加速的深入研究和实践

提示:阅读本文需提前了解的相关知识 1.阿里云(https://www.aliyun.com) 2.阿里云CDN(https://www.aliyun.com/product/cdn) 3.阿里云OSS(https://www.aliyun.com/product/oss) 4.HTTPS(http://baike.baidu.com/view/14121.htm) 阅读目录结构 引: 一.准备工作 二.整体功能结构 三.具体实现步骤 四.关键点和问题处理 五.延伸与扩展 六.总结与思考 引:

阿里云与WPS深度合作,开放数据处理生态

摘要: 在3月28日举行的2018云栖大会-深圳峰会上,阿里云与金山办公达成深度合作,WPS在线预览与格式转换能力落地阿里云.标志着阿里云存储开放的数据湖体系不但面向计算引擎,还面向应用开放. 在3月28日举行的2018云栖大会-深圳峰会上,阿里云与金山办公达成深度合作,WPS在线预览与格式转换能力落地阿里云. 当前整个企业级数据管理市场面临着数字化转型,如何更好的管理数据.挖掘非结构化数据(专业文档.视频.图像等)的价值是当前企业需要解决的问题.阿里云作为驱动数字中国的核心力量,正与更多的合作

阿里云机器学习平台——PAI平台

在云栖TechDay第十五期活动上,阿里云iDST资深技术专家褚崴给大家带来了<阿里云机器学习平台>的分享,他以机器学习的概念入手展开了此次分享,演讲中他重点介绍了阿里云机器学习平台的基础架构和产品特点,并结合阿里内部的芝麻信用分.推荐系统等场景讲解了PAI平台的具体应用方案. 下文根据褚崴的演讲内容整理. 机器学习 图一 机器学习分类 机器学习简单来说就是,人教机器在我们积累的数据当中发现规律,然后能够辅助我们来做一些预测和决策. 机器学习笼统地讲可以分为三类: 1)有监督学习(superv

云栖大会压轴好戏 阿里云发布视频云V5计划与系列新产品

9月25 - 27日,2019云栖大会如期召开.在大会最后一天下午,阿里云智能视频云分论坛为今年的云栖大会献上了一场精彩的压轴好戏. 视频云V5计划发布 使能生态合作伙伴 会上,阿里云智能研究员金戈进行<视频云新“三网一云”,驱动行业应用创新>主题演讲,并发布视频云V5计划. 金戈表示:阿里云将全面打造新“三网一云”的产业布局,基于领先的视频和网络技术.阿里云达摩院的AI技术与阿里巴巴商业场景实践三级先发优势,凭借视频云多年沉淀的直播网.点播网和音视频通信网三大视频技术的融合应用,和一系列围绕

持续优化云原生体验,阿里云在Serverless容器与多云上的探索

摘要: 深度解读阿里云的Serverless Kubernetes, 介绍对Open Service Broker API标准的支持. 近日,阿里云宣布推出Serverless Kubernetes服务此举意在降低容器技术的使用门槛.简化容器平台运维.并同时发布阿里云服务对Open Service Broker API标准支持,通过一致.简单.可扩展的接口,将各种类型开发服务便捷统一化地交付到Cloud Foundry.Kubernetes等云原生应用平台:轻松实现多云环境下应用开发,让用户更多

阿里云弹性裸金属服务器-神龙架构(X-Dragon)揭秘

在5月16日的飞天技术会新品直播中,特别邀请了业界知名大咖狒哥以及阿里云虚拟化资深专家旭卿作为现场直播的嘉宾.本次直播主要从产品背景到"X-Dragon架构",从硬件设备到软件应用来深度的剖析"X-Dragon架构"为弹性计算裸金属服务器提供的极致计算能力. 直播视频请点击以下为精彩视频内容整理: 产品背景 这几年越来越多的大客户把自己的业务搬到云上来,一方面是因为云可以在成本.效率.性能方面提供更多的优势.但在客户把业务往云上搬的过程中,可以看到客户对物理机产品的