混剪API接口文档

基础信息

通用响应格式

所有接口都使用统一的响应格式WebResponse:

1{
2    "code": 200,          // 状态码:200成功,其他表示失败
3    "message": "success", // 响应信息
4    "data": {}           // 响应数据
5}
6

详细接口说明

1、获取视频上传链接&上传视频资源(这是两步!两步同时完成,才算资源彻底上传完成)

  • 接口:/upload_resource
  • 方法:POST
  • 描述:获取预签名的视频上传URL
  • 请求体
1{
2    "fileName": "",     // 文件名称
3    "contentType": ""   // 我们一般会用"video/mp4"或者"video/mkv"或者"audio/mpeg"
4}
5
  • 响应
1{
2    "code": 200,
3    "message": "success",
4    "data": {
5        "url": "预签名的上传URL"
6    }
7}
8
  • 第一步:获取视频上传链接效果curl
1curl --location 'http://api.lingyiwanwu.com/v1/mix_cut_video/upload_resource' \
2--header 'Authorization: Bearer your_api_key' \
3--header 'Content-Type: application/json' \
4--data '{
5    "fileName": "video.mp4",
6    "contentType":"video/mp4"
7}'
8
  • 第二步:有了预签名的上传URL之后,需要进行本地视频的真正上传(自己进行curl请求)
1curl -X PUT -H "Content-Type: video/mp4" -T /Users/xxx/文件路径 "https:预签名的上传URL"
2
3解释:
41、-T后面跟的是本地文件的资源路径,要精确到具体的文件,比如 /Users/test/myVideo.mp4
52、Content-Type有,video/avi,video/mp4等等,需要和第一步接口请求里面的contentType一致
63、最后一个参数就是第一步接口返回的https链接,链接前后需要加入""
74、这个curl会给你返回一个response,其中response.data.id就是该资源的ResourceId;
8{"code":0,"message":"Success","data":{"id":"2630ebd2ccca6c70f45e94ec84bf7dec"}}
9

2. 获取视频资源信息

  • 接口:/get_resource_by_id
  • 方法:GET
  • 参数:resource_id: 资源ID (string, 必填)
  • 响应:(建议只是关注url字段和资源的元数据信息meta,由于meta是个不确定的结构体,java请求方可以用Object来接收)
1{
2    "code": 200,
3    "message": "success",
4    "data": {
5        "id": "da90435b13c04113e747fdf956353573",
6        "mime": "video/mp4",
7        "name": "1.mp4",
8        "url": "https://pretrain-genius-resource-sh.oss-cn-shanghai.aliyuncs.com/yds%2Fprod%2F57f12bcd5688a8ef29fd120a711ed62d%2Fda90435b13c04113e747fdf956353573?OSSAccessKeyId=xxx&Expires=1730819476&Signature=xxx",
9        "source": {
10            "type": "local_upload",
11            "path": "1.mp4"
12        },
13        "meta": {
14            "AudioStreams": [
15                {
16                    "Bitrate": 64379,
17                    "ChannelLayout": "stereo",
18                    "Channels": 2,
19                    "CodecLongName": "AAC (Advanced Audio Coding)",
20                    "CodecName": "aac",
21                    "CodecTag": "0x6134706d",
22                    "CodecTagString": "mp4a",
23                    "Duration": 13.976961,
24            "FrameCount": 604,
25            "Index": 1,
26            "SampleFormat": "fltp",
27            "SampleRate": 44100,
28            "TimeBase": "1/44100"
29        }
30    ],
31    "Bitrate": 1323041,
32    "Duration": 13.977,
33    "FormatLongName": "QuickTime / MOV",
34    "FormatName": "mov,mp4,m4a,3gp,3g2,mj2",
35    "ProduceTime": "2024-10-30T16:21:18Z",
36    "RequestId": "5468AB4D-50FF-584A-9B9B-E5B9C2B50B00",
37    "Size": 2311519,
38    "StreamCount": 2,
39    "VideoHeight": 1024,
40    "VideoStreams": [
41        {
42            "AverageFrameRate": "30/1",
43            "BitDepth": 8,
44            "Bitrate": 1253129,
45            "CodecLongName": "H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10",
46            "CodecName": "h264",
47            "CodecTag": "0x31637661",
48            "CodecTagString": "avc1",
49            "ColorPrimaries": "bt709",
50            "ColorRange": "tv",
51            "ColorSpace": "bt709",
52            "ColorTransfer": "bt709",
53            "DisplayAspectRatio": "9:16",
54            "Duration": 13.933333,
55            "FrameCount": 418,
56            "FrameRate": "30/1",
57            "HasBFrames": 2,
58            "Height": 1024,
59            "Level": 31,
60            "PixelFormat": "yuv420p",
61            "Profile": "High",
62            "SampleAspectRatio": "1:1",
63            "TimeBase": "1/15360",
64            "Width": 576
65        }
66    ],
67    "VideoWidth": 576
68    },
69    "created_at": "2024-11-04T11:48:13.634000Z",
70    "uploaded_at": "2024-11-04T11:48:17.691000Z",
71    "updated_at": "2024-11-04T11:48:17.691000Z",
72    "chapters": [],
73    "transcript_id": ""
74    }
75}
76
  • 效果curl
1curl --location 'http://api.lingyiwanwu.com/v1/mix_cut_video/get_resource_by_id?resource_id=xxx资源Id' \
2--header 'Authorization: Bearer your_api_key' \
3--header 'Content-Type: application/json'
4

