提交任务

最近更新时间:2025-08-14 10:59:42

我的收藏

功能描述

提交一个音视频转封装(或音视频分段)任务,同时支持为音视频添加 AIGC 元数据标识。

授权说明

通过子账号使用时,需要在 授权策略 的 action 中添加 ci:CreateMediaJobs 权限。数据万象支持的所有操作接口请参见 CI action
子账号使用异步处理接口时,需要授予 cam:PassRole 权限,异步处理接口会通过 CAM 的“角色”进行 COS 的资源读写操作,PassRole 权限用于传递角色, 具体请查看 访问管理 > 写操作 > PassRole 接口

服务开通

使用该功能需提前 绑定存储桶,开通数据万象服务。
使用该功能需提前通过 控制台接口 开通媒体处理服务。
注意:
数据万象绑定后,如果您手动对存储桶进行数据万象的解绑操作,将无法继续使用该功能。

使用限制

使用该接口时,请先确认相关限制条件。详情请参见 使用限制

费用说明

该接口为付费服务,产生的费用将由数据万象收取,详细计费说明可参见 媒体处理费用


请求

请求示例

POST /jobs HTTP/1.1
Host: <BucketName-APPID>.ci.<Region>.myqcloud.com
Date: <GMT Date>
Authorization: <Auth String>
Content-Length: <length>
Content-Type: application/xml

<body>
说明:
Authorization: Auth String,详情请参见 请求签名 文档。

请求头

此接口仅使用公共请求头部,详情请参见 公共请求头部 文档。

请求体

该请求操作的实现需要有如下请求体。
<Request>
<Tag>Segment</Tag>
<Input>
<Object>input/demo.mp4</Object>
</Input>
<Operation>
<Segment>
<Format>mp4</Format>
<Duration>5</Duration>
<HlsEncrypt>
<IsHlsEncrypt>true</IsHlsEncrypt>
<UriKey>test-key</UriKey>
</HlsEncrypt>
</Segment>
<Output>
<Region>ap-chongqing</Region>
<Bucket>test-123456789</Bucket>
<Object>output/out-${number}</Object>
</Output>
<UserData>This is my data.</UserData>
<JobLevel>0</JobLevel>
</Operation>
<CallBack>http://callback.demo.com</CallBack>
<CallBackFormat>JSON</CallBackFormat>
</Request>
具体的数据描述如下:
节点名称(关键字)
父节点
描述
类型
是否必选
Request
保存请求的容器
Container
Container 类型 Request 的具体数据描述如下:
节点名称(关键字)
父节点
描述
类型
是否必选
Tag
Request
创建任务的 Tag:Segment
String
Input
Request
待操作的文件信息
Container
Operation
Request
操作规则
Container
CallBackFormat
Request
任务回调格式,JSON 或 XML,默认 XML,优先级高于队列的回调格式
String
CallBackType
Request
任务回调类型,Url 或 TDMQ,默认 Url,优先级高于队列的回调类型
String
CallBack
Request
任务回调地址,优先级高于队列的回调地址。设置为 no 时,表示队列的回调地址不产生回调
String
CallBackMqConfig
Request
任务回调 TDMQ 配置,当 CallBackType 为 TDMQ 时必填。详情见 CallBackMqConfig
Container
Container 类型 Input 的具体数据描述如下:
节点名称(关键字)
父节点
描述
类型
是否必选
Object
Request.Input
文件路径
String
Container 类型
Operation
的具体数据描述如下:
节点名称(关键字)
父节点
描述
类型
是否必选
Segment
Request.Operation
转封装参数
Container
Output
Request.Operation
结果输出配置
Container
UserData
Request.Operation
透传用户信息,可打印的 ASCII 码,长度不超过1024
String
JobLevel
Request.Operation
任务优先级,级别限制:0 、1 、2 。级别越大任务优先级越高,默认为0
String
Container 类型
Segment
的具体数据描述如下:
节点名称(关键字)
父节点
描述
类型
是否必选
Format
Request.Operation.Segment
音视频的封装格式。
视频格式支持:MP4、TS、AVI、HLS、MKV、M3U8。
音频格式支持:AAC、MP3、FLAC
若不指定,结果文件的格式与源文件相同
Format、Duration、AIGCMetadata 参数至少指定一个
String
Duration
Request.Operation.Segment
转封装时长
单位:秒
不小于 5 的整数
不设置 Duration 时,表示只转封装格式不分段
Format、Duration、AIGCMetadata 参数至少指定一个
当指定该参数时,不支持设置 AIGCMetadata 参数
String
TranscodeIndex
Request.Operation.Segment
处理的流编号,对应媒体信息中的 Response.MediaInfo.Stream.Video.Index 和 Response.MediaInfo.Stream.Audio.Index,详见 获取媒体信息接口
String
HlsEncrypt
Request.Operation.Segment
hls 加密配置,当封装格式为 hls 和 m3u8时生效
Container
StartTime
Request.Operation.Segment
开始时间
取值范围: [0,视频时长],默认值为0
单位为秒
支持 float 格式,执行精度精确到毫秒
String
EndTime
Request.Operation.Segment
结束时间
取值范围:[0, 视频时长],默认值为视频结束时间
单位为秒
支持 float 格式,执行精度精确到毫秒
String
AIGCMetadata
Request.Operation.Segment
AIGC 元数据标识内容。
视频格式限制:MP4、AVI、MKV
音频格式限制:MP3、FLAC
Format、Duration、AIGCMetadata 参数至少指定一个
当前仅支持重庆、成都地域
Container

