1 - 将服务器文件入库转码

将服务器里的视频文件入库到视频管理,入库自动分类,封面自动入库,入库自动烧录ass和srt字幕。

入库步骤

入库文件夹为movies,如果我程序安装路径为/home/express-ffmpeg,则入库文件夹为/home/express-ffmpeg/movies

首先设置好入库文件类型,可在转码设置处设置,设置参考:

#比如入库mp4文件,则填入.mp4,多个后缀之间用英文逗号,分开
.mp4,.mkv,.avi,.rmvb,.dat,.flv,.mpg,.mpeg,.rm,.mov,.wmv,.asf

最后再将需要切片的视频上传或转移到入库文件夹,然后点击视频管理的扫描入库即可。

且视频入库期间,如果存在名称重复的视频,则不会入库到视频管理处。

入库自动分类

入库支持自动分类,如我在入库文件夹movies新建一个名为教育片的子文件夹,那么我将视频存放到教育片的文件夹,入库的时候这些视频会自动分类教育片,且如果该分类不存在会自动创建。

入库分类只支持一级目录,比如movies/教育片;二级及以上层级的目录均不会入库,如movies/教育片/儿童教育等。

封面自动入库

入库支持使用自有封面,即转码完成后,封面1封面2均显示的是自己入库的时候设置的封面。

需要将封面文件的名称修改成对应的视频名称,存放到同一入库根目录文件夹或者一级分类文件夹,如:

#入库文件夹movies的根目录
movies/西游记.mp4
movies/西游记.jpg

#入库文件夹movies的一级分类神话片文件夹
movies/神话片/西游记.mp4
movies/神话片/西游记.jpg

且后缀不用管,前面名称一样就行,且封面仅支持jpgjpegpngwebp

入库烧录ass和srt字幕

入库支持字幕文件烧录,也就是转码的时候,会自动烧录入库文件夹的asssrt字幕文件。

规则和封面自动入库一样,即将asssrt字幕的名称修改成对应的视频名称,存放到同一入库根目录文件夹或者一级分类文件夹,如:

#入库文件夹movies的根目录
movies/西游记.mp4
movies/西游记.ass

#入库文件夹movies的一级分类神话片文件夹
movies/神话片/西游记.mp4
movies/神话片/西游记.ass

后缀不用管,前面名称一样就行,这样转码的时候字幕会自动烧录进视频,注意秒切是不会烧录字幕的。

入库API使用

可远程使用该apimovies所有视频入库到视频库,再自动转码,用法如下:

POST /api/ruku

body: {
    apikey,
}

response: {
    success: 1,
}

#curl命令使用示例,apikey可在转码设置处获取
curl http://127.0.0.1:3000/api/ruku -d "apikey=5c20cEga"

2 - 下载网盘的视频入库转码

如果我们本地上传的速度很慢,可以先传到网盘,再将网盘文件下载入库,或直接下载网盘现有的资源。

一般我们使用EFV上传视频的时候,由于本地和服务器之间网络连接不理想,导致上传比较慢,这里我们可以通过网盘中转提高上传效率。

大致原理就是,我们将视频文件上传到一些合适的网盘,如阿里云、115、百度、天翼等网盘,然后再使用服务器下载这些网盘的视频,通过入库功能导入到EFV进行转码切片。

或者你网盘有很多视频文件,也可以直接把视频下载到服务器,再入库进行转码,

这里就推荐一款比较好的工具AList,差不多算是你见过的网盘都可以挂载了,很全面,支持网盘如下:

本地存储
Crypt
阿里云盘Open
阿里云盘
OneDrive/APP/SharePoint(国际版、世纪互联、de、us)
GoogleDrive
123云盘/分享/直链
FTP/SFTP
PikPak/分享
S3对象存储
又拍云对象存储
WebDAV(支持无API的OneDrive/SharePoint)
Teambition(中国、国际)
分秒帧
天翼云盘(个人云、 家庭云)
中国移动云盘(个人云、 家庭云)
中国联通云盘
四川电信魔盘
Yandex.Disk
百度网盘/分享
夸克网盘
迅雷网盘
蓝奏云、蓝奏云优享版
小飞机网盘
阿里云盘分享
谷歌相册
Mega.nz
一刻相册
TeraBox-海外百度
AList v2/v3
SMB
别名
115
Seafile
Cloudreve
Trainbit
UrlTree
IPFS
UC网盘
Dropbox
腾讯微云
腾讯智能创作平台
超星星小组盘
曲奇云盘

后期支持列表可能会有变化,具体可查看官方文档 ⇒ 传送门

安装AList

首先安装DockerLinux快速安装Docker传送门,然后在SSH客户端使用命令:

#/opt/alist为数据存放目录,自行修改,且为绝对路径。
docker run -d --restart=unless-stopped -v /opt/alist:/opt/alist/data -p 5244:5244 -e PUID=0 -e PGID=0 -e UMASK=022 --name="alist" xhofe/alist:latest

#设置Alist的admin管理员密码,NEW_PASSWORD为密码,可自行修改
docker exec -it alist ./alist admin set NEW_PASSWORD

接下来浏览器访问AListweb地址,也就是服务器ip:5244

如访问不了,则还需要开放服务器的5244端口,使用命令:

#CentOS 7+、AlmaLinux、Rocky Linux系统
firewall-cmd --zone=public --add-port=5244/tcp --permanent
firewall-cmd --reload

#Debian、Ubuntu系统
ufw allow 5244

如果你有安装宝塔,也可以直接在宝塔左侧安全开放。

挂载网盘

我们通过浏览器访问AListweb地址,也就是服务器ip:5244,再使用管理员账户登录。

接着直接访问服务器ip:5244/@manage/storages,点击添加,选择适合自己的网盘;可参考 ⇒ 传送门

挂载好了后,我们直接访问AList主页就可以获取到相应的视频链接,然后可以通过切片后台的下载中心或者其它方式下载到服务器入库转码了。

挂载或使用期间如果出现相关错误,可参考:AList报错码解决AList常见问题

3 - 多码率设置和自适应M3U8

多码率转码会在转码的时候保持源视频分辨率,或强行修改视频的分辨率,然后根据设置的码率智能分配。

多码率说明及设置

提示:多码率相关功能仅在转码下生效,秒切不生效,秒切默认为源片分辨率和码率。

多码率转码可以同时将视频转码到240P360P480P640P720P1080P2K原画多个分辨率视频,且转码时候均会压缩体积。

原画也就是默认设置为源片的分辨率和码率参数转码,并会给你压缩体积。

码率设置

点击EFV后台左侧 ⇒ 转码设置 ⇒ 多码率和码率设置;如果你想同时转多个分辨率视频就选择多个分辨率即可。

这里会根据你的选择,强行给你改变源片的分辨率和码率,且清晰度主要由码率决定,码率为可变码率,会随机波动。

帧率设置

点击EFV后台左侧 ⇒ 转码设置 ⇒ 帧率设置;在相同分辨率码率下,帧率越高,视频可能越流畅,但转码可能会越慢,自行根据服务器配置进行选择。

跳过高分辨率说明

点击EFV后台左侧 ⇒ 转码设置 ⇒ 跳过高分辨率;如果你多码率选择360P720P1080P,且开启了跳过高码率,则如果源片为720P,则转码的时候,只会给你转360P720P,也就是设置的分辨率里面,不会给你转码到比源片高的分辨率。

且当设置的分辨率都高于源片的分辨率的时候,默认给你转码原画,即源片的分辨率和码率。

