有奖捉虫:云通信与企业服务文档专题,速来> HOT

功能描述

创建音视频转码模板。


请求

请求示例

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>
<Width>1280</Width>
<Fps>30</Fps>
<Preset>medium</Preset>
</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>
<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>
</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
AudioMix
Request
混音参数,详情见 AudioMix
Container
Audio.Remove 为 false 时生效
AudioMixArray
Request
混音参数, 最多同时传2个。详情见 AudioMixArray
Container数组
Audio.Remove 为 false 时生效
Container 类型 Container 的具体数据描述如下:
节点名称(关键字)
父节点
描述
类型
是否必选
Format
Request.Container
封装格式:取值见下表
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、AV1
hls/mkv
aac、mp3
H.264、H.265
ts/flv/avi/mov
aac、mp3
H.264
dash
aac
H.264
WebM
Vorbis、opus
VP8、VP9、AV1
aac
aac
不支持
mp3
mp3
不支持
flac
flac
不支持
amr
amr
不支持
adts
aac
不支持
m4a
aac
不支持
wav
pcm_s16le
不支持
Container 类型 Video 的具体数据描述如下:
节点名称(关键字)
父节点
描述
类型
是否必选
默认值
限制
Codec
Request.Video
编解码格式
String
H.264
当 format 为 WebM 时,为 VP8
H.264
H.265
VP8
VP9
AV1
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
auto 表示自适应码率
Crf
Request.Video
码率-质量控制因子
String
值范围:(0, 51]
如果设置了 Crf,则 Bitrate 的设置失效
当 Bitrate 为空时,默认为25
Gop
Request.Video
关键帧间最大帧数
String
值范围:[1, 100000]
Preset
Request.Video
视频算法器预置
String
当 Codec 为 H.264 时, 为medium
当 Codec 为 VP8 时,为 good
当 Codec 为 AV1 时,为 5
H.264支持该参数,取值 veryfast、fast、medium、slow、slower
VP8 支持该参数,取值 good、realtime
AV1 支持该参数,取值5(推荐值)、4
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/AV1 时不支持此参数
LongShortMode
Request.Video
长短边自适应
String
false
true、false
Codec 为 VP8/VP9/AV1 时不支持此参数
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
当 format 为 wav 时,为 pcm_s16le
取值 aac、mp3、flac、amr、Vorbis、opus、pcm_s16le
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
当 Codec 设置为 pcm_s16le 时,只支持1、2
当封装格式为 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、s16p、s32p
当 Codec 设置为 amr,支持 s16、s16p
当 Codec 设置为 opus,支持 s16
当 Codec 设置为 pcm_s16le,支持 s16
当 Codec 设置为 Vorbis,支持 fltp
当 Video.Codec 为 H.265 时,此参数无效
说明
Y 表示支持这种采样率,N 表示不支持。
Audio.Codec 采样率支持情况,如下表所示:
Audio.Codec
aac
amr
flac
opus
Vorbis
pcm_s16le
mp3
8000
Y
Y
Y
Y
Y
Y
封装不同,支持不同
11025
Y
N
Y
N
Y
Y
12000
Y
N
Y
N
Y
Y
16000
Y
N
Y
Y
Y
Y
22050
Y
N
Y
N
Y
Y
24000
Y
N
Y
Y
Y
Y
32000
Y
N
Y
N
Y
Y
44100
Y
N
Y
N
Y
Y
48000
Y
N
Y
Y
Y
Y
88200
Y
N
Y
N
Y
Y
96000
Y
N
Y
N
Y
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/avi/mov
Y
Y
Y
Y
Y
Y
Y
Y
Y
N
N
Container 类型 TransConfig 的具体数据描述如下:
节点名称(关键字)
父节点
描述
类型
是否必选
默认值
限制
AdjDarMethod
Request.TransConfig
分辨率调整方式
String
none
取值 scale、crop、pad、none
当输出视频的宽高比与原视频不等时,根据此参数做分辨率的相应调整
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 时,按照配置参数转码
VideoBitrateAdjMethod
Request.TransConfig
视频码率调整方式
String
0
取值0、1;当输出视频码率大于原视频码率时,0表示使用原视频码率;1表示返回转码失败
当 IsCheckVideoBitrate 为 true 时生效
IsCheckAudioBitrate
Request.TransConfig
是否检查音频码率
String
false
true、false
当为 false 时,按照配置参数转码
AudioBitrateAdjMethod
Request.TransConfig
音频码率调整方式
String
0
取值0、1;当输出音频码率大于原音频码率时,0 表示使用原音频码率;1表示返回转码失败
当 IsCheckAudioBitrate 为 true 时生效
IsCheckVideoFps
Request.TransConfig
是否检查视频帧率
String
false
true、false
当为 false 时,按照配置参数转码
VideoFpsAdjMethod
Request.TransConfig
视频帧率调整方式
String
0
取值0、1;当输出视频帧率大于原视频帧率时,0表示使用原视频帧率;1表示返回转码失败
当 IsCheckVideoFps 为 true 时生效
DeleteMetadata
Request.TransConfig
是否删除文件中的 MetaData 信息
String
false
true、false
当为 false 时, 保留源文件信息
IsHdr2Sdr
Request.TransConfig
是否开启 HDR 转 SDR
String
false
true/false
TranscodeIndex
Request.TransConfig
指定处理的流编号,对应媒体信息中的 Response.MediaInfo.Stream.Video.Index 和 Response.MediaInfo.Stream.Audio.Index,详见 获取媒体信息接口
String
HlsEncrypt
Request.TransConfig
hls 加密配置
Container
DashEncrypt
Request.TransConfig
dash 加密配置
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 时,该参数才有意义
Container 类型 DashEncrypt 的具体数据描述如下:
节点名称(关键字)
父节点
描述
类型
是否必选
默认值
限制
IsEncrypt
Request.TransConfig.DashEncrypt
是否开启 DASH 加密
String
false
true/false
当 Container.Format 为 dash 时支持加密
UriKey
Request.TransConfig.DashEncrypt
DASH 加密的 key
String
当 IsEncrypt 为 true 时,该参数才有意义