Container 类型 HlsEncrypt 的具体数据描述如下:
节点名称(关键字)
父节点
描述
类型
是否必选
IsHlsEncrypt
Request.Operation.Segment.HlsEncrypt
是否开启 HLS 加密,取值 true/false,默认值 false
String
UriKey
Request.Operation.Segment.HlsEncrypt
HLS 加密的 key,当 IsHlsEncrypt 为 true 时,该参数才有意义
String
Container 类型 AIGCMetadata 的具体数据描述如下:
节点名称(关键字)
父节点
描述
类型
是否必选
Label
Request.Operation.Segment.AIGCMetadata
生成合成标签要素,用于表示视频属于、可能、疑似为人工智能生成合成的属性信息
长度限制:2048个 UTF-8字符数
字符限制:GB18030—2022(ASCII)中码位为0x21 - 0x7E 的字符,即包含阿拉伯数字、大小写英文及可打印字符
String
ContentProducer
Request.Operation.Segment.AIGCMetadata
生成合成服务提供者要素,内容为视频生成合成服务提供者的名称或编码
长度限制:2048个 UTF-8字符数
字符限制:GB18030—2022(ASCII)中码位为0x21 - 0x7E 的字符,即包含阿拉伯数字、大小写英文及可打印字符
String
ProduceID
Request.Operation.Segment.AIGCMetadata
内容制作编号要素,内容为视频生成合成服务提供者对该内容的唯一编号
支持通配符:
${InputName}: COS 源文件名,不带后缀,不带路径
${InputNameAndExt}: COS 源文件名,带后缀,不带路径
${JobId}: 添加aigc元数据信息的执行任务id
${InputPath}: COS源文件路径,不包含文件名
长度限制:2048个 UTF-8字符数
字符限制:GB18030—2022(ASCII)中码位为0x21 - 0x7E 的字符,即包含阿拉伯数字、大小写英文及可打印字符
String
ReservedCode1
Request.Operation.Segment.AIGCMetadata
预留字段1,内容为用户自主开展安全防护,保护内容、标识完整性的信息。需经过 base64编码后传入
长度限制(base64编码前):2048个 UTF-8字符数
字符限制(base64编码前):GB18030—2022(ASCII)中码位为0x21 - 0x7E 的字符,即包含阿拉伯数字、大小写英文及可打印字符
String
ContentPropagator
Request.Operation.Segment.AIGCMetadata
内容传播服务提供者要素,内容为视频传播服务提供者的名称或编码
长度限制:2048个 UTF-8字符数
字符限制:GB18030—2022(ASCII)中码位为0x21 - 0x7E 的字符,即包含阿拉伯数字、大小写英文及可打印字符
String
PropagateID
Request.Operation.Segment.AIGCMetadata
内容传播编号要素,内容为视频传播服务提供者对该视频的唯一编号
支持通配符:
${InputName}: COS 源文件名,不带后缀,不带路径
${InputNameAndExt}: COS 源文件名,带后缀,不带路径
${JobId}: 添加 aigc 元数据信息的执行任务 id
${InputPath}: COS 源文件路径,不包含文件名
长度限制:2048个 UTF-8字符数
字符限制:GB18030—2022(ASCII)中码位为0x21 - 0x7E 的字符,即包含阿拉伯数字、大小写英文及可打印字符
String
ReservedCode2
Request.Operation.Segment.AIGCMetadata
预留字段2,内容为用户自主开展安全防护,保护内容、标识完整性的信息。需经过 base64编码后传入
长度限制(base64编码前):2048个 UTF-8字符数
字符限制(base64编码前):GB18030—2022(ASCII)中码位为0x21 - 0x7E 的字符,即包含阿拉伯数字、大小写英文及可打印字符
String
Container 类型
Output
的具体数据描述如下:
节点名称(关键字)
父节点
描述
类型
是否必选
Region
Request.Operation.Output
存储桶的地域
String
Bucket
Request.Operation.Output
存储结果的存储桶
String
Object
Request.Operation.Output
输出结果的文件名,如果设置了 Duration,且 Format 不为 HLS 或 m3u8时,文件名必须包含 ${number} 参数作为自定义转封装后每一小段音/视频流的输出序号
String
Request.Operation.Output.Object 支持的通配符如下:
通配符
含义
${ext}
封装格式
${jobid}
任务 Id
${number}
产物索引,从0开始计数

