zoukankan      html  css  js  c++  java
  • 视频网站节约流量的小妙招

    现在社会大家不是在看视频就是在准备去看视频的路上,那些花样百出的视频播放、关闭时你有注意过下方那个小小的进度条么?在进度条里其实隐藏着大大的密码,你知道是什么么?

    2020 年初,一场突如其来的疫情打破了我们以往正常的生活,也阻挡了大家出行的脚步。抗击疫情,最重要的防护措施就是减少外出,做好隔离,大家每天待在家里,活动范围仅限“卧室 - 客厅 - 卫生间”,因为无所事事出现了许多“宅家趣事”。

    比如某“土豪”网友在家里钓鱼,不知道远道而来的热带鱼会不会“愿者上钩” … ...

    也有某网友很有“商业头脑”的自制套圈游戏,放在现在一定很适合摆摊 … …

    俗话说有耐心的人一定能成就一番大事,这不就有网友把整袋果干数了一遍,揭开了哪种干果最便宜了的秘密……

    广大网友集思广益创造了很多宅家趣事的同时,一定也有很多的小伙伴一朝得空疯狂“追剧、看视频”补齐剧情和娱乐进度。特别最近,各大综艺纷纷官宣首播时间,各视频平台也上线了新剧,仿佛后宫三千佳丽静待垂怜,让人乐不思蜀。

    时间有限,而选择却越来越多。为了用户能够在有限时间内看更多的内容,各视频平台推出了各种“花样节约时间成本”的功能,比如倍速、只看 TA 等等。对于一些剧情拖沓的电视,或者想快进又舍不得的人,这些功能简直好用到爆。

    那大家在用这些好用的功能疯狂追剧的同时有没有注意到,有时我们观看的网络视频,它的进度条不是一次性全部载入,而是一段一段的加载?同时肯定也有小伙伴困惑为什么看视频我们能快进,下载文件的时候就不可以?下面我们就来一一解密。

    视频缓冲技术

    在播放视频的时候,我们一般不需要等待全部加载完成后再开始观看,而是在我们打开视频的时候就可以点击观看,同时视频加载的进度条是随着播放持续加载。这里运用的就是视频缓冲技术。

    缓冲是指将数据预加载到内存保留区(或称为缓冲区)的过程。在流式传输视频或音频的情况下,缓冲可以让客户端(或浏览器)在开始播放视频或音乐之前,先下载一定数量的数据。这样当流媒体的下一部分在后台加载时,您可以观看存储在缓冲区中的数据。这种预加载过程可以确保视频在网络稳定的情况下不收干扰的保持流畅播放。

    使用这项技术后观看视频就可以免去等待时间,不用全部下载完才能观看,大大提高了观看体验。

    视频分段加载

    目前主流的大型视频网站(例如腾讯、优酷、爱奇艺、blibli)在进行视频点播时,都使用了视频分段加载和播放的技术。比如我们打开一个视频观看时,可以发现缓冲条在缓冲一段后停止,等待播放一部分后再继续缓冲,这个就是分段加载。

    分段是将一个完整的视频切割成若干小段视频。观看视频时,会跟随着播放的时间一阶段一阶段地去加载剩下的小段视频,并不需要一下全部加载完。如果观看者看到了视频的 50%,突然不想看了,没有使用分段技术可能会加载全部的视频。;有了分段,视频可能只需要加载 55%,剩下的45%在停止观看后就不会继续加载,这样就节省了 45% 的流量。这也是分段加载最大的好处,既减少带宽和流量的浪费。

    如果你在观看网络视频时打开了浏览器的开发者模式,你会看到除了开始请求视频返回的 200 状态码,下面还会有一串 206 状态码。

    这种响应是当客户端表明自己只需要目标 URL 上的部分资源时返回的。点开任意一个 206 请求,都可以通过 Content-Range 响应头辨认出该部分内容的请求。Content-Range 响应头用于表明具体加载了资源的哪一部分。例如下图的请求就是加载的 3375104-16313201 字节的数据。

    Content-Range: bytes 3375104-16313201/16313202

    3375104-16313201 是指分段的数据

    16313202 是指总文件大

    将视频缓冲和分段技术相结合,既能使视频在客户端播放流畅,又能有效的节省带宽和流量,同时因为缓冲在本地的是小段视频,也为盗取视频增加了难度,能够更好的保护视频版权。

    又拍云 CDN 之分段缓存

    随着网络速度的不断加快,视频播放的带宽需求也越来越大。经调研,一些视频网站的带宽成本仅次于影视剧版权费用,可见视频网站在带宽上成本之高昂。

    在针对视频网站的需求上,除去又拍云 CDN 的传统缓存技术,又拍云还开发了多种功能,为视频网站提供一些“节约流量的小妙招”。

    CDN 的传统缓存技术是将完整文件作为最基本缓存单位的,因为“点播和下载”加速业务中大文件(上百 M 甚至几十 G) 随处可见。如果客户端通过 HTTP 协议中的 Range 请求获取文件的部分内容,实现并发下载和断点续传。那么按照传统缓存特性,文件要么被完整缓存,要么不缓存。

    为了避免这个问题,又拍云 CDN 服务提供了分段缓存功能配置,该功能可以使缓存的基本单位变成块,并且可以在缓存块大小以及回源请求大小上采用不同粒度进行控制,从而实现按块缓存,按需回源,在缓存加速的同时避免拉取完整文件导致的源站带宽浪费。

    开启方式:【功能配置】-【缓存控制】-【分段缓存】,开启即可

    该功能默认开启,开启后可有效降低视频及大文件回源率,提升响应速度,同时还可以提高文件在 CDN 节点的缓存命中率。

    又拍云 CDN 之码率适配限速

    分段缓存是针对所有大文件都可以开启的功能,又拍云还针对视频文件推出了一种节约流量功能:码率适配限速。

    在边下边播的视频点播场景中,观看者很多情况下不会完整地观看一个视频,而是重复打开一个视频观看一段时间后就关闭,接着看下一个视频的动作。视频网站为了用户体验,往往会事先加载部分视频内容。也就是上面所说的“缓冲”。

    视频不限速的话,一打开视频,客户端就开始疯狂地加载视频。这样固然保证了终端用户的体验,但如果一旦用户还没看完视频就切换走,预下载视频的那部分流量就会被浪费,并产生大量的额外带宽成本。

    又拍云的码率适配限速功能会根据视频的观看进度控制预载的速度,。只需要在后台合理设定码率适配限速的限速因子,就可以在保证用户体验的前提下,做到节省流量成本,防止不必要的带宽支出。

    开启方式:【功能配置】-【成本控制】-【码率适配限速】,点击【管理】,添加规则

    在配置界面,依次需要进行资源路径、限速策略、限速因子的配置。

    资源路径:也即对请求的 URI 进行匹配,匹配成功则进入限速逻辑,支持 * 通配符,例如:/*.mp4

    限速策略:表示从某个时刻(下载时间,不是播放时间)开始执行限速策略,支持秒和分钟配置,默认推荐 3 秒;

    限速因子:用来控制 mp4 文件下载限速的因子,指定下载速度为视频码率的多少倍,推荐值为 1.1

    举例:

    假如某视频码率为 1337 Kbps,则视频的下载速度为 :

    (1337/8)*1.1 = 183 KB/s
    配置完所有配置项之后,点击左下角的【保存】按钮即可。
    又拍云的分段缓存和码率适配限速都可以有效的减少带宽成本,节约流量,减轻源站压力,两者并不冲突可以同时使用。

    除了上述功能,又拍云还提供了音视频转码、窄带高清、H265 自适应等针对流媒体多方面优化功能,在节省成本的同时保证并提升用户体验。

    5G 时代已然到来,大家在享受不断增快的网络速度的同时,视频网站的带宽成本也在持续不断的上涨。又拍云一直以来都在点播、直播等视频应用方面潜心钻研,目前已经取得了不俗的成果。我们结合点播、直播、短视频等业务中的用户场景,从编码技术、网络架构等角度出发,推出了各种“省带宽,压成本”的功能。赶快来试一试吧~

    推荐阅读

    当我谈 HTTP 时,我谈些什么?

    三分钟了解 Python3 的异步 Web 框架 FastAPI

  • 相关阅读:
    Windows 科研软件推荐
    有关Python 包 (package) 的基本知识
    《Using Python to Access Web Data》Week4 Programs that Surf the Web 课堂笔记
    Coursera助学金申请模板
    《Using Databases with Python》 Week2 Basic Structured Query Language 课堂笔记
    Jupyter 解决单个变量输出问题
    解决 pandas 中打印 DataFrame 行列显示不全的问题
    《Using Python to Access Web Data》 Week3 Networks and Sockets 课堂笔记
    缓存击穿及解决方案
    jvm垃圾收集器
  • 原文地址:https://www.cnblogs.com/upyun/p/13402454.html
Copyright © 2011-2022 走看看