设为首页 | 收藏本站欢迎来到卓越网络免费免备案CDN加速,DDoS和CC攻击防御,高防CDN管理平台!

已阅读

如何让CDN网络加速运用到流媒体点播

作者:cdnfine      来源:cdnfine      发布时间:2020-05-04
如何让CDN网络加速运用到流媒体点播
如何让CDN网络加速运用到流媒体点播
流媒体点播的业务场景
 

 

读书时,学校有三个网站,对我影响巨大,它们分别是:

  • mirrors.neu.edu.cn

  • ipgw.neu.edu.cn

  • vod.neu.edu.cn

 

其中的第一个mirrors.neu.edu.cn是大名鼎鼎的开源镜像,折腾过各种软件源的筒子们应该会眼熟,它服务过全世界、尤其是一大波中国开源爱好者,也营造了校园内比较浓厚的开源氛围,我也因此接触Linux,改变了后来的职业发展走向。

 

第二个ipgw.neu.edu.cn是校园网的总控开关,每次欠费缴费、开网断网,都要用一下,现在ipgw是我使用最多的网络ID。

 

第三个vod.neu.edu.cn是一个在线视频网站,我在这个上面看完了小学、初中、高中所有想看而又没看完的电视剧、电影,许多中小学时的遗憾,大大弥补。这也是我最早接触的流媒体点播,其次是酷我音乐和优酷。VOD,Video On Demand,也是本文题图,带给人们的生活体验,精彩到无以言表。

 

事实上,早年的的优酷、土豆,现在的Netflix、YouTube、全民K歌、QQ音乐、腾讯视频、爱奇艺、抖音、快手,我觉得都可以认为是VOD业务。它们有着共同的特点:流式多媒体,按需点播

 

如何让CDN网络加速运用到流媒体点播
如何让CDN网络加速运用到流媒体点播
流媒体点播的历史与位置
 

 

《孟子》说:颂其诗,读其书,不知其人,可乎?研究技术也要懂点历史及其在历史中的位置。

 

首先,流媒体这个名字很形象,Streaming Media,流动的多媒体。有了流媒体技术,缤彩纷呈的多媒体内容,就可以像流水一样获取,再也不用天天找种子、下载完了才能看了,这也可能是BT、迅雷没落的原因之一吧。

 

其次,流媒体传输技术中,还有点播和直播的区别,也就是所谓的Video On Demand和Live Streaming。这很容易理解,在最火爆的几个视频App中都使用了CDN网络加速,这两种形式都普遍存在,比如抖音和快手的短视频就是Video On Demand,只不过这个Demand稍微神奇一点,是基于技术分析后的投喂,也就是所谓的推荐工程;而网红的直播就是Live Streaming,这是另外一个主题,本篇不做展开,后续专门写一下直播。

 

如何让CDN网络加速运用到流媒体点播
如何让CDN网络加速运用到流媒体点播
流媒体点播的关键技术
 

 

我们以视频为例,可以看到,一个流媒体点播系统,想要跑起来,就要支持视频上传、文件存储、内容分发。

 

如果是腾讯视频、爱奇艺的官方PGC内容,上传相对简单。如果是抖音、快手这种海量的UGC内容上传,会复杂很多。我们简单提几个问题。

 

首先是要不要多地接入,如何设置接入点才能距离用户最近,从网络距离上加速上传?如何做到多运营商互通,服务器部署在哪个运营商下面,用户是哪个运营商的用户,不同运营商怎么办,如何互通?小运营商用户要不要区别对待?接入点是不是像CDN加速一样,越多越好?海外用户如何接入?

 

用户上传要不要支持并发上传,如何支持?要不要支持断点续传,如何支持?要不要支持分片上传,为什么要分片,如何支持?

 

文件上传以后,就要存储下来,以备后面的On Demand,这个时候问题更大了。

 

文件存储系统应该选哪个,直接存到本地硬盘行吗?使用开源的Ceph靠谱吗?直接使用Amazon S3?腾讯云、阿里云、青云、白云、xx云,这么多哪个好?分布式存储如何索引定位到文件或文件分片,要不要支持目录?文件存储系统要不要支持POSIX接口,私有协议好,还是RESTful好?

 