自适应M3U8说明

自适应M3U8为魔改版m3u8,会将你多码率转码生成的所有分辨率m3u8合成为一个自适应m3u8,用户读取自适应M3U8的时候,会根据用户网络情况自动匹配最佳分辨率m3u8,防止用户卡顿。

自适应M3U8EFV自动生成的虚拟链接,即你在服务器上找不到该m3u8文件,但是你依然可以访问该链接。

相关设置

提示:如果你的自适应M3U8播放失败,可以参考下方说明进行解决。

通过自适应M3U8获取的所有分辨率m3u8的域名均为转码设置的设置域名,请求如下:

#自适应m3u8链接,拼接组合:/movie/auto/ + 视频id + .m3u8
/movie/auto/61f68205eeeec878ae3fe3d5.m3u8

#该自适应m3u8的内容
#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=4000000,AVERAGE-BANDWIDTH=4000000,RESOLUTION=848x477
http://127.0.0.1:3000/videos/202201/31/61f68205eeeec878ae3fe3d5/gee9g1/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=7000000,AVERAGE-BANDWIDTH=7000000,RESOLUTION=1280x720
http://127.0.0.1:3000/videos/202201/31/61f68205eeeec878ae3fe3d5/217g7g/index.m3u8

http://127.0.0.1:3000就是转码设置的设置域名对应的参数,所以该域名必须设置且要正确,不然会导致自适应M3U8获取不到所有分辨率m3u8的正确域名,最终导致播放不了。

且该设置域名可以直接填入EFV绑定的域名地址;如果你的m3u8全部同步到了云存储,这里也可以设置云存储的域名,即自适应M3U8会获取到云存储的m3u8地址,也可以播放。可以自行拓展玩法。

4 - 封面1和封面2及截图说明

转码会自动生成封面1、封面2及相关截图,这里会简单说明封面1和封面2的区别,及截图处理逻辑

封面1

提示:苹果CMS采集和WordPress导入默认使用封面1,可在后台各自的设置页面调整到封面2。

封面1的长和宽由转码设置自定义封面宽度和长度选项决定,可自行设置或默认即可;

通过程序自动生成,后台上传,或详情编辑的豆瓣接口获取的封面,均会根据设置自动裁剪处理。

但通过服务器封面入库、下载中心入库的封面是不会对长宽进行处理,均会保留入库源图的长宽大小。

封面2

提示:内置CMS默认使用封面2,且为横屏显示,如果你已使用竖屏海报,可在CMS设置调整到竖屏显示。

封面2为自适应宽高比例,且数据库里边带有其宽高数据。

通过程序转码自动生成的封面2逻辑和封面1一样,长和宽由转码设置自定义封面宽度和长度选项决定。

但通过后台上传的封面2 、服务器封面入库、或详情编辑的豆瓣接口获取的封面不会按照你设置的长宽裁剪,而是会自适应处理宽高比例,适用于影视相关的海报图片。

注意封面2还预留一个不裁剪上传选项,即不对上传图片做任何处理,最大化保留源图的长宽大小,可上传gif动态图片。

截图

提示:如果需要视频第一帧图片,可以前往转码设置开启第一帧截图。

截图的长宽由视频分辨率决定,默认从转码处理后的MP4截图,也就是此时截图长宽就是你设置的转码分辨率。

如果你想设置转码之前截图,也就是不经过处理的源片截图,需前往转码设置开启转码前截图,此时截图长宽就是源片分辨率。

截图逻辑就是,视频总时长除以设置的截图数,取平均时长的截图。

5 - 跑马灯和水印设置步骤

静态图片水印、gif动态图片水印、文字跑马灯、静态文字水印、全屏弹动水印、文字闪现水印,ASS水印等。
提示:加水印、跑马灯必须要转码下才生效;秒切是无效的,也就不会给你加任何水印、跑马灯。

目前跑马灯和水印支持7种类型,即:

静态图片水印
文字跑马灯
静态文字水印
图片弹/移动水印,即图片水印在全屏有规律移动
文字随机闪现水印,即文字在全屏无规律的出现
gif动态水印,可用作特效动态水印
ASS水印,可用于ASS水印和跑马灯

操作步骤

先点击EFV后台左侧 ⇒ 转码相关 ⇒ 水印/跑马灯设置 ⇒ 所见即所得编辑器 ⇒ 点击添加按钮,具体操作可看下方视频。

视频演示

提示:请点击播放器右下角全屏按钮进行观看。
绑定分类和随机使用水印
提示:目前EFV最新版和演示视频区别就是,新版已新增分类绑定和随机使用水印功能,操作更灵活。

设置好各种类型的跑马灯和水印后,默认对全部的视频同时生效,如果你想部分的水印和跑马灯只对某些分类的视频生效,则可直接在跑马灯/水印页面给跑马灯和水印绑定好视频分类即可。

绑定好分类后,转码的时候,该水印和跑马灯就只对该分类的视频生效,其它分类的视频就不会生效了,可以用来给不同分类的视频设置不同的水印和跑马灯。

最后如果你同类型的水印和跑马灯设置了很多个,然后想每次视频转码随机使用其中1或多个,则可直接在跑马灯/水印页面点击随机设置,进行相关调整即可。

时间说明

默认的时间规则从0秒开始,然后根据持续时间间隔时间的设置来循环,这里的失效时间仅为0秒到多少秒不出现指定跑马灯/水印。

比如我设置跑马灯持续时间为30秒,间隔时间为200秒,失效时间为40秒,则具体规则如下:

1、根据默认的时间规则,跑马灯出现顺序为0-30秒,200-230秒,400-430秒等。
2、由于我设置的失效时间为40秒,也就是0秒到40秒不出现该跑马灯,则上面的0-30秒段跑马灯不会出现,只会出现200-230秒,400-430秒等。
3、也就是如果失效时间在30-200秒之间的效果都一样,都是从第二段200-230秒,400-430秒等出现。

持续时间:静态图片、静态文字、gif动态这3个水印可以不设置,不设置默认全程显示;但是跑马灯、文字闪现、图片移动这些水印必须设置,不然会转码错误。

间隔时间:不支持静态图片、静态文字、gif动态这3个水印,即这些水印可以不用设置;但是跑马灯、文字闪现、图片移动这些水印必须设置,不然会转码错误。

失效时间:对所有水印都起作用,如不设置,则不会对水印开始时间产生影响,即从0秒开始作用。

操作说明

添加好相关类型水印后,需要使用鼠标左键拖动水印的位置,用来获取水印的坐标。

跑马灯由于是水平移动,所以只需要调整高度即可;图片弹动水印和文字闪现水印运动轨迹都是内置的,所以你可以随便移动到哪,仅用于获取坐标并设置时间。

最后每一个水印设置好相关时间后,都要点保存设置;如果未提交之前想重新调整下位置和时间,可以继续拖动水印并设置,调整完毕后点保存即可。

文本水印字体修改

跑马灯水印、静态文字水印、文字闪现水印,这几个水印的字体样式都是可以修改的,可直接前往转码设置,找的字体相关设置项进行调整。

ASS水印设置

目前ASS水印编辑功能还未完善,上手可能有点难度,有经验的可以试试。

先点击EFV后台左侧 ⇒ 转码相关 ⇒ 转码设置 ⇒ 开启全局ASS特效字幕,然后设置ASS水印代码即可。

ASS水印会和上方设置的各种类型的水印、跑马灯同时生效,在转码的时候会自动烧录进所有视频中。

