文档章节

视频网站节约流量的小妙招

又拍云
 又拍云
发布于 07/30 10:49
字数 2650
阅读 5K
收藏 3

行业解决方案、产品招募中!想赚钱就来传!>>>

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

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

又拍云
粉丝 24
博文 54
码字总数 82832
作品 0
杭州
程序员
私信 提问
加载中
此博客有 1 条评论,请先登录后再查看。
树莓派(Raspberry Pi):完美的家用服务器

自从树莓派发布后,所有在互联网上的网站为此激动人心的设备提供了很多有趣和具有挑战性的使用方法。虽然这些想法都很棒,但树莓派( RPi )最明显却又是最不吸引人的用处是:创建你的完美家用...

异次元
2013/11/09
5.7K
8
Touch Visualizer

在界面上加上用户点击、划动屏幕时的轨迹。当用户的手指在屏幕上触摸或点击时(触发任意点击事件),会在手指点击的地方加上慢慢扩展消失的红色圆环,并且在手指触摸的地方加上半透明的圆形效...

匿名
2013/01/26
417
0
基于 ThinkPHP 的内容管理系统--歪酷CMS

歪酷网站管理系统(歪酷CMS)是一款基于THINKPHP框架开发的PHP+MYSQL网站建站程序,本程序实现了文章和栏目的批量动态管理,支持栏目无限分类,实现多管理员管理,程序辅助功能也基本实现了常见的文...

鲁大在线
2013/02/19
6.9K
1
Android 设备管理工具--androrat

androrat 是一个对 Android 设备进行远程管理的工具。 功能包括: 获取通讯录信息 获取呼叫记录 获取短信和彩信 通过 GPS 获取定位 实时监控接收到的短信 监控手机的呼叫状态 拍照 获取来自麦...

匿名
2013/03/28
2.7W
11
静态博客网站生成器--Hexo

Hexo 是一个基于nodejs 的静态博客网站生成器,作者是来自台湾的 Tommy Chen 特点: 不可思议的快速 ─ 只要一眨眼静态文件即生成完成 支持 Markdown 仅需一道指令即可部署到 GitHub Pages 和...

匿名
2013/04/05
2.8W
4

没有更多内容

加载失败,请刷新页面

加载更多

R_3D图(二)

作者:李誉辉 四川大学在读研究生 前言 这篇是用R绘制3D图系列之二,前一篇请戳:R_3D图(一),后面的章节会出3D柱形图,函数绘图,三维散点图等。敬请期待,做教程狠费精力的,别忘了点赞和转...

YGH1215
2018/12/06
4
0
图解Linux是如何进行函数调用的?

先抛出几个问题: 进程虚拟地址空间是如何分布的? 函数调用的栈帧结构是什么样子? 函数调用涉及到的寄存器都起了什么作用? 函数参数是如何传递的?传递顺序如何? 函数的返回值是如何传递...

学以解忧
07/01
25
0
109 创建货源清单记录

点击上方蓝字【SAP USER HOME】快速关注 特别提示:1. 每个企业的生产系统不能进行操作练习,此演示全部为测试系统数据,若需要练习可以联系各自企业的信息部或者IT协调。2. 由于各企业系统设...

安寜
2019/09/09
0
0
MySQL8-安装

步骤: 官网下载 MySQL8 免安装软件包。 将下载好的软件解压到指定的路径。 在MySQL文件夹根目录创建文件my.ini,将以下内容复制到文件,按需修改地址。 #数据库服务端配置项[mysqld]#数据...

ZRYACOOL
28分钟前
10
0
SpringFramework之ViewResolver优化

Springboot版本是2.x Springboot中,对mvc进行自动化配置时在WebMvcAutoConfiguration中会自动注入InternalResourceViewResolver(渲染jsp的)、BeanNameViewResolver、ContentNegotiatingVie......

克虏伯
28分钟前
16
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部