3. 创建新任务

  • 接口:/create_new_task
  • 方法:POST
  • 描述:创建新的混剪任务(返回的是混剪整个流程的主任务Id,改主任务流程下会有3个子任务(视频summary提取任务、混剪脚本的生成任务、视频生成任务))
  • 响应
1{
2    "code": 200,
3    "message": "success",
4    "data": 123  // 新创建的任务ID
5}
6
  • 效果curl
1curl --location 'http://api.lingyiwanwu.com/v1/mix_cut_video/create_new_task' \
2--header 'Authorization: Bearer your_api_key' \
3--header 'Content-Type: application/json'
4

4. 更新主任务BgmId

  • 接口:/updateTaskBgm
  • 方法:POST
  • 描述:更新生成视频的bgmId(背景音乐)这里的bgmId也就是resourceId,也是在第一个接口里面说明了,详情看第一个接口。
  • 请求体
1{
2    "taskId": 123,  // 任务ID,必须大于0
3    "bgmId": "XXXX"
4}
5
  • 响应
1{
2    "code": 200,
3    "message": "success",
4    "data": true  // 是否成功
5}
6
  • 使用curl调用示例
1curl -X POST 'https://api.lingyiwanwu.com/v1/mix_cut_video/updateTaskBgm' \
2-H 'Authorization: Bearer your_api_key' \
3-H 'Content-Type: application/json'
4--data '{
5    "taskId": 123, // 主任务Id
6    "bgmId": "XXX" // 背景音乐资源Id
7}'
8

5. 一键混剪

  • 接口:/one_key_submit_task
  • 方法:POST
  • 描述:提交一键混剪任务,
    对于视频的限制条件有:1、最多支持5个视频,最少支持3个视频;2、视频长宽比例9:16;3、视频长度120s以内,也就是2分钟;
  • 请求体
1{
2    "videoIdList": ["视频ID1","视频ID2","视频ID3"], // 视频ID列表,最多5个,最少3个;
3    "taskId": 123                                 // 任务ID,必须大于0,这个Id就是上面生成的主任务Id
4}
5
  • 响应
1{
2    "code": 200,
3    "message": "success",
4    "data": 123  // 返回处理结果ID
5}
6
  • 效果curl
1curl --location 'http://api.lingyiwanwu.com/v1/mix_cut_video/one_key_submit_task \
2--header 'Authorization: Bearer your_api_key' \
3--header 'Content-Type: application/json' \
4--data '{
5    "videoIdList": ["视频ID1","视频ID2","视频ID3"], // 视频ID列表,最多5个,最少3个
6    "taskId": 123                                 // 任务ID,必须大于0,这个Id就是上面生成的主任务Id
7}'
8

6. 获取任务信息

  • 接口:/get_task_info
  • 方法:GET
  • 参数
    taskId: 任务ID (integer, 必填)
  • 响应
1{
2    "code": 200,
3    "message": "success",
4    "data": {
5        "userMixCutMainTaskInfo": {}, // 主任务信息
6        "videoSummaryList": [],       // 视频解析任务列表
7        "videoScriptInfo": {},        // 脚本生成任务信息
8        "videoMashupList": []         // 混剪视频生成任务列表
9    }
10}
11
12主任务信息:
13"userMixCutMainTaskAPIInfo": {
14    Integer id;
15    String userId;
16    String appId;
17    String bgmId;
18}
19视频解析任务列表:
20"videoSummaryList":[
21    {
22        Integer taskId;
23        String userId;
24        String appId;
25        String taskRes;
26    }
27]
28脚本生成任务信息:
29"videoScriptInfo": {
30    Integer taskId;
31    String userId;
32    String appId;
33    String taskRes;
34}
35混剪视频生成任务列表:
36"videoMashupList": [
37    {
38        Integer taskId;
39        String userId;
40        String appId;
41        String taskRes;
42    }
43] 
44见备注附件 举例.json,如果无附件请联系客服处理。
45
  • 效果curl
1curl --location 'http://api.lingyiwanwu.com/v1/mix_cut_video/get_task_info?task_id=xxx' \
2--header 'Authorization: Bearer your_api_key' \
3--header 'Content-Type: application/json'
4

7. 获取下一个视频

  • 接口:/generate_next_video
  • 方法:POST
  • 描述:获取下一个待处理的视频
  • 请求体
1{
2    "taskId": 123  // 主任务Id,必须合法有效,就是上面生成的主任务Id
3}
4
  • 响应
1{
2    "code": 200,
3    "message": "success",
4    "data": true  // 是否成功
5}
6
  • 使用curl调用示例
1curl -X POST 'https://api.lingyiwanwu.com/v1/mix_cut_video/generate_next_video' \
2-H 'Authorization: Bearer your_api_key' \
3-H 'Content-Type: application/json'
4

错误码说明

  • 200: 成功
  • 400: 请求参数错误
  • 401: 未授权(API key无效)
  • 429: 请求频率超限
  • 500: 系统内部错误

注意事项

  • 所有接口都需要通过 Authorization头进行身份验证
  • 所有接口都有频率限制(具体限制规则待补充)
  • 视频上传数量限制为每次最多5个,最少3个
  • 每个请求都会返回TRACE-ID用于问题追踪
  • 建议在调用接口时做好异常处理,特别是网络超时等情况