6 - 自定义切片路径设置规则

支持自定义切片路径,但依旧以切片目录videos为参考,随机组合年月日、视频名称及分辨率等路径命名方式。

自定义切片路径,并不是说给你存放到任意文件夹,还是以切片目录videos为参考,只是更改M3U8存储目录的命名方式。

设置步骤

点击EFV后台左侧 ⇒ 转码设置 ⇒ 找到自定义切片路径选项,且默认设置路径为{yy}{mm}/{dd}/{id}/{random}

路径可用的变量参数如下:

#可用日期的变量,可以使用1个或多个,可以都不用,组合参考{yy}{mm}/{dd},{yy}/{mm}{dd}
{yy}为当前年份2021
{mm}为当前月份04
{dd}为当前日期21

#用来存储视频的变量,必须存在一个或多个,推荐要么只使用{id},要么{id}{name}一起用,防止出现文件夹重复的报错。
{id}为24位唯一ID,也就是不会重复
{name}为转码的视频名

#可用的分辨率存储变量,必须存在一个,且只能存在一个,要么{random},要么{hd}
{random}为随机6位字符
{hd}为分辨率如720

注意除了分辨率变量,其它变量可以连在一起,也可以使用/隔开,也就是文件夹目录层的写法。

分辨率变量必须放到最后面,并使用/隔开,如/{random}/{hd},不然转码会出错。

示例参考

#示例一
{yy}{mm}/{dd}/{id}/{random},即生成的m3u8链接参考/videos/202105/01/608ce526c78d944ef4707a89/g803c3/index.m3u8

#示例二
{id}/{random},即生成的m3u8链接参考/videos/608ce526c78d944ef4707a89/g803c3/index.m3u8

#示例三
{id}/{hd},即生成的m3u8链接参考/videos/608ce526c78d944ef4707a89/720/index.m3u8

#示例四
{yy}{mm}/{dd}/{name}/{hd},即生成的m3u8链接参考/videos/202105/01/你好帅/1080/index.m3u8

#示例五
{yy}{mm}/{dd}/{id}{name}/{hd},即生成的m3u8链接参考/videos/202105/01/608ce526c78d944ef4707a89你好帅/1080/index.m3u8

还有更多的组合建议自己测试下,如果你需要使用{name}来区分视频文件夹,则建议和{id}一起用,防止出现文件夹重复的报错,当然如果你确定视频不会重复,则可以只用{name}

7 - 去除跑马灯和水印步骤

目前支持同时除去多个位置和时间段的水印、跑马灯,推荐和烧录跑马灯、水印搭配使用,效果更加。
提示:去水印、跑马灯必须要转码下才生效;秒切是无效的,也就不会给你去除任何水印、跑马灯。

去除水印、跑马灯过程中,会最大程度的给你还原之前的视频画面,但不会给你100%还原,目前还没有可以100%完全还原的技术。

所以在去除的时候,建议在去除的同位置上,加上自己的水印、跑马灯,这样去除的时候,会同时烧录你的水印,可达到最佳效果。

操作步骤

提示:目前暂时不能处理那种随机位置的水印,随机水印推荐使用水平镜像翻转功能,可以模糊随机水印,间接达到去水印目的,可转码相关开启该功能。

设置去水印、跑马灯之前,需要先停止自动转码,否则需要去除水印的视频开始转码的话,再设置是无效的。

先点击EFV后台左侧 ⇒ 转码相关 ⇒ 去水印/跑马灯设置 ⇒ 添加模板 ⇒ 编辑模板,具体操作可看下方视频。

模板的作用就是根据参照视频提前设置好相关除去规则,然后和该参照视频拥有同时间段,同位置水印、跑马灯的视频可直接使用,无需再次设置相关去除规则。

视频演示

提示:请点击播放器右下角全屏按钮进行观看。
绑定分类
提示:目前EFV最新版和演示视频区别就是,新版已新增分类绑定功能,操作更方便。

设置好去除规则模板后,可直接在模板页面给该模板绑定好视频分类,再将需要去除的视频调整到该分类,最后转码的时候该分类的视频自动使用该模板去除规则,无需手动给视频单独设置模板了。

操作注意事项

设置的时候,你只需要长按鼠标左键,框住你选择的水印或跑马灯范围即可,设置期间框框可自行调整大小,坐标参数会自动根据你的框获取。

每次只能添加一个规则,如果你有多个位置、时间段的水印或跑马灯,那么需要添加多次。

最后给视频选择去除模板的时候,该视频必须符合你选择的模板去除规则,不然转码有概率会出错。

8 - srt和ass字幕烧录教程

目前可以将服务器字幕文件入库烧录进视频,后台上传字幕文件,mkv等包含字幕流的视频时会自动提取字幕等。
提示:烧录字幕必须要转码下才生效,秒切是无效的,也就不会给你烧录任何字幕。

自动提取字幕

如果你的视频包含字幕流,比如mkv等,可点击EFV后台左侧 ⇒ 转码相关 ⇒ 开启自动提取字幕功能。

开启该功能后,转码的时候会自动提取srtass字幕文件,并烧录进视频中;如有多个字幕,默认提取第一个字幕,且优先提取中文字幕。

后台上传字幕

提示:后台上传的字幕文件必须为utf-8编码,不然转码会出现错误。

目前支持asssrt字幕,字幕和视频同名会自动匹配,如西游记.mp4西游记.ass,匹配后会在视频转码期间自动烧录字幕。

srt和ass字幕入库

提示:入库的字幕文件必须为utf-8编码,不然转码会出现错误。

具体说明和操作可查看 ⇒ 传送门

9 - 设置片头和片中广告

支持动态添加切片和片中广告,任何视频均生效,且多个广告会随机读取,片中广告也可指定播放次数。

片头和片中广告可以随时添加、删除,且同时设置多个广告视频会随机读取一个播放。

设置步骤

设置均为动态处理,即不管是开启还是关闭切片广告,或新增切片广告内容,对所有的视频都是立即生效。

添加并设置切片广告

前往程序后台 ⇒ 点击左侧转码相关 ⇒ 切片广告, 先点广告设置,如下:

先别开启广告,只设置广告转码后的分辨率、码率和帧率,记得如果是转码,分辨率和你转码的分辨率选择一样,多码率就折中;如果是秒切,就选择最靠近你源片的分辨率,这样兼容性最好。

接下来我们开始添加视频广告,添加方法有2种,如下:

1、点击【添加视频广告】,将你提前准备好的视频广告上传上去。
2、点击【生成视频广告】,设置视频广告文字、持续时间、背景图点击生成。注意该处背景音乐是固定的,可自行替换,路径public/stream/bgm.mp3。

添加好视频广告后,需要在浏览器刷新一下切片广告界面,就会显示该广告名称。

然后点击转码全部切片广告,转码完成后,开始设置片头或片中。

最后设置好切片广告后,还需要开启切片广告,不然所有视频不会生效。

开启切片广告和设置片中显示次数

接下来继续点击广告设置,开启切片广告,并且根据自己的需求设置片中广告显示次数,如无片中广告可不用管。

最后片头和片中广告默认对全部的视频生效,如果你想部分视频不生效,则看该页面最下方。

设置片头和片中广告对部分视频不生效

由于片头和片中广告设置后,默认对全部的视频生效,如果你想部分视频不生效,则进行以下步骤。

开启/关闭跳过切片广告

前往程序后台 ⇒ 进入视频管理,批量选择不想生效的视频,点击下方批量跳过切片广告,进行关闭或开启即可。

