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输出文件名
ffmpegOptionsobjectFFmpeg 选项,从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切片选项
ffmpegOptionsobjectFFmpeg 选项

请求示例:

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 支持上传选项:

参数名类型必填说明
uploadOptionsobjectB 站上传选项

uploadOptions 字段:

参数名类型必填说明
uploadboolean是否上传
uidnumberB 站用户 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 过滤策略

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

请求示例:

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"
}

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

虚拟录制

测试虚拟录制配置

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

接口地址: 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.