控制台指南

最佳实践

开发者指南

API 文档

SDK 文档

新增转码模板

最近更新时间:2022-05-11 10:53:17

功能描述

CreateMediaTemplate 用于新增转码模板。

推荐使用 API Explorer
点击调试
API Explorer 提供了在线调用、签名验证、SDK 代码生成和快速检索接口等能力。您可查看每次调用的请求内容和返回结果以及自动生成 SDK 调用示例。

请求

请求示例

POST /template 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>Transcode</Tag>
    <Name>TemplateName</Name>
    <Container>
        <Format>mp4</Format>
    </Container>
    <Video>
        <Codec>H.264</Codec>
        <Profile>high</Profile>
        <Bitrate>1000</Bitrate>
        <Crf></Crf>
        <Width>1280</Width>
        <Height></Height>
        <Fps>30</Fps>
        <Gop></Gop>
        <Preset>medium</Preset>
        <ScanMode></ScanMode>
        <Bufsize>0</Bufsize>
        <Maxrate>0</Maxrate>
    </Video>
    <Audio>
        <Codec>aac</Codec>
        <Samplerate>44100</Samplerate>
        <Bitrate>128</Bitrate>
        <Channels>4</Channels>
    </Audio>
    <TransConfig>
        <AdjDarMethod>scale</AdjDarMethod>
        <IsCheckReso>false</IsCheckReso>
        <ResoAdjMethod>1</ResoAdjMethod>
    </TransConfig>
    <TimeInterval>
        <Start>0</Start>
        <Duration>60</Duration>
    </TimeInterval>
</Request>

具体数据描述如下:

节点名称(关键字) 父节点 描述 类型 是否必选
Request 保存请求的容器 Container

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

节点名称(关键字) 父节点 描述 类型 是否必选 限制
Tag Request 模板类型:Transcode String
Name Request 模板名称 仅支持中文、英文、数字、_、-和* String
Container Request 容器格式 Container
Video Request 视频信息 Container 不传 Video,相当于删除视频信息
TimeInterval Request 时间区间 Container
Audio Request 音频信息 Container 不传 Audio,相当于删除音频信息
TransConfig Request 转码配置 Container

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

节点名称(关键字) 父节点 描述 类型 是否必选
Format Request.Container 容器格式:mp4、flv、hls、ts、mp3、aac、WebM、dash String
ClipConfig Request.Container 分片配置,当format为hls和dash时有效 Container

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

节点名称(关键字) 父节点 描述 类型 是否必选
Duration Request.Container.ClipConfig 分片时长, 默认5s String

设定 container,音频视频支持的格式如下表所示:

Container Audio Codecs Video Codecs
mp4/hls/mkv aac、mp3 H.264、H.265
ts/flv aac、mp3 H.264
aac aac 不支持
mp3 mp3 不支持
flac flac 不支持
amr amr 不支持
WebM Vorbis、opus VP8、VP9
dash aac H.264

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

节点名称(关键字) 父节点 描述 类型 是否必选 默认值 限制
Codec Request.Video 编解码格式 String H.264,当 format 为 WebM 时,为 VP8
  • H.264
  • H.265
  • VP8
  • VP9
Width Request.Video String 视频原始宽度
  • 值范围:[128, 4096]
  • 单位:px
  • 若只设置 Width 时, 按照视频原始比例计算 Height
  • 必须为偶数
Height Request.Video String 视频原始高度
  • 值范围:[128, 4096]
  • 单位:px
  • 若只设置 Height 时,按照视频原始比例计算 Width
  • 必须为偶数
Fps Request.Video 帧率 String
  • 值范围:(0, 60]
  • 单位:fps
Remove Request.Video 是否删除视频流 String false true、false
Profile Request.Video 编码级别 String high
  • 支持 baseline、main、high、auto
  • 当 Pixfmt 为 auto 时,该参数仅能设置为 auto,当设置为其他选项时,参数值将被设置为 auto
  • baseline:适合移动设备
  • main:适合标准分辨率设备
  • high:适合高分辨率设备
  • 仅H.264支持此参数
Bitrate Request.Video 视频输出文件的码率 String
  • 值范围:[10, 50000]
  • 单位:Kbps
Crf Request.Video 码率-质量控制因子 String
  • 值范围:(0, 51]
  • 如果设置了 Crf,则 Bitrate 的设置失效
  • 当 Bitrate 为空时,默认为25