响应

响应头

此接口仅返回公共响应头部,详情请参见 公共响应头部 文档。

响应体

该响应体返回为 application/xml 数据,包含完整节点数据的内容展示如下:
<Response>
<JobsDetail>
<Code>Success</Code>
<Message/>
<JobId>j8d121820f5e411ec926ef19d53ba9c6f</JobId>
<State>Submitted</State>
<CreationTime>2022-06-27T15:23:10+0800</CreationTime>
<StartTime>-</StartTime>
<EndTime>-</EndTime>
<QueueId>p2242ab62c7c94486915508540933a2c6</QueueId>
<QueueType>Transcoding</QueueType>
<Tag>Segment</Tag>
<Input>
<BucketId>test-123456789</BucketId>
<Object>input/demo.mp4</Object>
<Region>ap-chongqing</Region>
</Input>
<Operation>
<Segment>
<Format>mp4</Format>
<Duration>5</Duration>
<HlsEncrypt>
<IsHlsEncrypt>true</IsHlsEncrypt>
<UriKey>test-key</UriKey>
</HlsEncrypt>
</Segment>
<Output>
<Region>ap-chongqing</Region>
<Bucket>test-123456789</Bucket>
<Object>output/out-${number}</Object>
</Output>
<UserData>This is my data.</UserData>
<JobLevel>0</JobLevel>
</Operation>
<CallBack>http://callback.demo.com</CallBack>
<CallBackFormat>JSON</CallBackFormat>
</JobsDetail>
</Response>
具体的数据内容如下:
节点名称(关键字)
父节点
描述
类型
Response
保存结果的容器
Container
Container 节点 Response 的内容:
节点名称(关键字)
父节点
描述
类型
JobsDetail
Response
任务的详细信息
Container 数组
Container 节点
JobsDetail
的内容:
节点名称(关键字)
父节点
描述
类型
Code
Response.JobsDetail
错误码,当 State 为 Failed 时生效
String
Message
Response.JobsDetail
错误描述,当 State 为 Failed 时生效
String
JobId
Response.JobsDetail
新创建任务的 ID
String
Tag
Response.JobsDetail
新创建任务的 Tag:Segment
String
State
Response.JobsDetail
任务状态
Submitted:已提交,待执行
Running:执行中
Success:执行成功
Failed:执行失败
Pause:任务暂停,当暂停队列时,待执行的任务会变为暂停状态
Cancel:任务被取消执行
String
CreationTime
Response.JobsDetail
任务的创建时间
String
StartTime
Response.JobsDetail
任务的开始时间
String
EndTime
Response.JobsDetail
任务的结束时间
String
QueueId
Response.JobsDetail
任务所属的队列 ID
String
QueueType
Response.JobsDetail
任务所属的队列类型
String
Input
Response.JobsDetail
该任务的输入资源地址
Container
Operation
Response.JobsDetail
该任务的规则
Container
Container 节点 Input 的内容:
节点名称(关键字)
父节点
描述
类型
Region
Response.JobsDetail.Input
存储桶的地域
String
BucketId
Response.JobsDetail.Input
源文件所在存储桶
String
Object
Response.JobsDetail.Input
源文件的文件名
String
Container 节点 Operation 的内容:
节点名称(关键字)
父节点
描述
类型
Segment
Response.JobsDetail.Operation
同请求中的 Request.Operation.Segment
Container
Output
Response.JobsDetail.Operation
同请求中的 Request.Operation.Output
Container
MediaInfo
Response.JobsDetail.Operation
转码输出视频的信息,任务未完成时不返回,详见 MediaInfo
Container
MediaResult
Response.JobsDetail.Operation
输出文件的基本信息,任务未完成时不返回,详见 MediaResult
Container
UserData
Response.JobsDetail.Operation
透传用户信息
String
JobLevel
Response.JobsDetail.Operation
任务优先级
String

