1. 接口描述
接口请求域名: vod.tencentcloudapi.com 。
该接口用于合成媒体文件,可以达到以下效果:
- 画面旋转:对视频、图片的画面旋转一定角度,或按照某个方向翻转。
- 声音控制:升高降低视频、音频中声音的音量,或者对视频静音。
- 画面叠加:将视频、图片中的画面依序叠加在一起,如实现“画中画”的效果。
- 声音混合:将视频、音频中的声音混合在一起(混音)。
- 声音提取:将视频中的音频提取出来(不保留画面)。
- 裁剪:对视频、音频裁剪出指定时间段。
- 拼接:对视频、音频、图片按时间顺序前后拼接。
- 转场:将多段视频或图片拼接时,可以在段落之间添加转场效果。
合成后的媒体封装格式可以是 MP4(视频)或 MP3(音频)。如使用事件通知,事件通知的类型为 视频合成完成。
默认接口请求频率限制:100次/秒。
2. 输入参数
以下请求参数列表仅列出了接口请求参数和部分公共参数,完整公共参数列表见 公共请求参数。
参数名称 | 必选 | 类型 | 描述 |
---|---|---|---|
Action | 是 | String | 公共参数,本接口取值:ComposeMedia。 |
Version | 是 | String | 公共参数,本接口取值:2018-07-17。 |
Region | 否 | String | 公共参数,此参数为可选参数。 |
Tracks.N | 是 | Array of MediaTrack | 输入的媒体轨道列表,包括视频、音频、图片等素材组成的多个轨道信息,其中: |
Output | 是 | ComposeMediaOutput | 输出的媒体文件信息。 |
SubAppId | 否 | Integer | 点播应用 ID。从2023年12月25日起开通点播的客户,如访问点播应用中的资源(无论是默认应用还是新创建的应用),必须将该字段填写为应用 ID。 示例值:123 |
Canvas | 否 | Canvas | 制作视频文件时使用的画布。 |
SessionContext | 否 | String | 标识来源上下文,用于透传用户请求信息,在ComposeMediaComplete回调将返回该字段值,最长 1000个字符。 示例值:"sessioncontext" |
SessionId | 否 | String | 用于任务去重的识别码,如果三天内曾有过相同的识别码的请求,则本次的请求会返回错误。最长 50 个字符,不带或者带空字符串表示不做去重。 示例值:"sessionid" |
3. 输出参数
参数名称 | 类型 | 描述 |
---|---|---|
TaskId | String | 制作媒体文件的任务 ID,可以通过该 ID 查询制作任务(任务类型为 MakeMedia)的状态。 示例值:125xxx65-ComposeMedia-bffb15f07530b57bc1aabb01fac74bca |
RequestId | String | 唯一请求 ID,由服务端生成,每次请求都会返回(若请求因其他原因未能抵达服务端,则该次请求不会获得 RequestId)。定位问题时需要提供该次请求的 RequestId。 |
4. 示例
示例1 对点播中的视频进行配音
对 5285485487985271487 消除原来的音频,从5秒开始使用5285485487985271488进行配音,从20秒开始使用5285485487985271489的第2到第16秒进行配音,生成一个新的点播视频。
输入示例
POST / HTTP/1.1
Host: vod.tencentcloudapi.com
Content-Type: application/json
X-TC-Action: ComposeMedia
<公共请求参数>
{
"Output": {
"Container": "mp4",
"FileName": "test"
},
"Tracks": [
{
"TrackItems": [
{
"Type": "Empty",
"EmptyItem": {
"Duration": "5"
}
},
{
"AudioItem": {
"SourceMedia": "5285485487985271488",
"Duration": "15"
},
"Type": "Audio"
},
{
"AudioItem": {
"Duration": "14",
"SourceMedia": "5285485487985271489",
"SourceMediaStartTime": "2"
},
"Type": "Audio"
}
],
"Type": "Audio"
},
{
"TrackItems": [
{
"Type": "Video",
"VideoItem": {
"SourceMedia": "5285485487985271487",
"AudioOperations": [
{
"VolumeParam": {
"Mute": "1"
},
"Type": "Volume"
}
]
}
}
],
"Type": "Video"
}
]
}
输出示例
{
"Response": {
"RequestId": "6ca31e3a-6b8e-4b4e-9256-fdc700064ef3",
"TaskId": "125xxx65-ComposeMedia-bffb15f07530b57bc1aabb01fac74bca"
}
}
示例2 对两个视频流进行裁剪后拼接在一起
取5285485487985271487的第2秒到第62秒,5285485487985271488的第6秒到81秒进行拼接,中间设置5秒的淡入淡出转场, 从视频的3秒到18秒贴上一个图片5285485487985271489,位置为(20px,20px),宽高为(100px,100px)。
输入示例
POST / HTTP/1.1
Host: vod.tencentcloudapi.com
Content-Type: application/json
X-TC-Action: ComposeMedia
<公共请求参数>
{
"Output": {
"Container": "mp4",
"FileName": "test"
},
"Tracks": [
{
"TrackItems": [
{
"StickerItem": {
"CoordinateOrigin": "TopLeft",
"XPos": "20px",
"YPos": "20px",
"Height": "100px",
"Width": "100px",
"StartTime": "3",
"Duration": "15",
"SourceMedia": "5285485487985271489"
},
"Type": "Sticker"
}
],
"Type": "Sticker"
},
{
"TrackItems": [
{
"TransitionItem": {
"Duration": "5",
"MediaTransitions": [
{
"Type": "ImageFadeInFadeOut"
}
]
},
"Type": "Transition"
},
{
"Type": "Video",
"VideoItem": {
"Duration": "60",
"SourceMedia": "5285485487985271487",
"SourceMediaStartTime": "2"
}
},
{
"Type": "Video",
"VideoItem": {
"Duration": "75",
"SourceMedia": "5285485487985271488",
"SourceMediaStartTime": "6"
}
}
],
"Type": "Video"
}
]
}
输出示例
{
"Response": {
"RequestId": "6ca31e3a-6b8e-4b4e-9256-fdc700064ef3",
"TaskId": "125xxx65-ComposeMedia-bffb15f07530b57bc1aabb01fac74bc2"
}
}
示例3 将一个视频作为另一个视频的画中画
将5285485487985271487的视频作为画中画的主画面;将5285485487985271488的视频作为画中画的子画面;子画面的中心偏移主画面25%(即在主画面右下角),宽度占画面的30%。
输入示例
POST / HTTP/1.1
Host: vod.tencentcloudapi.com
Content-Type: application/json
X-TC-Action: ComposeMedia
<公共请求参数>
{
"Output": {
"Container": "mp4",
"FileName": "test"
},
"Tracks": [
{
"TrackItems": [
{
"Type": "Video",
"VideoItem": {
"SourceMedia": "5285485487985271487"
}
}
],
"Type": "Video"
},
{
"TrackItems": [
{
"Type": "Video",
"VideoItem": {
"CoordinateOrigin": "Center",
"Width": "30%",
"SourceMedia": "5285485487985271488",
"XPos": "25%",
"YPos": "25%"
}
}
],
"Type": "Video"
}
]
}
输出示例
{
"Response": {
"RequestId": "6ca31e3a-6b8e-4b4e-9256-fdc700064ef3",
"TaskId": "125xxx65-ComposeMedia-bffb15f07530b57bc1aabb01fac74bca"
}
}
5. 开发者资源
腾讯云 API 平台
腾讯云 API 平台 是综合 API 文档、错误码、API Explorer 及 SDK 等资源的统一查询平台,方便您从同一入口查询及使用腾讯云提供的所有 API 服务。
API Inspector
用户可通过 API Inspector 查看控制台每一步操作关联的 API 调用情况,并自动生成各语言版本的 API 代码,也可前往 API Explorer 进行在线调试。
SDK
云 API 3.0 提供了配套的开发工具集(SDK),支持多种编程语言,能更方便的调用 API。
- Tencent Cloud SDK 3.0 for Python: GitHub Gitee
- Tencent Cloud SDK 3.0 for Java: GitHub Gitee
- Tencent Cloud SDK 3.0 for PHP: GitHub Gitee
- Tencent Cloud SDK 3.0 for Go: GitHub Gitee
- Tencent Cloud SDK 3.0 for Node.js: GitHub Gitee
- Tencent Cloud SDK 3.0 for .NET: GitHub Gitee
- Tencent Cloud SDK 3.0 for C++: GitHub Gitee
- Tencent Cloud SDK 3.0 for Ruby: GitHub Gitee
命令行工具
6. 错误码
以下仅列出了接口业务逻辑相关的错误码,其他错误码详见 公共错误码。
错误码 | 描述 |
---|---|
FailedOperation | 操作失败。 |
FailedOperation.InvalidVodUser | 没有开通点播业务。 |
FailedOperation.UploadCosFail | 操作失败:上传文件到 cos 失败。 |
InternalError | 内部错误。 |
InternalError.GetFileInfoError | 内部错误:获取媒体文件信息错误。 |
InternalError.GetMediaListError | 内部错误:获取媒体列表错误。 |
InvalidParameter | 参数错误。 |
InvalidParameterValue.ClipDuration | 参数值错误:裁剪时间段太长。 |
InvalidParameterValue.SessionContextTooLong | SessionContext 过长。 |
InvalidParameterValue.SessionId | 去重识别码重复,请求被去重。 |
UnauthorizedOperation | 未授权操作。 |