Gop Request.Video 关键帧间最大帧数 String 值范围:[1, 100000]
Preset Request.Video 视频算法器预置 String medium,当 Codec 为 VP8 时,为 good
  • H.264支持该参数,取值 veryfast、fast、medium、slow、slower
  • VP8 支持该参数,取值 good、realtime
  • H.265和VP9不支持该参数
Bufsize Request.Video 缓冲区大小 String
  • 值范围:[1000, 128000]
  • 单位:Kb
  • Codec 为 VP8/VP9时不支持此参数
Maxrate Request.Video 视频码率峰值 String
  • 值范围:[10, 50000]
  • 单位:Kbps
  • Codec 为 VP8/VP9时不支持此参数
Pixfmt Request.Video 视频颜色格式 String
  • H.264支持:yuv420p、yuv422p、yuv444p、yuvj420p、yuvj422p、yuvj444p、auto
  • H.265支持:yuv420p、yuv420p10le、auto
  • Codec 为 VP8/VP9时不支持此参数
LongShortMode Request.Video 长短边自适应 String false
  • true、false
  • Codec 为 VP8/VP9时不支持此参数
Rotate Request.Video 旋转角度 String
  • 值范围:[0, 360)
  • 单位:度

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

节点名称(关键字) 父节点 描述 类型 是否必选 默认值 限制
Start Request.TimeInterval 开始时间 String 0
  • [0 视频时长]
  • 单位为秒
  • 支持 float 格式,执行精度精确到毫秒
Duration Request.TimeInterval 持续时间 String 视频原始时长
  • [0 视频时长]
  • 单位为秒
  • 支持 float 格式,执行精度精确到毫秒

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

节点名称(关键字) 父节点 描述 类型 是否必选 默认值 限制
Codec Request.Audio 编解码格式 String aac,当 format 为 WebM 时,为 Vorbis 取值 aac、mp3、flac、amr、Vorbis、opus
Samplerate Request.Audio 采样率 String 44100,当 Codec 为 opus 时,默认值为48000
  • 单位:Hz
  • 可选 8000、11025、12000、16000、22050、24000、32000、44100、48000、88200、96000
  • 不同的封装,mp3 支持不同的采样率,如下表所示
  • 当 Codec 设置为 amr 时,只支持8000
  • 当 Codec 设置为 opus 时,仅支持8000,16000,24000,48000
Bitrate Request.Audio 原始音频码率 String
  • 单位:Kbps
  • 值范围:[8,1000]
Channels Request.Audio 声道数 String
  • 当 Codec 设置为 aac/flac,支持1、2、4、5、6、8
  • 当 Codec 设置为 mp3/opus 时,支持1、2
  • 当 Codec 设置为 Vorbis 时,只支持2
  • 当 Codec 设置为 amr,只支持1
  • 当封装格式为dash时,不支持8
Remove Request.Audio 是否删除源音频流 String false 取值 true、false
KeepTwoTracks Request.Audio 保持双音轨 String false 取值 true、false。 当 Video.Codec 为H.265时,此参数无效。
SwitchTrack Request.Audio 转换轨道 String false 取值 true、false。 当 Video.Codec 为H.265时,此参数无效。
SampleFormat Request.Audio 采样位宽 String
  • 当 Codec 设置为 aac, 支持 fltp
  • 当 Codec 设置为 mp3, 支持 fltp、s16p、s32p
  • 当 Codec 设置为 flac, 支持s16、s32
  • 当 Codec 设置为 amr, 支持s16
  • 当 Video.Codec 为H.265时,此参数无效
说明:

Y 表示支持这种采样率,N 表示不支持。

Audio.Codec 采样率支持情况,如下表所示:

Audio.Codec aac amr flac opus Vorbis mp3
8000 Y Y Y Y Y 封装不同,支持不同
11025 Y N Y N Y
12000 Y N Y N Y
16000 Y N Y Y Y
22050 Y N Y N Y
24000 Y N Y Y Y
32000 Y N Y N Y
44100 Y N Y N Y
48000 Y N Y Y Y
88200 Y N Y N Y
96000 Y N Y N Y

当 Audio.Codec 为 mp3 时,Container.Format 的采样率兼容情况如下所示:

封装格式/音频采样率 8000 11025 12000 16000 22050 24000 32000 44100 48000 88200 96000
flv N N N N Y N N Y N N N
mp4 N N N Y Y Y Y Y Y N N
hls/ts/mp3/mkv N Y Y Y Y Y Y Y Y N N

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

节点名称(关键字) 父节点 描述 类型 是否必选 默认值 限制
AdjDarMethod Request.TransConfig 分辨率调整方式 String none
  • 取值 scale、crop、pad、none
  • 当输出视频的宽高比与原视频不等时,根据此参数做分辨率的相应调整
  • 当视频编解码格式为H265时, 该参数无效
IsCheckReso Request.TransConfig 是否检查分辨率 String false
  • true、false
  • 当为 false 时,按照配置参数转码
ResoAdjMethod Request.TransConfig 分辨率调整方式 String 0
  • 取值0、1;0表示使用原视频分辨率;1表示返回转码失败
  • 当 IsCheckReso 为 true 时生效
IsCheckVideoBitrate Request.TransConfig 是否检查视频码率 String false
  • true、false
  • 当为 false 时,按照配置参数转码
  • 当视频编解码格式为H265时, 该参数无效
VideoBitrateAdjMethod Request.TransConfig 视频码率调整方式 String 0
  • 取值0、1;0表示使用原视频码率;1表示返回转码失败
  • 当 IsCheckVideoBitrate 为 true 时生效
  • 当视频编解码格式为H265时, 该参数无效
IsCheckAudioBitrate Request.TransConfig 是否检查音频码率 String false
  • true、false
  • 当为 false 时,按照配置参数转码
AudioBitrateAdjMethod Request.TransConfig 音频码率调整方式 String 0
  • 取值0、1;0 表示使用原音频码率;1表示返回转码失败
  • 当 IsCheckAudioBitrate 为 true 时生效
DeleteMetadata Request.TransConfig 是否删除文件中的 MetaData 信息 String false
  • true、false
  • 当为 false 时, 保留源文件信息
IsHdr2Sdr Request.TransConfig 是否开启 HDR 转 SDR String false true/false
HlsEncrypt Request.TransConfig hls 加密配置 Container

AdjDarMethod 参数图示:

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

节点名称(关键字) 父节点 描述 类型 是否必选 默认值 限制
IsHlsEncrypt Request.TransConfig.HlsEncrypt 是否开启 HLS 加密 String false
  • true/false
  • 当 Container.Format 为 hls 时支持加密
UriKey Request.TransConfig.HlsEncrypt HLS 加密的 key String 当 IsHlsEncrypt 为 true 时,该参数才有意义

响应

响应头

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

响应体

该响应体返回为 application/xml 数据,包含完整节点数据的内容展示如下:

<Response>
    <Template>
        <Tag>Transcode</Tag>
        <TemplateId>t1460606b9752148c4ab182f55163ba7cd</TemplateId>
        <Name>TemplateName</Name>
        <Container>
            <Format>mp4</Format>
        </Container>
        <Video>
            <Codec>H.264</Codec>
            <Profile>high</Profile>
            <Bitrate>1000</Bitrate>
            <Crf></Crf>
            <Width>1280</Width>
            <Height></Height>
            <Fps>30</Fps>
            <Gop></Gop>
            <Preset>medium</Preset>
            <ScanMode></ScanMode>
            <Bufsize>0</Bufsize>
            <Maxrate>0</Maxrate>
        </Video>
        <Audio>
            <Codec>aac</Codec>
            <Samplerate>44100</Samplerate>
            <Bitrate>128</Bitrate>
            <Channels>4</Channels>
        </Audio>
        <TransConfig>
            <AdjDarMethod>scale</AdjDarMethod>
            <IsCheckReso>false</IsCheckReso>
            <ResoAdjMethod>1</ResoAdjMethod>
        </TransConfig>
        <TimeInterval>
            <Start>0</Start>
            <Duration>60</Duration>
        </TimeInterval>
        <CreateTime>2020-08-05T11:35:24+0800</CreateTime>
        <UpdateTime>2020-08-31T16:15:20+0800</UpdateTime>
    </Template>
</Response>

具体的数据内容如下:

节点名称(关键字) 父节点 描述 类型
Response 保存结果的容器 Container

Container 节点 Response 的内容:

节点名称(关键字) 父节点 描述 类型
TemplateId Response.Template 模板 ID String
Name Response.Template 模板名称 String
BucketId Response.Template 模板所属存储桶 String
Category Response.Template 模板属性,Custom 或者 Official String
Tag Response.Template 模板类型,Transcode String
UpdateTime Response.Template 更新时间 String
CreateTime Response.Template 创建时间 String
TransTpl Response.Template 详细的模板参数 Container

Container节点TransTpl的内容:

节点名称(关键字) 父节点 描述 类型
TimeInterval Response.Template.TransTpl 同请求体中的
Request.TimeInterval
Container
Container Response.Template.TransTpl 同请求体中的
Request.Container
Container
Video Response.Template.TransTpl 同请求体中的
Request.Video
Container
Audio Response.Template.TransTpl 同请求体中的
Request.Audio
Container
TransConfig Response.Template.TransTpl 同请求体中的
Request.TransConfig
Container

错误码

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

实际案例

请求

POST /template HTTP/1.1
Authorization: q-sign-algorithm=sha1&q-ak=AKIDZfbOAo7cllgPvF9cXFrJD0a1ICvR****&q-sign-time=1497530202;1497610202&q-key-time=1497530202;1497610202&q-header-list=&q-url-param-list=&q-signature=28e9a4986df11bed0255e97ff90500557e0e****
Host: examplebucket-1250000000.ci.ap-beijing.myqcloud.com
Content-Length: 1666
Content-Type: application/xml

<Request>
    <Tag>Transcode</Tag>
    <Name>TemplateName</Name>
    <Container>
        <Format>mp4</Format>
    </Container>
    <Video>
        <Codec>H.264</Codec>
        <Profile>high</Profile>
        <Bitrate>1000</Bitrate>
        <Crf></Crf>
        <Width>1280</Width>
        <Height></Height>
        <Fps>30</Fps>
        <Gop></Gop>
        <Preset>medium</Preset>
        <ScanMode></ScanMode>
        <Bufsize>0</Bufsize>
        <Maxrate>0</Maxrate>
    </Video>
    <Audio>
        <Codec>aac</Codec>
        <Samplerate>44100</Samplerate>
        <Bitrate>128</Bitrate>
        <Channels>4</Channels>
    </Audio>
    <TransConfig>
        <AdjDarMethod>scale</AdjDarMethod>
        <IsCheckReso>false</IsCheckReso>
        <ResoAdjMethod>1</ResoAdjMethod>
    </TransConfig>
    <TimeInterval>
        <Start>0</Start>
        <Duration>60</Duration>
    </TimeInterval>
</Request>

响应

HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: 100
Connection: keep-alive
Date: Thu, 15 Jun 2017 12:37:29 GMT
Server: tencent-ci
x-ci-request-id: NTk0MjdmODlfMjQ4OGY3XzYzYzhf****

<Response>
    <Template>
        <Tag>Transcode</Tag>
        <TemplateId>t1460606b9752148c4ab182f55163ba7cd</TemplateId>
        <Name>TemplateName</Name>
        <Container>
            <Format>mp4</Format>
        </Container>
        <Video>
            <Codec>H.264</Codec>
            <Profile>high</Profile>
            <Bitrate>1000</Bitrate>
            <Crf></Crf>
            <Width>1280</Width>
            <Height></Height>
            <Fps>30</Fps>
            <Gop></Gop>
            <Preset>medium</Preset>
            <ScanMode></ScanMode>
            <Bufsize>0</Bufsize>
            <Maxrate>0</Maxrate>
        </Video>
        <Audio>
            <Codec>aac</Codec>
            <Samplerate>44100</Samplerate>
            <Bitrate>128</Bitrate>
            <Channels>4</Channels>
        </Audio>
        <TransConfig>
            <AdjDarMethod>scale</AdjDarMethod>
            <IsCheckReso>false</IsCheckReso>
            <ResoAdjMethod>1</ResoAdjMethod>
        </TransConfig>
        <TimeInterval>
            <Start>0</Start>
            <Duration>60</Duration>
        </TimeInterval>
        <CreateTime>2020-08-05T11:35:24+0800</CreateTime>
        <UpdateTime>2020-08-31T16:15:20+0800</UpdateTime>
    </Template>
</Response>

目录