响应

响应头

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

响应体

该响应体返回为 application/xml 数据,包含完整节点数据的内容展示如下:
<Response>
<Template>
<Tag>Transcode</Tag>
<TemplateId>t1460606b9752148c4ab182f55163ba7cd</TemplateId>
<Name>TemplateName</Name>
<BucketId>test-1234567890</BucketId>
<Category>Custom</Category>
<Container>
<Format>mp4</Format>
</Container>
<Video>
<Codec>H.264</Codec>
<Profile>high</Profile>
<Bitrate>1000</Bitrate>
<Width>1280</Width>
<Fps>30</Fps>
<Preset>medium</Preset>
</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>
<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>
<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
AudioMix
Response.Template.TransTpl
同请求体中的
Request.AudioMix
Container
AudioMixArray
Response.Template.TransTpl
同请求体中的
Request.AudioMixArray
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: test-1234567890.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>
<Width>1280</Width>
<Fps>30</Fps>
<Preset>medium</Preset>
</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>
<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>
</Request>

响应

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

<Response>
<Template>
<Tag>Transcode</Tag>
<TemplateId>t1460606b9752148c4ab182f55163ba7cd</TemplateId>
<Name>TemplateName</Name>
<BucketId>test-1234567890</BucketId>
<Category>Custom</Category>
<Container>
<Format>mp4</Format>
</Container>
<Video>
<Codec>H.264</Codec>
<Profile>high</Profile>
<Bitrate>1000</Bitrate>
<Width>1280</Width>
<Fps>30</Fps>
<Preset>medium</Preset>
</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>
<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>
<CreateTime>2020-08-05T11:35:24+0800</CreateTime>
<UpdateTime>2020-08-31T16:15:20+0800</UpdateTime>
</Template>
</Response>