音频文件远程上传和切片返回通知

通过API远程上传音频文件,并切完会立即将该音频所有信息POST到远程地址。

上传

提示:如果不会使用分片上传,可以使用简易上传或使用下载代替上传。

分片上传

#file是分片之后的音频文件,md5码是未分片前音频的独一无二的MD5码,size是视频总大小单位字节,chunk从0开始,chunks是总分片数
POST /api/audioupload

body: {
    uploadkey, //后台设置上传秘钥
    file, //文件对象
    filemd5, //md5码
    chunk, //当前分片数
    chunks, //总分片数
    size,  //文件大小
}

response: {
    success: 1,
    id
}

Html示例参考 ⇒ 传送门,编辑文件里面的接口地址和uploadkey就可以直接测试了。

我们上传后,会自动返回一个音频objectid,我们可以直接拿来组装M3U8地址,或者通过通知接口接收相关数据。

注意上传如果报错413状态码,则可能是nginx上传限制,调整下nginx上传限制大小即可。

由于MD5验证可能会很耗时,可以不用传递md5,只需上传前提前使用验证接口判断音频是否存在即可,接口如下:

#后面为转码设置的apikey,title为传入的音频名称
Get /api/checkAudioExists?apikey=5c20cEga22FgG7f&title=青城山下白素贞

#返回信息
{
    "success": false //true为该音频已存在,false为不存在。
    id, //如果该音频已存在,则返回音频objectid。
}

简易上传

POST /api/uploadaudio

body: {
    uploadkey, //上传凭证,转码设置下方获取
    file, //上传文件
}

response: {
    success: 1,
    id
}

#curl命令使用示例,uploadkey为上传凭证,可在转码设置处获取
curl http://127.0.0.1:3000/api/uploadaudio?uploadkey=7e8EgFAe -F "file=@/root/xx.mp3"

我们上传后,会自动返回一个音频objectid,我们可以直接拿来组装M3U8地址,或者通过通知接口接收相关数据。

注意上传如果报错413状态码,则可能是nginx上传限制,调整下nginx上传限制大小即可。

由于上传未作同名过滤,可在上传前提前使用验证接口判断音频是否存在即可,接口如下:

#后面为转码设置的apikey,title为传入的音频名称
Get /api/checkAudioExists?apikey=5c20cEga22FgG7f&title=青城山下白素贞

#返回信息
{
    "success": false //true为该音频已存在,false为不存在。
    id, //如果该音频已存在,则返回音频objectid。
}

通知域名获取切片信息

通知域名的作用就是可以将转码完成的视频或音频所有详细信息传给通知域名。

先去EFV后台转码设置设置一个对接域名,开启域名通知转码完成自动通知即可,如果你想设置多个通知域名,中间请使用英文|分开。

EFV会将切片完成的音频详细信息JSON类型POST到这个域名,您在您的后台只需要针对这个接收API处理JSON数据入库您自己的第三方程序数据库即可。

JSON数据

{
    _id: 67b3044fed5d983288605aa9,
    title: 'audio-5731800ba',
    status: '切片完成',
    path: 'audio/audio-5731800ba.aac',
    updateAt: 2025-02-17T09:41:35.233Z,
    createAt: 2025-02-17T09:41:35.233Z,
    __v: 0,
    audiopath: '/audios/67b3044fed5d983288605aa9',
    duration: '3:14',
    m3u8path: './public/audios/67b3044fed5d983288605aa9/index.m3u8',
    size: '3.06'
}

m3u8path参数为M3U8路径,需自行移除./public后,拼接下域名就可以使用了。