开启和关闭是立即生效的,可以根据自己需求进行调整。

如何查看视频是否开启/关闭跳过切片广告

前往视频管理,先去标题栏把是否跳过切片广告调出来,方便标题栏查看。

然后点击其它筛选,选择已跳过未跳过即可。

最后可以批量进行相关操作了。

相关说明

关于线路管理对切片广告的影响

2023-07-22版本开始,切片广告已适配了线路管理功能,如设置线路后,切片广告也会走该线路,说明如下:

1、如果你是同步到云存储或者其它服务器做线路管理,需要手动把切片广告传到对应的地方,切片广告路径为public/stream,stream文件夹和切片的videos文件夹同目录即可。
2、如果你是自建cdn或使用商用cdn则无需进行其它设置,cdn会自动读取缓存。

时间戳防盗链说明

如果你只使用时间戳防盗链的广告跳转功能,则不需要设置片头和片中广告,直接添加视频并切片即可,如果添加多个切片广告,则无权限的会随机返回其中一个切片广告。

10 - 烧录封面广告和片头广告

目前可设置N个封面图片和N个片头广告,并在切片的时候,会自动烧录进视频,而且可以只烧录进某分类视频。

烧录封面广告

目前将封面广告图片烧录进视频开头后,如果保留切片后的MP4,这些MP4视频在社交、网盘、电脑桌面、视频播放器等应用软件显示的封面均为该广告图片。

可直接前往程序后台 ⇒ 点击左侧转码相关 ⇒ 片头视频设置, 按照功能页面的说明添加好封面图片、持续时间,最后开启广告即可。

烧录片头广告

目前将片头广告烧录进视频的开头后无法进行替换;如果你想随时替换片头广告,则推荐使用切片广告功能,还支持片中广告 ⇒ 使用教程

可直接前往程序后台 ⇒ 点击左侧转码相关 ⇒ 封面广告设置, 按照功能页面的说明添加好片头广告视频,最后开启广告即可。

相关说明

封面广告和片头广告默认争对所有视频生效,如果你只想给指定分类使用,则可以设置后,分别给这些广告绑定好分类即可。

如果封面广告和片头广告同时开启,则会先烧录片头广告,再烧录封面广告,最终效果就是封面广告会在最前面,片头广告在后面。

11 - 视频防盗防播及图片加密

支持时间戳+播放次数防盗链,图片加密,图片转换文本,切片伪装图片,指定地区ip过滤访问,HLS双重加密等。

引用网址

提示:该功能可阻止其它网站直接使用EFV的M3U8链接进行播放使用。

可点击EFV后台左侧 ⇒ 转码相关 ⇒ 防盗链/图片加密设置,进行相关设置。

在此处设置指定站点域名后,只允许m3u8切片在该域名所建立的网站上播放,其它站点调用均会失败;注意多域名配置中间用|分开,比如https://demo.efvcms.com|https://cms.efvcms.com

TS禁止下载合并

提示:该功能屏蔽了绝大部分的下载工具,即禁止被这些工具下载合成M3U8。

可点击EFV后台左侧 ⇒ 防盗链/图片加密设置,开启该功能即可。

TS切片伪装PNG图片

提示:该功能除了一些特殊用途外,还可以防止被一些工具直接下载合并。

可点击EFV后台左侧 ⇒ 转码相关 ⇒ 转码设置,开启该功能即可。

时间戳+播放次数防盗链

提示:目前结合防盗、兼容性、对接难度来说,此防盗链算是最适合的。

可点击EFV后台左侧 ⇒ 转码相关 ⇒ 防盗链/图片加密设置,开启时间戳+播放次数防盗链并设置KEY值,再开启TS或伪装切片的时间戳防盗链验证

对接原理

开启时间戳防盗链功能后,我们需要使用播放次数、过期时间戳、时间戳KEY值和M3U8链接进行组装加密,获取到一个可供播放的新KEY,然后该M3U8链接后面加上这个新KEY值就可以正常播放了。

主要对接参数说明:

播放次数:比如我播放次数设置2,即请求2次M3U8链接后,会直接失效。
过期时间戳:比如我设置5分钟后过期,即5分钟后该M3U8链接直接失效。

如果访问M3U8链接的时候,使用的新KEY值不对,或者单ip播放次数用完、时间戳已过期,都会提示无权限。

单独访问TS加密的KEY文件、切片文件的时候,使用的IP和对应的M3U8IP来源不一样,或新KEY值不对,播放次数用完等,也会提示无权限。

返回信息

访问M3U8无权限的时候默认会返回403提示,如果你想返回一段视频,可以添加切片广告 ⇒ 传送门

如果添加多个切片广告,则无权限的会随机返回其中一个切片广告视频。

对接说明

自带的CMS、苹果CMS爱影CMS均已适配,且自带的CMS开启该功能后会自动处理,苹果CMS可前往发布到苹果CMS文档获取对接文件 ⇒ 传送门,爱影CMS可前往发布到爱影CMS文档获取对接文件 ⇒ 传送门

其它程序可以查看对接文档 ⇒ 传送门,然后自行开发对接。

动态加密封面/截图

提示:该功能为动态处理,即服务器里面的图片并未加密,只是读取的时候给你加密,且开启和关闭均立即生效。

可点击EFV后台左侧 ⇒ 转码相关 ⇒ 防盗链/图片加密设置,开启该功能;且不能同时开启图片转换txt文本功能,不然txt文本功能优先级会高于加密

开启图片加密后,基本上转码生成的封面、截图全部会被加密乱码,完全看不到任何实质内容,需要在前端使用特有的解密逻辑,方可正常显示。

这里提供一个简单的对接示例 ⇒ 传送门,并根据文档示例集成到自己的网站即可。

封面/截图动态转换txt文本

提示:该功能为动态处理,即服务器里面的图片并未处理,只是读取的时候给你转txt,且开启和关闭均立即生效。

可点击EFV后台左侧 ⇒ 转码相关 ⇒ 防盗链/图片加密设置,开启该功能。

开启之后,程序会自动将封面/截图自动转换成txt文本,且默认的截图和图片均会无法正常查看,直接请求会显示403 Forbidden提示。

使用方法

我的图片链接为/videos/202104/16/60797eb23b54185df2317c5f/cover.jpg,我直接将.jpg换成.txt就可以了。

比如/videos/202104/16/60797eb23b54185df2317c5f/cover.txt,读取的时候会自动转换成txt文本。

且原有.jpg地址会返回403 Forbidden提示,既不会显示图片了,然后直接在前端使用base64解密调用。

这里提供一个简单的对接示例 ⇒ 传送门,并根据文档示例集成到自己的网站即可。

HLS双重防盗链

提示:该防盗链属于里面盗取难度最大的,几乎不可能被盗,由于国产浏览器问题,推荐专注国外用户的可以使用。

可点击EFV后台左侧 ⇒ 转码相关 ⇒ 防盗链/图片加密设置,设置防盗链KEY值,且设置自动开启,留空立即关闭。

然后前往转码设置,开启TS加密,也就是需和TS加密搭配一起使用才生效,即该功能仅仅对TS加密的M3U8有效。

加密原理

该功能参考保利威视的防盗链策略,EFV系统对M3U8KEY文件链接和KEY文件内容进行双向加密,通过修改hls.js文件来达到自己的解密逻辑,做到双向对称加密和解密。