几百P甚至更大的的文件存储如何控制成本,如何权衡大流量回源和成本消耗?冷热文件如何区分识别?文件分片冗余存储以后的索引如何管理?分布式异地存储如何做容灾,是否支持跨园区复制?文件存储是否支持版本号?这里的每一个话题,都可以展开形成一个很深的技术话题。

 

关于上传与存储,本文先抛问题,后面单列发文解释真实业务场景中的实践,后面主要以点播下载为主继续描述。

 

如何让CDN网络加速运用到流媒体点播
如何让CDN网络加速运用到流媒体点播
流媒体里的音视频常识
 

 

音视频编解码和传输,是一个非常专业的领域,这里介绍一点专业的基础知识。视频可以看做图片在时间坐标轴上的一个函数,类似于电影,当图片以超过一定速率处出现时,人眼就无法区分,就成了会动的视频。这里的每一张图片叫做一帧,虽然在这方便人眼的辨识能力有差异,但一般人角度来看,帧率超过10,人眼就会认为连续;超过24,就很难辨别;比如游戏帧率如果超过30,就不会觉得不流畅,这也是现代电子游戏也都被叫做视频游戏的原因,本质是一样的嘛。

 

而视频里的每一张图片,都是有像素组成,比如1024*768;每个像素又有RGB,每个8位,共24位;这么简单一算,一个只有一秒的、帧率为30的视频,30 × 1024 × 768 × 24 = 566,231,040Bits = 70,778,880Byte,非常可怕,所以要压缩。

 

压缩的方式一般就是编码,可以根据时间冗余、空间冗余、视觉冗余、编码冗余等方式形成不同的编码方式,这里涉及到数学、图像处理、信息论等多学科知识。所谓的I、P、B帧,以及霍夫曼编码等,都是这个过程涉及的东西。

 

在视频的编码方式上,也有流派,比如H.261、 H.262、H.263、H.264、H.265系列是一个流派,主要由ITU的VCEG主导;MPEG-1、MPEG-2、MPEG-4、MPEG-7系列是另外一个流派,主要由ISO的MPEG主导。详细的可以参考Wikipedia。

 

如何让CDN网络加速运用到流媒体点播
如何让CDN网络加速运用到流媒体点播
流媒体的分发方式
 

 

关于流媒体的分发方式,也就是用户获取流媒体的一些点,可以参考下面这个思维导图。

如何让CDN网络加速运用到流媒体点播

 

这里最常见的组合就是MP4 + HTTP Range + CDN Pull,我们生活中能够看到的VOD场景,几乎全是这个组合,有些个别产品,没有使用标准的协议和方式,但核心原理跟这个几乎一模一样。即文件封装基于MP4,传输协议使用HTTP的Range请求,CDN加速是用户主动拉取。

 

MP4(音频是M4A),在当今年是被最多终端支持的,包括生成和播放,并且由于MP4下图的Box封装格式,也适合流式播放。

如何让CDN网络加速运用到流媒体点播

 

HTTP Range,也很自然,因为HTTP对CDN、防火墙友好,基本没有哪个终端不支持HTTP的,相对于RTMP/RTP/RTCP等更适合直播的协议来说,HTTP几乎毫无门槛。并且如果使用HLS的话,天然支持分片;当然也可以自己修改播放器逻辑,对MP4进行分片Range。同时,基于HTTP更容易做自适应码率,比如HLS和HDS技术等。一个HTTP Range的请求大致如下:

如何让CDN网络加速运用到流媒体点播

 

CDN加速就不用说了,属于模式非常成熟的技术,是缓存技术的典范,能够节省骨干网带宽,用户就近获取,也缩短响应时间。

 

虽然这些技术都是比较常见的,但在实际的业务中,也存在各种隐藏的坑和很多细节的优化,不同的产品情况各有不同,很难有完美的、通用的方案。比如说CDN网络加速如果做OC带宽优化、如何做DC带宽优化、如何解决回源率、如果做到多CDN加速容灾与调度、如何解决运营商劫持、如何做到首次缓冲时间和二次缓冲比例同时降低、如何支持IPv6、怎样结合P2P和CDN落地PCDN、使用IPv6会不会有坑、流媒体尤其是音视频支持HTTPS能够做到吗、同一家CDN加速厂商如何支持多域名HTTPS、同一个OC节点分发不同产品的文件如何做到安全,太多的细节,就不一一赘述了。

Keywords: 免费CDN加速 免备案CDN加速 高防CDN加速