错误码

该请求操作无特殊错误信息,常见的错误信息请参见 错误码 文档。

实际案例

案例一:MP4 转封装

请求

POST /jobs HTTP/1.1
Authorization: q-sign-algorithm=sha1&q-ak=************************************&q-sign-time=1497530202;1497610202&q-key-time=1497530202;1497610202&q-header-list=&q-url-param-list=&q-signature=****************************************
Host: test-1234567890.ci.ap-chongqing.myqcloud.com
Content-Length: 166
Content-Type: application/xml

<Request>
<Tag>Segment</Tag>
<Input>
<Object>input/demo.mkv</Object>
</Input>
<Operation>
<Segment>
<Format>mp4</Format>
<Duration>15</Duration>
</Segment>
<Output>
<Region>ap-chongqing</Region>
<Bucket>test-1234567890</Bucket>
<Object>output/out-${number}</Object>
</Output>
<UserData>This is my data.</UserData>
<JobLevel>0</JobLevel>
</Operation>
<CallBack>http://callback.demo.com</CallBack>
<CallBackFormat>JSON</CallBackFormat>
</Request>

响应

HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: 230
Connection: keep-alive
Date: Mon, 28 Jun 2022 15:23:12 GMT
Server: tencent-ci
x-ci-request-id: NTk0MjdmODlfMjQ4OGY3XzYzYzhf****

<Response>
<JobsDetail>
<Code>Success</Code>
<Message/>
<JobId>j8d121820f5e411ec926ef19d53ba9c6f</JobId>
<State>Submitted</State>
<CreationTime>2022-06-27T15:23:10+0800</CreationTime>
<StartTime>-</StartTime>
<EndTime>-</EndTime>
<QueueId>p2242ab62c7c94486915508540933a2c6</QueueId>
<Tag>Segment</Tag>
<Input>
<BucketId>test-1234567890</BucketId>
<Object>input/demo.mkv</Object>
<Region>ap-chongqing</Region>
</Input>
<Operation>
<Segment>
<Format>mp4</Format>
<Duration>15</Duration>
</Segment>
<Output>
<Region>ap-chongqing</Region>
<Bucket>test-123456789</Bucket>
<Object>output/out-${number}</Object>
</Output>
<UserData>This is my data.</UserData>
<JobLevel>0</JobLevel>
</Operation>
<CallBack>http://callback.demo.com</CallBack>
<CallBackFormat>JSON</CallBackFormat>
</JobsDetail>
</Response>

案例二:HLS 转封装并加密

请求

POST /jobs HTTP/1.1
Authorization: q-sign-algorithm=sha1&q-ak=************************************&q-sign-time=1497530202;1497610202&q-key-time=1497530202;1497610202&q-header-list=&q-url-param-list=&q-signature=****************************************
Host: test-1234567890.ci.ap-chongqing.myqcloud.com
Content-Length: 166
Content-Type: application/xml

<Request>
<Tag>Segment</Tag>
<Input>
<Object>input/demo.mp4</Object>
</Input>
<Operation>
<Segment>
<Format>mp4</Format>
<Duration>5</Duration>
<HlsEncrypt>
<IsHlsEncrypt>true</IsHlsEncrypt>
<UriKey>test-key</UriKey>
</HlsEncrypt>
</Segment>
<Output>
<Region>ap-chongqing</Region>
<Bucket>test-1234567890</Bucket>
<Object>output/out-${number}</Object>
</Output>
<UserData>This is my data.</UserData>
<JobLevel>0</JobLevel>
</Operation>
<CallBack>http://callback.demo.com</CallBack>
<CallBackFormat>JSON</CallBackFormat>
</Request>

响应

HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: 230
Connection: keep-alive
Date: Mon, 28 Jun 2022 15:23:12 GMT
Server: tencent-ci
x-ci-request-id: NTk0MjdmODlfMjQ4OGY3XzYzYzhf****