再将hls.js文件解密的逻辑通过JS混淆加密的方式保护,并魔改hls.js,实现了绑定域名调用,使其防盗链防下载防合并防破解的功能极其强大。

比如我开启并设置HLS双重防盗链后,在没有解密的情况下,读取一个M3U8文件,内容如下:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:5
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-KEY:METHOD=AES-128,URI="http://192.168.3.16?token=FEfKlXoXbFF7xr7yPAK2k81G5kZesZEQyAlqDPc67GIS1VUVAZfO0euFgQMxjRpAplZpOxuv/to="
#EXTINF:4.800000,
indexEccdE0fc0ACcdC0A.ts
#EXTINF:4.360000,
indexf81cggd7A0c0905E.ts
#EXTINF:3.320000,
index31696Ba7gab3CA3d.ts

会发现TS加密的key文件地址为本地地址,意味着读取不到key文件,也就是播放不了该M3U8

如果在我们已经对接过解密的网站播放,通过抓包获取到了key文件链接,并获取到key文件内容,依然不能下载,因为key文件内容也会加密,也就是说的双重加密,总之盗取难度极大。

使用说明

由于国产浏览器会替换你的解密hls.js文件,会导致解密失效,所以专注国外用户的可以使用,国内不推荐。

需要使用的可自行查看文档获取解密hls.js文件 ⇒ 传送门,并根据文档教程集成到自己的网站即可。

12 - 云存储同步详细设置

支持S3、七牛云、又拍云、腾讯云OSS、阿里云OSS、其它服务器、谷歌云、Bunny、CF R2、华为云、Wasabi、Blob。

一般我们转码后,有的对播放速度不满意,除了使用CDN加速外,还可以将切片上传到其它服务器、阿里云OSS、七牛云或者其他云存储进行加速。

目前已支持以下存储:

亚马逊S3,也适用于接口支持AWS S3的存储服务
Minio存储,适用于同步到其它服务器
Cloudflare R2
华为云
七牛云
阿里云OSS
腾讯云OSS
又拍云
Wasabi
Bunny
Google Cloud Storage
Azure Blob Storage

同步步骤

同步期间会记录同步日志,再次同步的时候,会跳过已同步的切片;如果想重新同步,可先批量清空同步日志,程序会重新扫描并同步。

且每个文件上传失败默认有3次重试次数,如果3次依旧失败,则该文件在本次扫描不会再次上传,直到下次重新扫描会再次尝试上传。

操作步骤

先前往EFV后台左侧 ⇒ 转码相关 ⇒ 云储存设置,添加对应的云存储,然后开启同步。

同步参数

云存储需要的同步参数在每个类型添加页面都有说明,这里说一下比较难找的几个。

S3endpoints参考 ⇒ 点击查看

Wasabiendpoints参考 ⇒ 点击查看,基本上组成就是s3.region.wasabisys.com

CF R2endpoints参考 ⇒ 点击查看,基本上组成就是https://ACCOUNT_ID.r2.cloudflarestorage.com

Minio存储需要在接收同步的服务器上安装Minio,安装教程 ⇒ 点击查看;还需要让转码服务器Minio服务器的时间一致,不然同步会失败,可使用date命令进行时间查看。

如果两台服务器时间不一样,可以分别在ssh客户端运行命令改一下:

rm -rf /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

#查看修改后的时间
date

如何查看视频是否已同步

前往视频管理,先去标题栏把是否已同步调出来,方便标题栏查看。

然后点击其它筛选,选择已同步的视频即可。

如何批量清空视频同步记录

前往视频管理 ⇒ 其它筛选,选择已同步的视频,然后批量选择,点击下方批量清空同步记录即可

最后清空后,同步监听会重新自动同步这些视频。

同步日志查看

使用SSH客户端,比如Xshell软件,登录服务器,再使用命令:

pm2 log efvasync

修改监控间隔时间

目前默认间隔3分钟,先编辑helper/newcloud.js文件,需要修改代码await agenda.every("3 minutes", "auto async"),修改如下:

#分钟单位minute,且大于1分钟用minutes
1 minute
2 minutes
3 minutes

#秒钟单位,比如20秒
20 seconds

#如果我要修改为30秒,则具体代码
await agenda.every("30 seconds", "auto async");

根据自行情况进行相关修改,不建议改太低,否则会占用资源;修改完重新开启同步即可。

如何加快同步速度

提示:机器性能一般的默认即可,不然上传太猛服务器容易崩掉,或者被云存储服务商限制,导致上传出错,不是太赶速度就微调下即可。

目前同步原理就是,按时监听未同步的视频,然后每次只处理2个未同步视频,处理该未同步视频的时候,每次同时上传5个切片,依次传完。

如果你的视频量大,且都是长视频,并且同步远远赶不上秒切速度,则可以修改如下配置进行同步加速,编辑helper/newcloud.js文件,修改如下:

#同时处理未同步的视频数,默认2
asyncMapLimit(unAsyncFiles, 2, async (file)

#处理每个未同步的视频的时候,每次上传的切片数,默认5
await asyncMapLimit(files, 5, async (file)

最后修改完毕后,重新点击开启同步就行了。

13 - 分发即线路管理设置

该功能会动态修改M3U8里面的TS切片地址,使其从其它服务器、云存储等读取切片,从而解决负载、带宽等问题。

线路管理原理详解

一般我们播放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种方法,分别如下:

第一种,将切片等文件同步到其它服务器,或云存储如亚马逊S3CF 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:3001:3005: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线路,且使用1n个网络比较好的线路链接,定时任务设置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

14 - 快速剪切片头和片尾

目前可批量对视频快速进行片头和片尾剪切处理,或转码自动跳过一定时长的片头。

剪切片头和片尾

剪切之前,需要先停止自动转码,否则需要剪切的视频开始转码的话,再剪切是无效的。

前往程序后台 ⇒ 点击左侧转码相关 ⇒ 视频管理, 然后选中需要剪切的视频,再点击下方批量剪切片头/尾,进行相关设置即可。

片头具体到时间日期,比如去除10s片头,则填00:00:10;片尾具体到秒,比如去除10s片尾,则填10

建议一次性选择数量最好保持在30个以内,性能好的可以选择多点,否则一次性剪切太多,会因为服务器性能问题容易卡死。

由于部分视频编码的问题,比如RMVB等,是不能直接快速剪切的,这时候可以使用全局跳过片头,从而达到剪切目的。

全局跳过片头转码

注意:全局跳过片头必须要转码下才生效;秒切是无效的,也就不会给你去任何片头。

该功能适合多个同时间片头、且无法快速剪切的视频,可前往程序后台 ⇒ 点击左侧转码相关 ⇒ 转码设置,找到该选项即可。

15 - 自动裁剪指定片段视频

目前可在转码期间自动裁剪指定时间片段的视频,可搭配远程转码API使用。

自动裁剪步骤

后台上传视频之前,需要将视频命名成文件名@开始时间-结束时间@,视频后缀类型不限制,然后上传后会自动根据视频命名规则进行截取。

比如我上传的视频名为爱情公寓@00.00.12-00.00.22@,时间规范为时.分.秒,则转码时会自动裁剪截取00.00.12-00.00.22之间的视频。

裁剪API使用

目前裁剪API需和远程创建转码任务结合使用,用法如下:

post: /apifluent/cut

data: {
apikey,
apisecret,
start, //裁剪起始时间,规范为时:分:秒,如 00:00:12
end, //裁剪结束时间,规范为时:分:秒,如 00:00:22
video,  //远程视频地址,即可访问的视频地址
notifyUrl  //通知域名,转码完成的id、视频名称、m3u8链接、海报截图会自动回传到这个地址。
}

{
 "success": 1|0  //1为创建成功
}

API可自动下载视频链接,并自动裁剪和远程创建任务,待自动转码后,会直接返回数据,无需后台操作。

回传数据参考:

#返回数据仅供参考,实际情况可能会有不一样
{
  success: 1,
  movie: {
    count: 0,
    retry: false,
    director: [],
    writer: [],
    stars: [],
    country: [],
    tags: [],
    screenshots: [],
    _id: '5fe19c79cb8b853f256a458f',
    status: '转码完成',
    originalname: '远程测试.avi',
    path: './download/远程测试.avi',
    size: '112406774',
    notifyUrl: 'http://api.domain.com/api/payback',
    clientId: '5fe19c7888f5be253328806a',
    m3u8paths: [ [Object], [Object], [Object] ],
    thirdm3u8: [],
    createAt: '2020-12-22T07:15:47.300Z',
    __v: 0,
    duration: '3分钟',
    moviepath: '/videos/202012/22/5fe19c79cb8b853f256a458f',
    previewvideo: '/videos/202012/22/5fe19c79cb8b853f256a458f/preview.mp4',
    poster: '/videos/202012/22/5fe19c79cb8b853f256a458f/cover.jpg'
  },
  apikey: '5c20cEga22FgG7f7B1c1',
  apisecret: 'cd5c5ffd476f93602135'
}
[
  [Object: null prototype] {
    domain: 'http://127.0.0.1:3000'
  }
]
{
  title: '远程测试.avi',
  url: '240P$http://127.0.0.1:3000/videos/202012/22/5fe19c79cb8b853f256a458f/3413b2/index.m3u8#',
  server: { connect: { id: '5fc7242b0446292f13401fe2' } }
}

16 - 下载BT种子和M3U8等

支持BT种子文件下载、M3U8链接、视频直链、YouTube等下载,可使用API远程操作。

BT种子下载

前往程序后台 ⇒ 点击左侧转码相关 ⇒ BT管理中心,点击上方下载设置,进行相关设置,如图:

先设置好后缀过滤,大小过滤;然后可上传BT种子文件进行下载。

如果你下载里面有压缩包,并且都是有效视频,可通过BT列表文件名称右侧的链接快速前往文件夹管理,将该压缩包解压,并直接将里面的视频添加到转码队列。

修改下载的并发数

默认最多同时下载8bt任务,修改并发可编辑源码目录下的aria/aria2.conf,将max-concurrent-downloads=8后面的8修改其它数字,然后使用pm2 reload aria2c && pm2 reload aria2server命令重启生效。

M3U8和YouTube等下载

目前提供了M3U8MP4等视频直链、及YouTube等部分网站下载功能,可根据自身需求选择。

使用方法

前往程序后台 ⇒ 点击左侧转码相关 ⇒ 下载中心,添加相关链接下载。

批量添加的格式为分类名$视频名$下载类型$视频链接$封面链接,一行一个,如:

#如分类不存在会自动创建
神话片$西游记$m3u8$http://127.0.0.1:8080/1.m3u8$http://127.0.0.1:8080/1.jpg
恐怖片$僵尸先生$m3u8$http://127.0.0.1:8080/2.m3u8$http://127.0.0.1:8080/2.jpg

下载类型可用参数为m3u8downloadallm3u8仅支持M3U8downloadall支持m3u8mp4mkv等其它视频直链和youtube视频地址下载。

封面只支持pngjpgjpegwebp,且分类和封面可不填,如不要分类即不要分类名$,如不要封面即不要$封面链接,注意$符号位置,如:

#不要分类
西游记$m3u8$http://127.0.0.1:8080/1.m3u8$http://127.0.0.1:8080/1.jpg
僵尸先生$m3u8$http://127.0.0.1:8080/2.m3u8$http://127.0.0.1:8080/2.jpg

#不要分类和封面
西游记$m3u8$http://127.0.0.1:8080/1.m3u8
僵尸先生$m3u8$http://127.0.0.1:8080/2.m3u8

添加前请详细检查格式,格式不正确的行会被自动过滤,即不会添加到下载中心。

downloadall或通用下载不了

如果使用downloadall类型或通用首选项下载不了,即长时间卡下载中,则使用SSH客户端登录服务器,运行命令:

#先进入程序目录,请根据你的安装情况修改目录路径
cd /home/express-ffmpeg

#更新通用项下载插件
rm -rf node_modules/youtube-dl/bin/youtube-dl
wget https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -O node_modules/youtube-dl/bin/youtube-dl
chmod a+rx node_modules/youtube-dl/bin/youtube-dl

#重新启动命令
pm2 kill
export PATH=python3/bin:$PATH && pm2 start ecosystem.config.js --env production

M3U8类型下载出错或卡下载中

如果m3u8下载出错或者卡下载中,可能是有防盗链或者缺环境,可以使用命令行下载确认下,使用SSH客户端登录服务器,运行命令:

#运行之前,请修改为出错的m3u8链接
ffmpeg -i http://127.0.0.1:8080/1.m3u8 -c copy test.mp4

看看该命令是否报错,并出现403或相关字眼则是该m3u8加了防盗链。

如果出现Segmentation fault (core dumped)错误,使用命令:

#CentOS 7+、AlmaLinux、Rocky Linux系统
yum install nscd -y

#ubuntu、Debian系统
apt install nscd -y

#安装好nscd后再启动
systemctl enable nscd
systemctl start nscd

然后再手动运行上面的命令下载看看,如果还解决不了可将错误发给我们,协助快速解决。

修改下载并发数

并发数也就是最大同时下载数,目前默认每线程10并发,根据自己机器性能和需求自行修改。

比如我的程序安装的路径为/home/express-ffmpeg,那么前往该文件夹。

然后编辑源码目录里的helper/agenda.js文件,需要修改代码downloading < 10,只需要修改数字即可,如20并发就改成downloading < 20

最后改完使用命令pm2 reload efvcms重启生效。

修改监控间隔时间

监控间隔时间也就是每30秒监控,每次启动一个下载任务,直到正在下载数等于并发数。

比如我的程序安装的路径为/home/express-ffmpeg,那么前往该文件夹。

然后编辑源码目录里的helper/agenda.js文件,需要修改代码await agenda.every("30 seconds", "auto download")30 seconds30秒,只需要修改数字即可,如20秒就改成await agenda.every("20 seconds", "auto download")

最后改完使用命令pm2 reload efvcms重启生效。

下载API使用

POST /api/downloadm3u8

body: {
    category, //视频分类,可选项,请自行在转码设置分类处设置好分类,且默认只能一个
    apikey, //转码设置获取
    name, //视频名称,为必填项,下载完会自动命名
    url,  //下载链接,为必填项,注意如果地址包含&等特殊符号,如果影响到使用,记得转义下
    poster,  //封面链接,可选项,封面仅支持jpg、png、jpeg格式,下载转码后,会自动转换成封面1和封面2;如不填会自动生成封面。
    type,  //downloadall、m3u8,即下载类型,类型详解参考上面文档
    clientId, //可选项,传递一个数据库id,即客户端辨识视频id,当使用通知接口返回信息的时候会返回该id,让你对应并进行数据填充。
}

response: {
    success: 1|0,  //1成功,0失败
}

#curl命令使用示例
curl http://127.0.0.1:3000/api/downloadm3u8 -d "name=西游记&category=动作片&url=http://127.0.0.1:8080/1.m3u8&apikey=5c20cEga&type=m3u8&poster=http://127.0.0.1:8080/1.jpg"

17 - RSS和XML订阅自动下载

可以添加多个RSS和XML订阅地址,开启后会定时的请求订阅地址,并根据设置的规则提取BT链接自动下载。

订阅说明

提示:由于有些没速度的磁力不会在bt任务列表显示相关信息,而bt种子不管有无速度都会显示信息,所以推荐优先使用bt种子的订阅。

一般订阅下载主要用于一些未完结的动漫或剧集,然后通过订阅获取最快速度的资源更新;已完结的推荐直接在BT管理上传种子进行下载。

且订阅下载默认最多同时下载8个任务,不管你同时开启多少订阅,那么最多只能8个依次显示下载,其余会在后台慢慢等待。

修改并发可编辑源码目录下的aria/aria2.conf,将max-concurrent-downloads=8后面的8修改其它数字,然后使用pm2 reload aria2c && pm2 reload aria2server命令重启生效。

RSS订阅设置步骤

这里会拿动漫网站https://bangumi.moerss为参考,先前往BT管理中心,点击添加RSS订阅,大致所需参数:

#以下参数均为示例,仅作参考
RSS地址:https://bangumi.moe/rss/latest
资源标识:enclosure.url
查询间隔:30
包含关键词:CHT|1080|x264|GB|内封|MP4|内嵌|简体|简繁
包含关键词数量:3
发布类型:视频
是否自动发布:是
关联剧集:具体教程在本页下方,可暂时不设置(该功能适用于指定剧集的RSS,并提前设置好剧集信息,监控到新剧集自动下载并添加到剧集,智能处理分集名)
自动分类:日本动漫

比如我打开一个RSS地址https://bangumi.moe/rss/latest,该订阅中的item如下:

<item>
<title>
<![CDATA[ [动漫国字幕组&LoliHouse] 鲁邦三世 Part 6 / Lupin III - Part 6 - 16-18 [WebRip 1080p HEVC-10bit AAC][简繁内封字幕] ]]>
</title>
<description>
<![CDATA[ <p><img src="https://i.loli.net/2021/10/17/r81KGFHlfxsauT6.jpg"></p><p><strong>鲁邦三世 Part 6 / Lupin III - Part 6<br></strong></p><p><strong>字幕:动漫国字幕组</strong></p><p><strong>Encoder:Back@LoliHouse</strong></p><p>为了顺利地观看我们的作品,推荐大家使用以下播放器:</p><p>Windows: <a href="https://sourceforge.net/projects/mpcbe/" target="_blank">MPC-BE</a></p><p>macOS: <a href="https://lhc70000.github.io/iina/" target="_blank">IINA</a></p><p>iOS: <a href="https://itunes.apple.com/us/app/nplayer-lite/id1078835991?mt=8" target="_blank">nPlayer</a></p><p>Android: <a href="https://play.google.com/store/apps/details?id=com.mxtech.videoplayer.ad" target="_blank">MX Player</a></p><p><b><strong><b><a href="https://share.dmhy.org/topics/view/478666_LoliHouse_LoliHouse_1st_Anniversary_Announcement_and_Gift.html" target="_blank">点击查看LoliHouse一周年公告&amp;礼包</a></b></strong></b></p><p><b><strong><b><strong><b><strong><b><strong><b><a href="https://share.dmhy.org/topics/view/534469_LoliHouse_LoliHouse_3rd_Anniversary_Announcement.html" target="_blank">点击查看LoliHouse三周年纪念公告</a></b></strong></b></strong></b></strong></b></strong></b></p> ]]>
</description>
<link>https://bangumi.moe/torrent/6201e1018937cd0007796b89</link>
<guid isPermaLink="true">https://bangumi.moe/torrent/6201e1018937cd0007796b89</guid>
<pubDate>Tue, 08 Feb 2022 03:18:25 GMT</pubDate>
<enclosure url="https://bangumi.moe/download/torrent/6201e1018937cd0007796b89/[动漫国字幕组&LoliHouse] 鲁邦三世 Part 6 _ Lupin III - Part 6 - 16-18 [WebRip 1080p HEVC-10bit AAC][简繁内封字幕].torrent" length="0" type="application/x-bittorrent"/>
</item>

可以看见其下载地址(磁力或者种子地址)在enclosure这个标签中,而其中的url的则是真正的资源链接!于是我们这里资源标识填写:enclosure.url则可以了,有些rss订阅的下载地址是<link>https://efvcms.com/1.torrent</link>,则资源标识直接填写link即可!

查询间隔:30,这里意思是每30分钟请求一次订阅

包含关键词:GB|720|x264|CHT|内封|内嵌|MP4|简体|简繁,这里意思是标题需要包含哪些关键词才下载,用英文|隔开!

包含关键词数量:3,这里意思是,上边关键词中需要至少包含多少个关键词,才下载!

是否自动发布,意思是是否转码完成之后立刻发布!

自动分类,意思是下载完成之后自动分类至某分类!

以上,当我们全部设置好了之后,点击开始订阅,则一切都开始自动化了!自动下载,自动分类,自动转码,自动发布!完全自动化运营!

XML订阅设置步骤

前往BT管理中心,点击添加XML订阅,大致所需参数:

#以下参数以苹果CMS的XML为示例,仅作参考
XML地址:
资源数据标识:rss.channel.0.item
资源标题标识:title.0
资源标识:enclosure.0.$.url
查询间隔:120
包含关键词:CHT|1080|x264|GB|内封|MP4|内嵌|简体|简繁
包含关键词数量:3
发布类型:视频
是否自动发布:是
关联剧集:暂不设置(该功能适用于指定剧集的XML,并提前设置好剧集信息,监控到新剧集自动下载并添加到剧集,智能处理分集名)
自动分类:日本动漫

比如我打开一个苹果CMSXML地址,该订阅大概信息如下:

资源数据标识、资源标题标识、资源标识可以查看上方截图,模仿设置,如果是苹果CMS可直接照搬设置,其它XML不会的,直接联系我们即可。

查询间隔:120,这里意思是每120分钟请求一次订阅

包含关键词:GB|720|x264|CHT|内封|内嵌|MP4|简体|简繁,这里意思是标题需要包含哪些关键词才下载,用英文|隔开!

包含关键词数量:3,这里意思是,上边关键词中需要至少包含多少个关键词,才下载!

是否自动发布,意思是是否转码完成之后立刻发布!

自动分类,意思是下载完成之后自动分类至某分类!

关联剧集说明

提示:关联剧集用于全自动更新新番使用;如果想省事,也可以适用于已完结剧集,不过自动命名可能需要注意点,可看最下面说明。

关联剧集后,程序会根据RSS及设置的规则自动下载剧集,如果该剧集有更新,则会自动下载转码,并自动添加到剧集里面,且也会自动命名,基本全自动处理。

先点击EFV后台左侧 ⇒ CMS相关 ⇒ 剧集管理,新建一个剧集钻石王牌,标签,简介等相关信息都填好,如图:

然后接下来找到该剧集的专属RSS链接,我们先进入该网站的搜索页面,不知道搜索页面在哪的,可点击 ⇒ 搜索页面,然后搜索该剧集,如图:

然后点击右上角的RSS图标,可以获取到这个剧集关键词的专属RSS链接。

接下来添加RSS订阅的时候,填入专属RSS链接,并设置好相关信息(该网站可参考上面的RSS演示),关联剧集的话,搜索该剧集名称,选择即可。

注意自动发布需要开启,不然不会给你加到剧集;且关键词过滤尽量精准定位,可以把字幕组、分辨率、语言名称也加上,如极影字幕社|简体|MP4|720P,尽量具有唯一性,以免同类视频下载重复。

自动命名的注意事项

关联剧集之前,最好自己先手动至少添加一个从bt管理下载的单集进去,也就是目前的自动命名算法需要有一个参照物,不然第一个最先下载的视频,会没参照物,可能不会自动命名,之后下载的会对比第一个视频,就会自动命名了。

当然你也可以不用添加一个单集进去,后面可以自己挨个调整下,也不难,步骤这里说下,先找到一个剧集,点击添加分集。

然后找到未命名的那个集数,鼠标左键点击最左侧的3杠图标,可以上下自由拖动,根据集数拖到合适的位置。

然后根据其它集数的命名规则,手动修改下该集数的命名即可,记住格式为集数&单集视频ID,后面的&单集视频ID不要修改,只修改前面的集数命名。

改完点击提交就可以了。

最后已完结的剧集不推荐使用关联剧集功能,直接全部下载了,使用一键添加功能,一次性添加到剧集可能会更方便,当然看你习惯而定。

18 - BT手动和自动做种教程

目前支持手动批量做种、自动做种,做种期间可以加入相关广告文件,且自动做种支持API获取做种全部信息。

目前做种有3种类型,第1种为自动做种,即转码期间给你做完种;第2种就是定向做种,你可以转码后对指定视频做种;第3种就是批量做种,你可以一次性将多个视频做到一个种子,适合剧集等。

且由于EFV重启后,做种服务器会断开,需要一个一个重新启动做种会很麻烦,所以建议做完种后,迁移下做种数据,单独将做种数据存放到其他服务器,会更稳,也不会占用EFV服务器带宽,具体教程可看最后面。

自动做种步骤

提示:自动做种必须要转码下才生效;秒切是无效的,也就不会给你自动做种,秒切可使用定向或批量做种。

比如我想做种转码后的1080p分辨率的视频,先点击EFV后台左侧 ⇒ 转码设置,找到相关选项,如下:

然后我就需要转码1080p的视频,则多码率选中1080p,当然如果你也想同时转码其它分辨率,也可以选中即可。

接下来还需要保留1080p分辨率的mp4视频,也就是保留转码后的1080p mp4文件,用来做种。

注意,秒切一定要关闭,且自动做种的种子名称和视频名称一样,请转码之前提前修改好视频名称。

最后做种完毕后,前往BT管理中心查看种子信息即可。

自动做种通知接口

如果需要在第三方程序获取到做种资源,可点击EFV后台左侧 ⇒ 转码设置,找到做种成功通知域名,填入接收域名即可。

然后做种成功后就会将标题、截图、预览视频、磁力地址POST到这个域名,您在您的后台只需要针对这个接收API处理JSON数据入库您自己的第三方程序数据库即可。

JSON数据参考:

{
poster2: {
  url: '/videos/659254e55f957d40acd7649a/poster2.jpg',
  width: 600,
  height: 338
},
count: 0,
zan: 0,
collect: 0,
share: 0,
retry: false,
autoPublish: false,
director: [],
writer: [],
stars: [],
country: [],
tags: [],
screenshots: [
  '/videos/659254e55f957d40acd7649a/5.jpg',
  '/videos/659254e55f957d40acd7649a/3.jpg',
  '/videos/659254e55f957d40acd7649a/0.jpg',
  '/videos/659254e55f957d40acd7649a/1.jpg',
  '/videos/659254e55f957d40acd7649a/4.jpg',
  '/videos/659254e55f957d40acd7649a/2.jpg'
],
_id: '659254e55f957d40acd7649a',
status: '转码完成',
originalname: '视频名称',
path: './upload/8d2f39de174d54f1b53821b819cb9f70',
size: '68338293',
m3u8paths: [
  {
    _id: '659255685f957d40acd764db',
    hd: 1920,
    path: './public/videos/659254e55f957d40acd7649a/1080/index.m3u8'
  }
],
thirdm3u8: [],
updateAt: '2024-01-01T06:00:20.468Z',
createAt: '2024-01-01T06:02:16.181Z',
__v: 0,
duration: '2分钟',
moviepath: '/videos/659254e55f957d40acd7649a',
height: 1080,
width: 1920,
previewvideo: '/videos/659254e55f957d40acd7649a/preview.mp4',
firstScreen: '/videos/659254e55f957d40acd7649a/first.jpg',
poster: '/videos/659254e55f957d40acd7649a/cover.jpg',
download: './public/videos/659254e55f957d40acd7649a/1080.mp4',
totv: null,
magnetUrl: 'magnet:?xt=urn:btih:xxxx',
torrent: '/torrents/xxxx.torrent'
}

定向做种步骤

前往程序后台 ⇒ 进入视频管理,点击视频操作,选择做种即可!

由于做种会自动将M3U8合成视频文件,所以选择做种视频的分辨率必须存在,不然做种会出错。

批量做种步骤

批量做种适合合集或剧集,前往程序后台 ⇒ 进入视频管理,批量选择多个视频,点击下方的批量做种即可!

由于做种会自动将M3U8合成视频文件,所以选择做种视频的分辨率必须存在,不然做种会出错。

开启种子RSS

该功能会开启一个XML文件,通过P2P下载软件中的RSS订阅即可全自动下载EFV做种的文件,用于做种等功能,地址为/seed/rss

可点击EFV后台左侧 ⇒ 转码设置,找到是否开启做种RSS,开启即可。

广告植入

如果你想在种子里面打广告,并加入一些广告文件或图片,可直接将相关文件存放到转码源码里面的/bt/fuli文件夹,做种时会一起加进去。

迁移做种数据

我们将种子等相关文件迁移到其它服务器上,再删除EFV高级版上的做种数据和文件,这样就可以由该服务器提供节点给人下载,以减轻转码服务器的压力。

这里使用比较好用的qBittorrent用来存放做种数据,当然如果你只拿EFV做种,不使用切片播放功能,也可以根据下面的教程,在EFV服务器安装qBittorrent,把EFV的做种数据迁移过来。

安装qBittorrent

服务器建议优先安装Ubuntu,其次Debian 9+系统,安装教程 ⇒ 传送门

安装完成,并将该工具设置成中文后,再进入设置更改下做种上传信息,如下:

下载EFV做种的磁力

我们根据需求使用EFV将视频做成种子,如下:

然后我们再使用qBittorrent,下载EFV做种的磁力视频,如下:

下载可以手动复制EFV做种视频的磁力,或下载种子文件;还可以通过EFV的做种RSS自动下载,先开启EFV的做种RSS,再点击qBittorrent右上角的RSS功能进行订阅下载。

再前往EFVBT管理中心,将已经下载完成的做种信息删除即可,包括做种视频,可以节省硬盘空间。

最后其它人下载该视频种子磁力的时候,只消耗qBittorrent所在的服务器带宽,而不会消耗EFV高级版的带宽了。

如果我们忘记了某个视频的磁力,可以直接在qBittorrent客户端,鼠标右键该视频,复制磁力就可以了。

注意,当磁力变成热门的时候,也就是qBittorrent界面显示的在线用户数很多的时候,可以根据情况撤种,也就是删除该资源,节省带宽和资源。

撤种后,就由其它人来帮你提供下载了。