Skip to content

视频处理 ​

读取视频元数据 ​

读取视频文件的元数据信息,如时长、编码器等。

接口地址: POST /task/videoMeta

请求参数:

参数名类型必填说明
filestring是视频文件路径

请求示例:

json
{
  "file": "D:/videos/test.mp4"
}

检查视频合并兼容性 ​

检查多个视频是否可以直接合并。

接口地址: POST /task/checkMergeVideos

请求参数:

参数名类型必填说明
inputVideosstring[]是视频文件路径数组

请求示例:

json
{
  "inputVideos": ["D:/videos/part1.mp4", "D:/videos/part2.mp4"]
}

合并视频 ​

合并多个视频文件。

接口地址: POST /task/mergeVideo

请求参数:

参数名类型必填说明
inputVideosstring[]是视频文件路径数组
optionsobject是合并选项

options 字段:

参数名类型必填说明
outputstring否输出文件路径
saveOriginPathboolean是是否保存到原始路径,如果该参数为true,output将不会生效
keepFirstVideoMetaboolean是是否保留第一个视频的元数据

请求示例:

json
{
  "inputVideos": ["D:/videos/part1.mp4", "D:/videos/part2.mp4"],
  "options": {
    "output": "D:/videos/merged.mp4",
    "saveOriginPath": false,
    "keepFirstVideoMeta": true
  }
}

响应示例:

json
{
  "taskId": "task_123"
}

视频转码 ​

对视频进行转码处理。

接口地址: POST /task/transcode

请求参数:

参数名类型必填说明
inputstring是输入文件路径
outputNamestring是输出文件名
ffmpegOptionsobject是FFmpeg 选项,从preset获取
optionsobject是转码选项

options 字段:

参数名类型必填说明
overrideboolean否是否覆盖已存在的文件
removeOriginboolean否是否删除原始文件
savePathstring否保存路径(支持绝对路径和相对路径)
saveType1 | 2是保存类型: 1-保存到原始文件夹, 2-保存到特定文件夹

请求示例:

json
{
  "input": "D:/videos/input.mp4",
  "outputName": "output.mp4",
  "ffmpegOptions": {
    "codec": "h264"
  },
  "options": {
    "saveType": 1,
    "override": false
  }
}

视频切片 ​

对视频进行切片处理。

接口地址: POST /task/cut

请求参数:

参数名类型必填说明
filesobject是文件信息
outputstring是输出路径
optionsobject是切片选项
ffmpegOptionsobject是FFmpeg 选项

请求示例:

json
{
  "files": {
    "videoPath": "D:/videos/input.mp4",
    "startTime": 0,
    "endTime": 60
  },
  "output": "D:/videos/output.mp4",
  "options": {},
  "ffmpegOptions": {}
}

字幕烧录 ​

将字幕烧录到视频中。

接口地址: POST /task/burn

请求参数:

参数名类型必填说明
filesobject是文件信息
outputstring是输出文件路径
optionsobject是烧录选项

options 支持上传选项:

参数名类型必填说明
uploadOptionsobject否B 站上传选项

uploadOptions 字段:

参数名类型必填说明
uploadboolean是是否上传
uidnumber否B 站用户 UID
aidnumber否稿件 ID(编辑稿件时使用)
configobject是上传配置

请求示例:

json
{
  "files": {
    "videoPath": "D:/videos/input.mp4",
    "danmuPath": "D:/videos/danmu.ass"
  },
  "output": "D:/videos/output.mp4",
  "options": {
    "uploadOptions": {
      "upload": true,
      "uid": 123456789,
      "config": {}
    }
  }
}

FLV 修复 ​

修复损坏的 FLV 文件。

接口地址: POST /task/flvRepair

请求参数:

参数名类型必填说明
inputstring是输入文件路径
outputstring是输出文件路径
optionsobject否修复选项

请求示例:

json
{
  "input": "D:/videos/broken.flv",
  "output": "D:/videos/repaired.flv",
  "options": {}
}

歌曲识别 ​

截取指定视频时间段的音频并进行歌曲识别。接口会先提取音频片段,再返回识别到的歌曲名;如果启用了歌词优化,也可能返回歌词 SRT。

