tencent cloud

文档反馈

音视频拼接

最后更新时间:2023-05-06 17:35:34

    功能描述

    提交一个拼接任务。

    请求

    请求示例

    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>Concat</Tag>
        <Input>
            <Object>input/demo.mp4</Object>
        </Input>
        <Operation>
            <TemplateId>t1460606b9752148c4ab182f55163ba7cd</TemplateId>
            <Output>
                <Region>ap-chongqing</Region>
                <Bucket>test-123456789</Bucket>
                <Object>output/out.${ext}</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:Concat 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 的具体数据描述如下:

    节点名称(关键字) 父节点 描述 类型 是否必选
    ConcatTemplate Request.Operation 拼接参数 Container
    TemplateId Request.Operation 模板 ID String
    Output Request.Operation 结果输出配置 Container
    JobLevel Request.Operation 任务优先级,级别限制:0 、1 、2 。级别越大任务优先级越高,默认为0 String
    注意:

    优先使用 TemplateId,无 TemplateId 时使用 ConcatTemplate。

    Container 类型 ConcatTemplate 的具体数据描述如下:

    节点名称(关键字) 父节点 描述 类型 是否必选 默认值 限制
    ConcatFragment Request.Operation.ConcatTemplate 拼接节点 Container 数组 支持多个文件,按照文件顺序拼接
    Audio Request.Operation.ConcatTemplate 音频参数,同创建拼接模板接口中的 Request.ConcatTemplate.Audio Container
    Video Request.Operation.ConcatTemplate 视频参数,同创建拼接模板接口中的 Request.ConcatTemplate.Video Container
    Container Request.Operation.ConcatTemplate 封装格式,同创建拼接模板接口中的 Request.ConcatTemplate.Container Container
    AudioMix Request.Operation.ConcatTemplate 混音参数, 详情见 AudioMix Container数组 仅在 Audio.Remove 为 false 时生效
    AudioMixArray Request.Operation.Transcode 混音参数数组, 最多同时传2个。详情见 AudioMixArray Container数组 - -
    Index Request.Operation.ConcatTemplate Input 节点位于 ConcatFragment 序列索引 String 0 不能大于 ConcatFragment 长度
    DirectConcat Request.Operation.ConcatTemplate 简单拼接方式(不转码直接拼接),其他的视频和音频参数失效 String false true、false
    说明:

    AudioMix 和 AudioMixArray 同时设置时, AudioMixArray 无效。

    Container 类型 ConcatFragment 的具体数据描述如下:

    节点名称(关键字) 父节点 描述 类型 是否必选 默认值 限制
    Url Request.Operation.
    ConcatTemplate.
    ConcatFragment
    拼接对象地址 String 同 bucket 对象文件
    FragmentIndex Request.Operation.
    ConcatTemplate.
    ConcatFragment
    拼接对象的索引位置 String 0 大于等于0的整数
    StartTime Request.Operation.
    ConcatTemplate.
    ConcatFragment
    开始时间 String 视频开始
  • [0 视频时长]
  • 单位为秒
  • EndTime Request.Operation.
    ConcatTemplate.
    ConcatFragment
    结束时间 String 视频结束
  • [0 视频时长]
  • 单位为秒
  • Container 类型 Output 的具体数据描述如下:

    节点名称(关键字) 父节点 描述 类型 是否必选
    Region Request.Operation.Output 存储桶的地域 String
    Bucket Request.Operation.Output 存储结果的存储桶 String
    Object Request.Operation.Output 输出结果的文件名 String

    Request.Operation.Output.Object 支持的通配符如下:

    通配符 含义
    ${ext} 封装格式
    ${jobid} 任务Id

    响应

    响应头

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

    响应体

    该响应体返回为 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>
            <Tag>Concat</Tag>
            <Input>
                <BucketId>test-123456789</BucketId>
                <Object>input/demo.mp4</Object>
                <Region>ap-chongqing</Region>
            </Input>
            <Operation>
                <TemplateId>t1460606b9752148c4ab182f55163ba7cd</TemplateId>
                <TemplateName>concat_demo</TemplateName>
                <Output>
                    <Region>ap-chongqing</Region>
                    <Bucket>test-123456789</Bucket>
                    <Object>output/out.${ext}</Object>
                </Output>
                <UserData>This is my data.</UserData>
                <JobLevel>0</JobLevel>
            </Operation>
        </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:Concat 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
    Input Response.JobsDetail 该任务的输入资源地址 Container
    Operation Response.JobsDetail 该任务的规则 Container

    Container 节点 Input 的内容:

    节点名称(关键字) 父节点 描述 类型
    Region Response.JobsDetail.Input 存储桶的地域 String
    Bucket Response.JobsDetail.Input 存储结果的存储桶 String
    Object Response.JobsDetail.Input 输出结果的文件名 String

    Container 节点 Operation 的内容:

    节点名称(关键字) 父节点 描述 类型
    TemplateId Response.JobsDetail.Operation 任务的模板 ID String
    TemplateName Response.JobsDetail.Operation 任务的模板名称, 当 TemplateId 存在时返回 String
    ConcatTemplate Response.JobsDetail.Operation 同请求中的 Request.Operation.ConcatTemplate Container
    Output Response.JobsDetail.Operation 同请求中的 Request.Operation.Output Container
    MediaInfo Response.JobsDetail.Operation 输出文件的媒体信息,任务未完成时不返回 Container
    MediaResult Response.JobsDetail.Operation 输出文件的基本信息,任务未完成时不返回 Container
    UserData Response.JobsDetail.Operation 透传用户信息 String
    JobLevel Response.JobsDetail.Operation 任务优先级 String

    Container 节点 MediaInfo 的内容:
    GenerateMediaInfo 接口中的 Response.MediaInfo 节点。

    Container 节点 MediaResult 的内容:
    详情见 MediaResult

    错误码

    常见的错误信息请参见 错误码 文档。

    实际案例

    请求1:使用拼接模板 ID

    请求

    POST /jobs HTTP/1.1
    Authorization:q-sign-algorithm=sha1&q-ak=AKIDZfbOAo7cllgPvF9cXFrJD0a1ICvR98****-sign-time=1497530202;1497610202&q-key-time=1497530202;1497610202&q-header-list=&q-url-param-list=&q-signature=28e9a4986df11bed0255e97ff90500557e0e****
    Host:test-123456789.ci.ap-chongqing.myqcloud.com
    Content-Length: 166
    Content-Type: application/xml
    
    <Request>
        <Tag>Concat</Tag>
        <Input>
            <Object>input/demo.mp4</Object>
        </Input>
        <Operation>
            <TemplateId>t1460606b9752148c4ab182f55163ba7cd</TemplateId>
            <Output>
                <Region>ap-chongqing</Region>
                <Bucket>test-123456789</Bucket>
                <Object>output/out.${ext}</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: NjMxMDJhYTNfMThhYTk0MGFfYmU1OV8zZjc=
    
    <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>Concat</Tag>
            <Input>
                <BucketId>test-123456789</BucketId>
                <Object>input/demo.mp4</Object>
                <Region>ap-chongqing</Region>
            </Input>
            <Operation>
                <TemplateId>t1460606b9752148c4ab182f55163ba7cd</TemplateId>
                <TemplateName>concat_demo</TemplateName>
                <Output>
                    <Region>ap-chongqing</Region>
                    <Bucket>test-123456789</Bucket>
                    <Object>output/out.${ext}</Object>
                </Output>
                <UserData>This is my data.</UserData>
                <JobLevel>0</JobLevel>
            </Operation>
        </JobsDetail>
    </Response>
    

    请求2:使用拼接参数

    请求

    POST /jobs HTTP/1.1
    Authorization:q-sign-algorithm=sha1&q-ak=AKIDZfbOAo7cllgPvF9cXFrJD0a1ICvR98****-sign-time=1497530202;1497610202&q-key-time=1497530202;1497610202&q-header-list=&q-url-param-list=&q-signature=28e9a4986df11bed0255e97ff90500557e0e****
    Host:test-123456789.ci.ap-chongqing.myqcloud.com
    Content-Length: 166
    Content-Type: application/xml
    
    <Request>
        <Tag>Concat</Tag>
        <Input>
            <Object>input/demo.mp4</Object>
        </Input>
        <Operation>
            <ConcatTemplate>
                <ConcatFragment>
                    <Url>http://test-123456789.cos.ap-chongqing.myqcloud.com/start.mp4</Url>
                </ConcatFragment>
                <ConcatFragment>
                    <Url>http://test-123456789.cos.ap-chongqing.myqcloud.com/end.mp4</Url>
                </ConcatFragment>
                <Audio>
                    <Codec>mp3</Codec>
                </Audio>
                <Video>
                    <Codec>H.264</Codec>
                    <Bitrate>1000</Bitrate>
                    <Width>1280</Width>
                    <Height>720</Height>
                    <Fps>30</Fps>
                </Video>
                <Container>
                    <Format>mp4</Format>
                </Container>
                <AudioMixArray>
                    <AudioSource>https://test-xxx.cos.ap-chongqing.myqcloud.com/mix1.mp3</AudioSource>
                    <MixMode>Once</MixMode>
                    <Replace>true</Replace>
                    <EffectConfig>
                        <EnableStartFadein>true</EnableStartFadein>
                        <StartFadeinTime>3</StartFadeinTime>
                        <EnableEndFadeout>false</EnableEndFadeout>
                        <EndFadeoutTime>0</EndFadeoutTime>
                        <EnableBgmFade>true</EnableBgmFade>
                        <BgmFadeTime>1.7</BgmFadeTime>
                    </EffectConfig>
                </AudioMixArray>
                <AudioMixArray>
                    <AudioSource>https://test-xxx.cos.ap-chongqing.myqcloud.com/mix2.mp3</AudioSource>
                    <MixMode>Once</MixMode>
                    <Replace>true</Replace>
                    <EffectConfig>
                        <EnableStartFadein>true</EnableStartFadein>
                        <StartFadeinTime>3</StartFadeinTime>
                        <EnableEndFadeout>false</EnableEndFadeout>
                        <EndFadeoutTime>0</EndFadeoutTime>
                        <EnableBgmFade>true</EnableBgmFade>
                        <BgmFadeTime>1.7</BgmFadeTime>
                    </EffectConfig>
                </AudioMixArray>
            </ConcatTemplate>
            <Output>
                <Region>ap-chongqing</Region>
                <Bucket>test-123456789</Bucket>
                <Object>output/out.${ext}</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: NjMxMDJhYTNfMThhYTk0MGFfYmU1OV8zZjc=
    
    <Response>
        <JobsDetail>
            <Code>Success</Code>
            <Message/>
            <JobId>j8d121820f5e411ec926ef19d53ba9c5d</JobId>
            <State>Submitted</State>
            <CreationTime>2022-06-27T15:23:10+0800</CreationTime>
            <StartTime>-</StartTime>
            <EndTime>-</EndTime>
            <QueueId>p2242ab62c7c94486915508540933a2c6</QueueId>
            <Tag>Concat</Tag>
            <Input>
                <BucketId>test-123456789</BucketId>
                <Object>input/demo.mp4</Object>
                <Region>ap-chongqing</Region>
            </Input>
            <Operation>
                <ConcatTemplate>
                    <ConcatFragment>
                        <Url>http://test-123456789.cos.ap-chongqing.myqcloud.com/start.mp4</Url>
                    </ConcatFragment>
                    <ConcatFragment>
                        <Url>http://test-123456789.cos.ap-chongqing.myqcloud.com/end.mp4</Url>
                    </ConcatFragment>
                    <Audio>
                        <Codec>mp3</Codec>
                    </Audio>
                    <Video>
                        <Codec>H.264</Codec>
                        <Bitrate>1000</Bitrate>
                        <Width>1280</Width>
                        <Height>720</Height>
                        <Fps>30</Fps>
                    </Video>
                    <Container>
                        <Format>mp4</Format>
                    </Container>
                    <AudioMixArray>
                        <AudioSource>https://test-xxx.cos.ap-chongqing.myqcloud.com/mix1.mp3</AudioSource>
                        <MixMode>Once</MixMode>
                        <Replace>true</Replace>
                        <EffectConfig>
                            <EnableStartFadein>true</EnableStartFadein>
                            <StartFadeinTime>3</StartFadeinTime>
                            <EnableEndFadeout>false</EnableEndFadeout>
                            <EndFadeoutTime>0</EndFadeoutTime>
                            <EnableBgmFade>true</EnableBgmFade>
                            <BgmFadeTime>1.7</BgmFadeTime>
                        </EffectConfig>
                    </AudioMixArray>
                    <AudioMixArray>
                        <AudioSource>https://test-xxx.cos.ap-chongqing.myqcloud.com/mix2.mp3</AudioSource>
                        <MixMode>Once</MixMode>
                        <Replace>true</Replace>
                        <EffectConfig>
                            <EnableStartFadein>true</EnableStartFadein>
                            <StartFadeinTime>3</StartFadeinTime>
                            <EnableEndFadeout>false</EnableEndFadeout>
                            <EndFadeoutTime>0</EndFadeoutTime>
                            <EnableBgmFade>true</EnableBgmFade>
                            <BgmFadeTime>1.7</BgmFadeTime>
                        </EffectConfig>
                    </AudioMixArray>
                    <Index>1</Index>
                </ConcatTemplate>
                <Output>
                    <Region>ap-chongqing</Region>
                    <Bucket>test-123456789</Bucket>
                    <Object>output/out.${ext}</Object>
                </Output>
                <UserData>This is my data.</UserData>
                <JobLevel>0</JobLevel>
            </Operation>
        </JobsDetail>
    </Response>
    

    请求3:多文件拼接

    请求

    POST /jobs HTTP/1.1
    Authorization:q-sign-algorithm=sha1&q-ak=AKIDZfbOAo7cllgPvF9cXFrJD0a1ICvR98****-sign-time=1497530202;1497610202&q-key-time=1497530202;1497610202&q-header-list=&q-url-param-list=&q-signature=28e9a4986df11bed0255e97ff90500557e0e****
    Host:test-123456789.ci.ap-chongqing.myqcloud.com
    Content-Length: 166
    Content-Type: application/xml
    
    <Request>
        <Tag>Concat</Tag>
        <Operation>
            <ConcatTemplate>
                <ConcatFragment>
                    <Url>http://test-123456789.cos.ap-chongqing.myqcloud.com/start.mp4</Url>
                    <FragmentIndex>0</FragmentIndex>
                    <StartTime>0</StartTime>
                    <EndTime>6</EndTime>
                </ConcatFragment>
                <ConcatFragment>
                    <Url>http://test-123456789.cos.ap-chongqing.myqcloud.com/middle.mp4</Url>
                    <FragmentIndex>1</FragmentIndex>
                </ConcatFragment>
                <ConcatFragment>
                    <Url>http://test-123456789.cos.ap-chongqing.myqcloud.com/end.mp4</Url>
                    <FragmentIndex>2</FragmentIndex>
                    <StartTime>5</StartTime>
                    <EndTime>10</EndTime>
                </ConcatFragment>
                <Container>
                    <Format>mp4</Format>
                </Container>
            </ConcatTemplate>
            <Output>
                <Region>ap-chongqing</Region>
                <Bucket>test-123456789</Bucket>
                <Object>output/out.${ext}</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: NjMxMDJhYTNfMThhYTk0MGFfYmU1OV8zZjc=
    
    <Response>
        <JobsDetail>
            <Code>Success</Code>
            <Message/>
            <JobId>j8d121820f5e411ec926ef19d53ba9c5d</JobId>
            <State>Submitted</State>
            <CreationTime>2022-06-27T15:23:10+0800</CreationTime>
            <StartTime>-</StartTime>
            <EndTime>-</EndTime>
            <QueueId>p2242ab62c7c94486915508540933a2c6</QueueId>
            <Tag>Concat</Tag>
            <Input>
                <BucketId>test-123456789</BucketId>
                <Object>input/demo.mp4</Object>
                <Region>ap-chongqing</Region>
            </Input>
            <Operation>
                <ConcatTemplate>
                    <ConcatFragment>
                        <Url>http://test-123456789.cos.ap-chongqing.myqcloud.com/start.mp4</Url>
                        <StartTime>0</StartTime>
                        <EndTime>6</EndTime>
                    </ConcatFragment>
                    <ConcatFragment>
                        <Url>http://test-123456789.cos.ap-chongqing.myqcloud.com/middle.mp4</Url>
                    </ConcatFragment>
                    <ConcatFragment>
                        <Url>http://test-123456789.cos.ap-chongqing.myqcloud.com/end.mp4</Url>
                        <StartTime>5</StartTime>
                        <EndTime>10</EndTime>
                    </ConcatFragment>
                    <Container>
                        <Format>mp4</Format>
                    </Container>
                </ConcatTemplate>
                <Output>
                    <Region>ap-chongqing</Region>
                    <Bucket>test-123456789</Bucket>
                    <Object>output/out.${ext}</Object>
                </Output>
                <UserData>This is my data.</UserData>
                <JobLevel>0</JobLevel>
            </Operation>
        </JobsDetail>
    </Response>
    
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持