<Response>
<JobsDetail>
<Code>Success</Code>
<Message/>
<JobId>j8d121820f5e411ec926ef19d53ba9c6f</JobId>
<State>Submitted</State>
<CreationTime>2022-06-27T15:23:10+0800</CreationTime>
<StartTime>-</StartTime>
<EndTime>-</EndTime>
<QueueId>p2242ab62c7c94486915508540933a2c6</QueueId>
<Tag>Segment</Tag>
<Input>
<BucketId>test-1234567890</BucketId>
<Object>input/demo.mp4</Object>
<Region>ap-chongqing</Region>
</Input>
<Operation>
<Segment>
<Format>mp4</Format>
<Duration>5</Duration>
<HlsEncrypt>
<IsHlsEncrypt>true</IsHlsEncrypt>
<UriKey>test-key</UriKey>
</HlsEncrypt>
</Segment>
<Output>
<Region>ap-chongqing</Region>
<Bucket>test-123456789</Bucket>
<Object>output/out</Object>
</Output>
<UserData>This is my data.</UserData>
<JobLevel>0</JobLevel>
</Operation>
<CallBack>http://callback.demo.com</CallBack>
<CallBackFormat>JSON</CallBackFormat>
</JobsDetail>
</Response>

案例三:添加AIGC元数据信息

请求

POST /jobs HTTP/1.1
Authorization: q-sign-algorithm=sha1&q-ak=************************************&q-sign-time=1497530202;1497610202&q-key-time=1497530202;1497610202&q-header-list=&q-url-param-list=&q-signature=****************************************
Host: test-1234567890.ci.ap-chongqing.myqcloud.com
Content-Length: 166
Content-Type: application/xml

<Request>
<Tag>Segment</Tag>
<Input>
<Object>input/demo.mp4</Object>
</Input>
<Operation>
<Segment>
<AIGCMetadata>
<Label>label</Label>
<ContentProducer>testProducer</ContentProducer>
<ProduceID>testProduceId</ProduceID>
<ReservedCode1>dGVzdA==</ReservedCode1>
<ContentPropagator>testPropagator</ContentPropagator>
<PropagateID>testPropagatorId</PropagateID>
<ReservedCode2>dGVzdA==</ReservedCode2>
</AIGCMetadata>
</Segment>
<Output>
<Region>ap-chongqing</Region>
<Bucket>test-1234567890</Bucket>
<Object>output/out-${number}</Object>
</Output>
<UserData>This is my data.</UserData>
<JobLevel>0</JobLevel>
</Operation>
<CallBack>http://callback.demo.com</CallBack>
<CallBackFormat>JSON</CallBackFormat>
</Request>

响应

HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: 230
Connection: keep-alive
Date: Mon, 28 Jun 2022 15:23:12 GMT
Server: tencent-ci
x-ci-request-id: NTk0MjdmODlfMjQ4OGY3XzYzYzhf****

<Response>
<JobsDetail>
<Code>Success</Code>
<Message/>
<JobId>j8d121820f5e411ec926ef19d53ba9c6f</JobId>
<State>Submitted</State>
<CreationTime>2022-06-27T15:23:10+0800</CreationTime>
<StartTime>-</StartTime>
<EndTime>-</EndTime>
<QueueId>p2242ab62c7c94486915508540933a2c6</QueueId>
<QueueType>Transcoding</QueueType>
<Tag>Segment</Tag>
<Input>
<BucketId>test-1234567890</BucketId>
<Object>input/demo.mp4</Object>
<Region>ap-chongqing</Region>
</Input>
<Operation>
<Segment>
<AIGCMetadata>
<Label>label</Label>
<ContentProducer>testProducer</ContentProducer>
<ProduceID>testProduceId</ProduceID>
<ReservedCode1>dGVzdA==</ReservedCode1>
<ContentPropagator>testPropagator</ContentPropagator>
<PropagateID>testPropagatorId</PropagateID>
<ReservedCode2>dGVzdA==</ReservedCode2>
</AIGCMetadata>
</Segment>
<Output>
<Region>ap-chongqing</Region>
<Bucket>test-123456789</Bucket>
<Object>output/out</Object>
</Output>
<UserData>This is my data.</UserData>
<JobLevel>0</JobLevel>
</Operation>
<CallBack>http://callback.demo.com</CallBack>
<CallBackFormat>JSON</CallBackFormat>
</JobsDetail>
</Response>