分发即线路管理设置
线路管理原理详解
一般我们播放m3u8
视频时候,实际上是通过访问m3u8
文件索引的切片达到播放目的,且默认从本地服务器读取,如:
#比如我的m3u8链接地址如下:
http://efvcms.com/videos/201910/28/5db7045f57112a77e0aca6df/6agc5a/index.m3u8
#当用户读取m3u8后,这时候会依次从服务器读取切片文件,然后完成播放,链接大致如下:
http://efvcms.com/videos/201910/28/5db7045f57112a77e0aca6df/6agc5a/index0.ts
http://efvcms.com/videos/201910/28/5db7045f57112a77e0aca6df/6agc5a/index1.ts
http://efvcms.com/videos/201910/28/5db7045f57112a77e0aca6df/6agc5a/index2.ts
http://efvcms.com/videos/201910/28/5db7045f57112a77e0aca6df/6agc5a/index3.ts
从上面会发现,切片全部从本地服务器即m3u8
的域名里读取。
接下来设置了2
个线路域名,此时m3u8
的切片加载和之前就不一样了,下:
#我的m3u8链接地址和之前一样,如下:
http://efvcms.com/videos/201910/28/5db7045f57112a77e0aca6df/6agc5a/index.m3u8
#当用户读取m3u8后,这时候会分别从你添加的线路域名读取全部的切片,然后完成播放,链接大致如下:
http://a.fenfa.com/videos/201910/28/5db7045f57112a77e0aca6df/6agc5a/index0.ts
http://b.fenfa.com/videos/201910/28/5db7045f57112a77e0aca6df/6agc5a/index1.ts
http://a.fenfa.com/videos/201910/28/5db7045f57112a77e0aca6df/6agc5a/index2.ts
http://b.fenfa.com/videos/201910/28/5db7045f57112a77e0aca6df/6agc5a/index3.ts
这里就可以看到,切片全部从线路域名里读取;且设置线路前后,只是加载切片链接的域名变化了,其它都不变。
所以当本地服务器因为带宽,硬盘IO
等问题,导致播放卡的时候,可以利用线路管理从其它服务器,CDN
或云存储等读取切片,从而解决问题。
线路管理设置步骤
设置均为动态处理,即不管是开启还是关闭线路,或新增线路域名,对所有的视频都是立即生效。
准备线路域名
线路域名只需要满足一个条件,就是用户通过该域名可以访问到视频切片,这里有2
种方法,分别如下:
第一种,将切片等文件同步到其它服务器,或云存储如亚马逊S3
、CF R2
等,同步教程 ⇒ 点击查看;然后再给云存储,或接收同步文件的服务器绑定一个域名,即线路域名;注意接收文件的服务器绑定域名的时候,根目录需要设置到桶目录,即根目录包含同步过来的videos
文件夹。
第二种,使用我们自研的CDN
系统,即自己准备一个网络比较好的vps
,自建cdn
,该cdn
会将源站的切片缓存到cdn
服务器,再通过cdn
域名,提供给用户观看,CDN
系统 ⇒ 使用教程。
这里如果你不用第三方云存储的话,就建议使用第二种,配置和使用极其方便。
设置线路管理
先前往EFV
后台左侧 ⇒ 转码相关 ⇒ 线路管理,创建一条新的线路,主要设置项如下:
#默认线路链接
你想几个线路域名提供切片读取,就填写几个线路域名,中间使用英文竖线|分开,最后面不能带/,如https://cdn1.efvcms.com|https://cdn2.efvcms.com
#移动线路链接<填入后,移动用户访问会走该线路,不填则使用默认线路>
输入移动线路链接,需要带http或者https,多线路用|分割,如https://cdn1.efvcms.com|https://cdn2.efvcms.com
#电信线路链接<填入后,电信用户访问会走该线路,不填则使用默认线路>
输入电信线路链接,需要带http或者https,多线路用|分割,如https://cdn1.efvcms.com|https://cdn2.efvcms.com
#联通线路链接<填入后,联通用户访问会走该线路,不填则使用默认线路>
输入联通线路链接,需要带http或者https,多线路用|分割,如https://cdn1.efvcms.com|https://cdn2.efvcms.com
#定时任务切换
设置定时时间后,会按设置时间自动使用该线路,可在网络高峰期时间段自动切换到该线路,可改善播放体验。
#是否使用该线路
开启后,该条线会立即被使用;如果你设置了多条线路,且都开启了默认线路按钮,那么只生效最后开启默认的那个线路。
#开放该线路
开启后,任何人都可以读取该线路,第三方CMS使用需开启;关闭后则需要通过用户组判断。
定时线路使用推荐
定时任务格式为时钟:分钟
,如21:30
、01:30
、05:15
,时钟为24
小时制,也就是每天几时几分执行。
注意,使用定时功能的,注意下服务器系统时间,可以在ssh
客户端使用date
命令查看,如果时间不对,可以运行命令改一下:
rm -rf /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#查看修改后的时间
date
比如我在晚上9点半
的高峰期,自动切换到cdn
线路,然后凌晨1点
再切回到本地线路<本地线路即EFV
绑定域名>。
也就是总共设置2
个线路,1
个线路命名cdn线路
,且使用1
到n
个网络比较好的线路链接,定时任务设置21:30
;另1
个线路命名为本地线路
,使用EFV
绑定域名作为线路链接,定时任务设置01:00
.
最后这种设置效果,就是晚上9.30
会自动使用cdn
线路,再到凌晨1点
会切到本地线路,然后每天一直循环切换。
线路管理api使用
使用api
调用必须要设置一个默认线路,不然不生效。
获取线路列表
GET /api2/lines
#返回数据
[
{
"group": null,
"vipGroup": null,
"createAt": "2021-06-28T03:55:16.236Z",
"_id": "60da81313b870875ec5d9fa4",
"title": "组合线路",
"url": "https://cdn1.efvcms.com|https://cdn2.efvcms.com",
"open": "on",
"default": "on",
"notlogin": "on",
"__v": 0
},
{
"group": null,
"vipGroup": null,
"createAt": "2021-06-28T03:55:16.236Z",
"_id": "60da817b3b870875ec5da0b5",
"title": "cn2线路",
"url": "https://cdn3.efvcms.com",
"open": "on",
"default": null,
"notlogin": "on",
"__v": 0
}
]
m3u8调用指定线路
#m3u8调用示例
https://域名/index.m3u8?line=线路id
#直接访问,则自动调用默认线路
/videos/60d88e0d66c8886d0a961818/720/index.m3u8
#使用上述线路列表示例的cn2线路
/videos/60d88e0d66c8886d0a961818/720/index.m3u8?line=60da817b3b870875ec5da0b5