为什么直播时要用CDN?
点击上方“LiveVideoStack”关注我们
翻译 | Alex
技术审校 | 杨硕
本文来自OTTVerse,作者为Krishna Rao Vijayanagar。
CDN
Easy Tech
#009#
CDN(Content Delivery Network,内容分发网络)是由分布在世界各地的服务器组成,它可以根据用户的位置来就近分发缓存的视频数据,这对于直播来说非常重要。CDN通过将用户的访问,指向距离最近的缓存服务器来提升直播的性能。因此就算在高流量负载的情况下,直播也不会出现缓冲或者中断。
你在直播时遇到缓冲、延迟、视频中断或其他故障吗?想要确保这些问题不会发生,使用CDN绝对是一个好方法。CDN已经存在有一段时间了,随着时间的推移,CDN会变得更加流行,对于直播也会更加重要。
在本文中,我们将会讨论:你为什么应该在下一场直播中使用CDN,以及它是如何影响终端用户体验的。
我的直播需要使用CDN吗?
答案非常简单:是的!使用CDN将有助于:
服务在地理位置上广泛分布的观众
减少源服务器的负载
降低延迟
减少视频缓冲
防御DDoS攻击,从而提升安全性
其他还有很多!
但是,你知道为什么CDN会帮助你提升直播性能吗?为了理解其中的原因,让我们来看下CDN是如何工作的。
什么是CDN?
正如上文所提到的,CDN(内容分发网络)将缓存服务器分布在世界各地,这些服务器中存储了你的视频数据副本,会根据观看用户的位置将内容就近分发出去。这说明什么?
如果你在旧金山直播,而你的大部分观众在新加坡,那么距离新加坡最近的CDN节点将缓存你的内容,并将内容分发给当地的观众。这些观众的请求不必往返美国和新加坡,这样一来,他们就能体验到更快的下载速度。观众的等待时间缩短,获得了更好的观看体验。
左图:无CDN 右图:有CDN (图片来自Wikipedia)
CDN通过将用户的访问指向距离最近的缓存服务器来提升性能,因此对于那些没有充足带宽资源的直播源站来说,视频不会在高流量负载下缓冲或者中断。
CDN让流媒体数据直接在用户访问的本地节点快速响应,而不是让多个请求通过昂贵的长途链路在全球范围内来回传输(数据中心则需要尽量明确每个观众的地理位置)。
在深入了解CDN技术的好处之前,让我们先来快速了解一下ABR(关于ABR的更多知识,可以阅读这篇文章:理解ABR及其工作原理)——这是一种通过适应用户带宽条件来达到高质量视频传输的视频流方式。ABR的实现方式非常适合基于CDN的传输。
下一部分我们将对此进行讲解。
ABR和CDN
使用基于HTTP的视频传输协议的ABR可以通过CDN进行分发。在ABR直播中,编码器的输出数据被切割成小块,然后视频播放器依赖索引列表进行播放。索引列表显示了分片的名称和播放地址,播放器根据播放地址来请求视频文件。
这些视频分片和索引文件存储在源服务器中,而源服务器通过CDN网络分发数据。
当播放器请求视频分片时,该请求先到达CDN,CDN节点会判断本地是否有缓存。如果视频并不在CDN缓存中,CDN就向直播源服务器转发该请求,并获取到对应的视频分片文件。CDN将其传送给请求视频的客户端,同时缓存该视频分片。
通过HTTP请求直播流的视频分片文件,CDN可以简单地利用缓存和码率自适应技术,将直播流分发到全世界的视频播放器上。
总之,ABR和CDN在OTT流媒体世界掀起了一场革命,并使内容生产者和消费者受益良多。
那他们都获得了哪些好处?我们将在下一部分讲到。
使用CDN进行直播时有哪些好处?
使用CDN进行直播视频对你的观众来说帮助很大,因为CDN将直接影响他们的观看体验,并帮助你获取或者留存更多的粉丝和观众。
接下来,让我们详细了解一下这些好处。
CDN减少直播服务器的负载
CDN处在直播服务器(甚至可以是你的笔记本电脑!)和观看视频的一大批观众之间,它可以用来降低源站服务器的负载。来自观众设备上的请求先到达为他们提供服务的CDN,只有被请求的视频分片不在CDN的缓存中,CDN才会向源服务器请求视频。如果没有CDN在中间,你的直播很快就会和笔记本电脑一起down掉!
多像没有CDN保护被请求轰炸的服务器!
使用CDN进行直播有助于降低延迟(首屏时间)
当观众距离你的直播地理位置较远时,你需要考虑到访问视频分片的往返时间。如果有人按了播放键,然后要等待20~30秒视频才能播放,那么他们肯定会放弃这个视频而去看别的了。
所以,使用CDN就可以通过距离观众较近的服务器将第一个视频分片响应出去。这大大减少了响应请求的时间和下载时间,并降低了延迟和首屏时间。这些对于保障良好的用户体验非常重要!
使用CDN进行直播时减少缓冲
为什么视频播放器会缓冲呢?当播放器向服务器请求视频分片后,要花一段时间等待视频分片从服务器到达播放器。当播放器在等待视频分片到达的时间里,如果缓冲区被清空(缓冲区中所有视频已经被播放完),则被判断为underflow(数据不足或欠载),然后播放器开始缓冲。如果直播服务器因为请求过多,不能快速地给每个播放器发送数据,就会发生这种情况。
但是如果你使用CDN的话,这些请求就不会直接访问到源服务器,而是来到了CDN。这减少了每个视频分片的响应时间,因而在使用CDN进行直播时,播放器的缓冲区会得到快速填充。
保护直播基础设施免受DDoS攻击
如上文所述,CDN位于观众和源服务器(或直播服务器)之间,它发挥了屏障或第一道防线的作用,使得服务器免遭DDoS攻击。商业CDN内置了很多智能防护策略,如果它检测到恶意流量或者DDoS攻击,那么就会阻止这些IP地址或者客户端。
如果没有好用的CDN,这些恶意请求将席卷你的服务器,直播基础设施将不堪重负甚至崩掉。
使用CDN进行直播有助于获得高质量视频
高质量ABR流媒体的实现关键是播放器可以每次独立地从多码率配置文件中选择对应的视频分片进行播放。而CDN的快速响应特性,可以确保在带宽足够的情况下,播放器请求播放高码率视频分片能够及时收到数据,不会出现播放器缓冲区不足的情况。如果没有一个好用的CDN或实时流媒体服务器,那么使用ABR最基本的优势也就不存在了!
直播时应该使用Multi-CDN吗?
到现在为止,你已经知道使用CDN直播是一个好主意,因为它会保护你的直播设施免受攻击,并为观众提供出色的观看体验。
但这里有一个问题:如果你的CDN提供商出了故障或者崩溃,你该怎么办?这就麻烦了,观众正在通过已发生故障的CDN观看你的直播。
为了避免这类问题的发生,有些公司使用了Multi-CDN架构,即通过多个不同的CDN将视频传送给终端用户。这是一种集合多个CDN,可以支持智能切换策略,从而实现灾备冗余的方式。
在Multi-CDN架构中,如果其中一家CDN公司提供的服务出现问题,那么这家CDN对应的流量会无缝地切换到其他CDN提供商。你还可以利用不同的CDN供应商根据时间或地理区域的定价,来降低成本。
虽然小型直播活动并不强制要求使用Multi-CDN架构,但如果是奥运会、大型音乐会或者高流量直播活动等,则值得考虑使用Multi-CDN进行直播。
总之,你会使用CDN直播吗?
阅读本文之后,你会怎么做?你会在直播时使用CDN吗?大部分在线视频直播平台都和CDN公司有合作,这些视频平台都获得了更好的发展并与CDN提供商的合作也更加紧密。
当你下次选择直播平台观看直播时,请务必向平台问这个简单的问题:你用了哪家CDN来向终端用户分发内容的?这个简单的问题可以让你对视频平台如何运行有更多的了解。
我们下次再见,感谢阅读本篇文章,直播快乐!
致谢
本文已获得作者Krishna Rao Vijayanagar授权翻译和发布,特此感谢。
原文链接:https://ottverse.com/cdn-for-live-streaming/
延伸阅读:
视频编码完全指南
Easy Tech:什么是I帧、P帧和B帧?
为什么视频压缩如此重要
讲师招募
LiveVideoStackCon 2022 音视频技术大会 上海站,正在面向社会公开招募讲师,无论你所处的公司大小,title高低,老鸟还是菜鸟,只要你的内容对技术人有帮助,其他都是次要的。欢迎通过 speaker@livevideostack.com 提交个人资料及议题描述,我们将会在24小时内给予反馈。
喜欢我们的内容就点个“在看”吧!
为什么直播时要用CDN?相关推荐
- 以英雄之名为S9总决赛助攻! 虎牙直播and华为云CDN,team work才会赢
以英雄之名为S9总决赛助攻! 虎牙直播and华为云CDN,team work才会赢 你的朋友圈肯定经历过这样一波刷屏 啊啊!!!赢了祝贺!#FPX团灭G2#FPX夺冠啦!超帅超酷超级棒!我们是冠军!! ...
- 万人直播网络架构与CDN网络
概述 目前市场上的产品主要分为两种:一种是像花椒.映客.斗鱼.YY等的泛娱乐化直播,一种是思科.声网之类的实时互动直播.一般情况下实时互动直播会与PSTN网络相连,所以实时互动直播必须达到电话级别的传 ...
- 视频直播源码的直播技术原理,CDN如何实现价值
很多直播都是基于 CDN 来实现的.而通过声网的服务,或基于声网SDK与 CDN 结合,还可以实现在直播中的连麦互动.白板同步等强调实时性的场景.本文源自社区投稿,介绍了该场景下的一些基础知识.如大家 ...
- 阿里云移动端播放器高级功能---直播时移
基本介绍 通常都知道直播是无法seek拖动的,那么针对在直播中想回看之前直播过的内容的用户来说,直播时移就能派上用场.我们阿里云播放器支持了直播时移功能,用户能较为方面和快速的使用直播时移的功能. 先 ...
- 阿里云 Aliplayer高级功能介绍(四):直播时移
基本介绍 时移直播基于常规的HLS视频直播,直播推流被切分成TS分片,通过HLS协议向播放用户分发,用户请求的m3u8播放文件中包含不断刷新的TS分片地址:对于常规的HLS直播而言,TS分片地址及相应 ...
- 弘辽科技:淘宝直播时没人气?如何快速提高淘宝直播人气?
原标题<弘辽科技:淘宝直播时没人气?如何快速提高淘宝直播人气?> 随着21世纪计算机信息技术的快速发展,电子商务正以人们难以想象的速度进入人们的生产和生活中,推动着经济全球化.贸易自由化和 ...
- OBS直播时编码器、码率控制器、分辨率帧率是什么以及如何向第三方推流
内容摘要:OBS直播时编码器.码率控制器.分辨率.帧率到底是什么,以及OBS向第三方直播平推流时,要注意什么. 图:OBS直播时输出界面参数设定 OBS编码器 1. 软编:x264 使用CPU进行编码 ...
- 高稳定性、低延时、支持多路的实时流媒体播放器之EasyPlayer.js在直播时隐藏倍速播放按钮操作方法
EasyPlayer-Android播放器是一款可针对RTSP.RTMP.RTSP&RTMP协议进行过优化的流媒体播放器,其中我们引以为傲的两个技术优势就是起播速度快和播放延迟低.最近我们遇到 ...
- 主播直播时如何选择合适的内容?如何打造主播人设?
如何在直播间带货?如何快速吸引粉丝关注? 今天,就给大家分享抖音直播带货5大秘诀! 主播直播时如何选择合适的内容? 一场直播,观众最先看到的是谁?没错,主播. 因此,主播形象的好坏,直接影响观众是否愿 ...
最新文章
- java编写代码用什么_如何学习用Java编写代码:为什么要学习以及从哪里开始
- 土耳其黑客因窃取信用卡信息被判入狱334年
- 基于地图开发控件GMap.Net 使用 (一) 原创
- mysql主从位点保存时间_MySQL主从备份
- 启明云端技术社区之星--张梦玉
- HTML5网站大观:10个精美的复古风格 HTML5 网站作品
- python传递参数 调用c++ 传递vector_python调用c++传递数组的实例
- swift中的let和var有什么区别?
- 6种微服务RPC框架,你知道几个?
- 二阶系统响应指标图_一阶系统和二阶系统,了解一下!!!
- 【Proteus仿真】Arduino UNO步进电机驱动示例
- android studio systrace,Android Systrace 基础知识 -- Systrace 简介
- 2022年最新京东滑块验证码破解思路(算法过验)
- 【正则表达式】网页上敏感词过滤背后的原理你知道吗?
- PBR 前言 颜色理论:色度、色域与色彩空间
- 你的支付授权失败。请核对你的信息并重试,或尝试其他支付方式。 解决方案
- win10卸载软件_win10系统卸载软件超详细教程
- (10.3.5.6)软件验收报告文档模版
- 手把手教你自制555芯片
- 抖音短视频数据抓取实战系列(三)——Fiddler抓取抖音用户详细信息数据