接口地址: POST /ai/song-recognize

请求参数:

参数名类型必填说明
filestring是完整视频文件路径
startTimenumber是音频提取开始时间,单位秒
endTimenumber是音频提取结束时间,单位秒

请求示例:

json
{
  "file": "D:/videos/test.mp4",
  "startTime": 30,
  "endTime": 75
}

响应示例:

json
{
  "name": "Shape of You",
  "lyrics": "1\n00:00:30,000 --> 00:00:33,000\nThe club isn't the best place to find a lover\n"
}

响应字段说明:

参数名类型必返说明
namestring否识别到的歌曲名称
lyricsstring否歌词字幕 SRT 内容,仅在生成歌词时返回

错误响应示例:

json
{
  "error": "参数错误,必须包含 file、startTime 和 endTime 字段"
}

字幕识别 ​

对视频文件或指定时间段进行字幕识别,返回 SRT 字幕内容。

接口地址: POST /ai/subtitle

请求参数:

参数名类型必填说明
filestring是完整视频文件路径
modelIdstring是预留字段,当前实现实际读取 AI 配置中的字幕识别模型
startTimenumber否开始时间,单位秒
endTimenumber否结束时间,单位秒
offsetnumber否时间偏移量,单位秒
songboolean否是否按音乐场景识别,影响 ASR 过滤策略

当同时传入 startTime 和 endTime 时,接口会先提取该时间范围内的音频片段,再进行识别。

请求示例:

json
{
  "file": "D:/videos/test.mp4",
  "startTime": 0,
  "endTime": 20,
  "offset": 0,
  "song": false
}

响应示例:

json
{
  "srt": "1\n00:00:00,000 --> 00:00:02,100\n大家好\n\n2\n00:00:02,100 --> 00:00:04,800\n欢迎来到直播间\n"
}

响应字段说明:

参数名类型必返说明
srtstring是识别出的 SRT 字幕内容

错误响应示例:

缺少文件参数时:

json
{
  "error": "参数错误,必须包含 file 字段"
}

未配置字幕识别模型或识别失败时:

json
{
  "error": "字幕识别失败"
}

弹幕处理 ​

XML 弹幕转 ASS ​

将 XML 格式的弹幕转换为 ASS 字幕文件。

接口地址: POST /task/convertXml2Ass

请求参数:

参数名类型必填说明
inputstring是输入 XML 路径
outputstring是输出 ASS 路径
presetobject是弹幕预设配置
optionsobject否转换选项

options 字段:

参数名类型必填说明
syncboolean否是否同步等待任务完成
removeOriginboolean否是否删除原始文件(默认 false)

请求示例:

json
{
  "input": "D:/videos/danmu.xml",
  "output": "D:/videos/danmu.ass",
  "preset": {
    "resolution": [1920, 1080],
    "scrolltime": 8,
    "fontname": "Microsoft YaHei",
    "fontsize": 38
  },
  "options": {
    "sync": false,
    "removeOrigin": false
  }
}

响应示例:

json
{
  "taskId": "task_123",
  "output": "D:/videos/danmu.ass"
}

如果 sync 为 true,会等待任务完成后返回最终输出路径。

虚拟录制 ​

测试虚拟录制配置 ​

测试虚拟录制配置是否正确。

接口地址: POST /task/testVirtualRecord

请求参数:

参数名类型必填说明
configobject是虚拟录制配置
folderPathstring是文件夹路径
startTimenumber否开始时间(Unix 时间戳,秒)

config 字段(normal 模式):

参数名类型必填说明
modestring是模式,值为 "normal"
roomIdstring是直播间 ID

config 字段(advance 模式):

参数名类型必填说明
modestring是模式,值为 "advance"
roomIdRegexstring是直播间 ID 正则表达式

请求示例:

json
{
  "config": {
    "mode": "normal",
    "roomId": "123456"
  },
  "folderPath": "D:/records",
  "startTime": 1704067200
}

执行虚拟录制 ​

执行虚拟录制任务。

接口地址: POST /task/executeVirtualRecord

请求参数: 与测试接口相同

响应示例:

json
{
  "success": true,
  "message": "执行成功"
}

Released under the GPLv3 License.