服务器视频文件入库和视频远程上传
通过API入库服务器入库文件夹的所有视频,及远程通过API上传视频。
视频文件入库
#该api效果可参考扫描入库,可以将movies所有视频入库到视频库,再自动转码。
POST /api/ruku
body: {
apikey,
}
response: {
success: 1,
}
#curl命令使用示例,apikey可在转码设置处获取
curl http://127.0.0.1:3000/api/ruku -d "apikey=5c20cEga"
上传
提示:大文件优先推荐使用TUS上传,其次是分片上传,小文件可以使用简易上传;如2025-05-15之前的版本,需更新到新版使用。
TUS协议上传
#TUS支持失败重试,可以自己设置重试间隔和次数,且上传过程中刷新页面或断网,再次上传相同文件会自动从断点处继续。
#上传文件,TUS协议会自动处理文件分片、断点续传等功能,默认分片大小为5MB
POST /client/uploads
Headers: {
Authorization: Bearer 5c20cEga22FgG7f, //5c20cEga22FgG7f为apikey,可在转码设置获取apikey
}
#上传完成后,再调用该接口创建转码任务
POST /client/createjob
Headers: {
Authorization: Bearer 5c20cEga22FgG7f, //5c20cEga22FgG7f为apikey,可在转码设置获取apikey
Content-Type: application/json
}
body: {
id, //必传,TUS上传完成后的文件ID
originalname, //必传,视频名称
category //可选,视频分类,如分类不存在会自动创建
}
response: {
success: 1, //0为失败,即上传完成会检测视频元数据,元数据有问题会提示上传失败并自动删除上传文件
id //视频ID
}
TUS
项目地址 ⇒ 传送门,Html
示例参考 ⇒ 传送门,编辑文件里面的接口地址和apikey
就可以直接测试了。
我们上传后,会自动返回一个视频objectid
,我们可以直接拿来组装自适应M3U8
地址,或者通过通知接口接收相关数据。
注意上传如果报错413
状态码,则可能是nginx
上传限制,调整下nginx
上传限制大小即可。
分片上传
#分片上传就是需要自己先把文件切成小块再上传,详情使用可参考下方HTML文件。
POST /api/upload?uploadkey=5c20cEga22FgG7f //后台设置上传秘钥
body: {
file, //必传,文件对象,分片之后的视频文件
filemd5, //必传,md5码,未分片前视频的独一无二的MD5码
chunk, //必传,当前分片数,从0开始
chunks, //必传,总分片数
size, //必传,视频总大小单位字节
originalname, //可选,视频名称,如不传默认使用文件名称
category //可选,视频分类,如分类不存在会自动创建
}
response: {
success: 1, //0为失败,即上传完成会检测视频元数据,元数据有问题会提示上传失败并自动删除上传文件。
id
}
Html
示例参考 ⇒ 传送门,编辑文件里面的接口地址和uploadkey
就可以直接测试了。
我们上传后,会自动返回一个视频objectid
,我们可以直接拿来组装自适应M3U8
地址,或者通过通知接口接收相关数据。
注意上传如果报错413
状态码,则可能是nginx
上传限制,调整下nginx
上传限制大小即可。
由于MD5
验证可能会很耗时,可以不用传递md5
,只需上传前提前使用验证接口判断视频是否存在即可,接口如下:
#后面为转码设置的apikey,originalname为传入的视频名称
Get /api/checkVideoExists?apikey=5c20cEga22FgG7f&originalname=青城山下白素贞
#返回信息
{
"success": false //true为该视频已存在,false为不存在。
id, //如果该视频已存在,则返回视频objectid。
}
简易上传
#上传凭证,转码设置下方获取
POST /api/simpleupload?uploadkey=5c20cEga22FgG7f
body: {
file, //必传,上传文件
originalname, //可选,视频名称,如不传默认使用文件名称
category //可选,视频分类,如分类不存在会自动创建
}
response: {
success: 1, //0为失败,即上传完成会检测视频元数据,元数据有问题会提示上传失败并自动删除上传文件。
id
}
#curl命令使用示例,uploadkey为上传凭证,可在转码设置处获取
curl http://127.0.0.1:3000/api/simpleupload?uploadkey=7e8EgFAe -F "file=@/root/xx.mp4"
我们上传后,会自动返回一个视频objectid
,我们可以直接拿来组装M3U8
地址,或者通过通知接口接收相关数据。
注意上传如果报错413
状态码,则可能是nginx
上传限制,调整下nginx
上传限制大小即可。
由于上传未作同名过滤,可在上传前提前使用验证接口判断视频是否存在即可,接口如下:
#后面为转码设置的apikey,originalname为传入的视频名称
Get /api/checkVideoExists?apikey=5c20cEga22FgG7f&originalname=青城山下白素贞
#返回信息
{
"success": false //true为该视频已存在,false为不存在。
id, //如果该视频已存在,则返回视频objectid。
}
封面上传
#上传凭证,转码设置下方获取
POST /api/uploadposter?uploadkey=5c20cEga22FgG7f
body: {
file, //上传图片文件,仅支持jpg、png、webp、jpeg
id, //视频id
}
response: {
success: 1,
poster,
poster2,
}