帮你快速理解、总结文档立即下载
文档中心>实践教程>Serverless 应用中心>部署融合媒体转码应用

部署融合媒体转码应用

最近更新时间:2026-05-08 11:32:42
我的收藏

应用场景

适配多种终端设备

利用综合转码能力,适配 PC、TV 以及移动终端等多平台播放,带来更好的视觉体验。

支持多种网络环境

不同网络带宽的用户可通过智能融合媒体转码能力选择最佳码率,流畅播放。

视频快速审核

视频在生产、发布的各个环节都有送审、评审需求,在保证相同画质质量的前提下,可通过提高视频压缩率、调整视频码率等方式降低带宽消耗,压缩成本,提升效率。

提升短视频用户体验

支持 K 歌等场景下的画质增强,综合利用多种视频加清技术进行处理,提升画质,进一步提升歌曲点唱率。

架构原理

腾讯多媒体实验室自研的智慧融合媒体处理技术,支持对包括视频、音乐、文字、图片等融合媒体内容进行理解、分析、处理、编创。可满足广电、文旅、教育、电商、政企、泛互等各行业场景的融合媒体处理需求。
通过 Serverless 应用和腾讯多媒体实验室智慧融合媒体(Intelligent Convergence Media)深度整合,您可快速部署一个基于 COS + API + SCF + ICM 的开箱即用、灵活便捷的高效视频转码应用。通过 API 网关进行事件触发,将用户原始视频进行转码处理,转码完成后上传到用户对应的 COS 平台进行存储。具体流程如下图所示:

image-20210713201137578



应用优势

存储多样化 视频源文件支持 URL 和 COS 两种类型,满足客户源视频存在于不同位置的存储需求,避免资源冗余和浪费。
开箱即用 提供转码应用,开箱即用,无需用户进行代码开发,零运维,弹性伸缩、按需付费。
算力可配置 可根据视频大小,选择不同规格的函数计算资源,可显示支持多核、大内存、高 IO 等定制化需求。
高压缩率 依托腾讯多媒体融合编解码引擎,可使同等画质下视频压缩率较传统压缩率平均提升50%。

应用资源

转码应用部署后,将为您创建以下资源:
云函数 :读取 COS 文件,使用腾讯多媒体融合编解码引擎转码后流式输出回 COS 中,并将转码过程的实时日志输出到 CLS。
API 网关:通过 API 网关触发器进行事件触发。
CLS 日志 :存储转码过程的实时日志。CLS 日志可能会产生一定计费,详情请参见 CLS 计费规则。

前提条件

1. 配置部署账号权限。参考 账号和权限配置。
2. 配置 运行角色 权限。

操作步骤

创建依赖资源

创建的过程中,需要依赖以下相关组件,请提前创建。具体创建流程请参见 VPC 创建、CFS 创建、COS 创建、Redis 创建、SecretId/SecretKey 创建。

创建融合媒体转码应用

1. 登录 Serverless 控制台,选择左侧导航栏中的 Serverless 应用。
2. 在 “Serverless 应用” 页面,单击新建应用。
3. 在新建应用页面,根据页面相关信息提示进行配置。如下图所示:


创建方式:选择应用市场。
模糊搜索:输入“转码”进行搜索,选择快速部署一个融合媒体转码应用。 单击模板中的查看详情,即可在弹出的“模板详情”窗口中查看相关信息,支持下载操作。
4. 单击下一步,根据页面相关信息提示进行配置。如下图所示:


应用名:例如,“transcode-app”。
地域:例如:“成都”。
私有网络:按需选择。
文件系统:按需选择。
密钥 Secretld:按需选择。
密钥 SecreKey:按需选择。
链接地址:按需选择。
链接密码:按需选择。
数据库索引:按需选择。
5. 单击完成即可完成应用创建、函数创建以及 API 网关触发器创建。 如需根据业务场景修改函数配置,您可以在 Serverless 应用 > 应用名称 > 资源列表 中进行修改。如下图所示:


6. 在“函数详情”页面中选择日志查询,可以查看到打印出的转码日志信息。如下图所示:


7. 进入 COS 控制台,查询转码结果 。
说明
转码应用可能需要依赖云函数长时间运行能力,详情请参见 异步执行。
融合媒体处理后台冷启动有一定时间,为避免请求超时,API 网关触发器的后端超时建议设置较大数值。

接口使用说明

接口请求路径

请求URL
请求方式
接口鉴权方式
1. 登录 Serverless 控制台,选择左侧导航栏中的Serverless 应用。
2. 在 Serverless 应用列表页,单击应用名称。
3. 在应用详情页,获取触发器访问入口。如下图所示:


POST Content-Type: application/json
融合转码服务接口由云函数实现,采用了 API 网关触发器方式对外提供服务,鉴权采用应用认证方式(ApiAppKey 和 ApiAppSecret),详情请参见 应用鉴权。

创建融合媒体转码任务接口

通过此接口可以发起转码任务,在接口参数中指定视频输入源、输出配置以及CFS等参数。

请求参数说明

参数名
类型
必选
描述
Action
String
是
本产品固定 CreateTransCodeJob
CreateTransCodeJobRequest
Object
是
包含 Inputs、Outputs
Inputs
Input[]
是
转码文件的获取来源,目前应用仅处理数组的第一项
Outputs
Output[]
是
转码文件的输出配置,目前应用仅处理数组的第一项
参数详情如下:
Input
Output
VideoDescriptor
CosConfig
参数名
类型
必选
描述
Url
String
否
待转码视频的 Url 地址,支持视频格式(mp4,avi,mkv,mov)
Source
Object
是
视频转码配置,用于转码
说明
Url 和 Source 必填一个,同时都有,优先使用 Url 。
Source 说明:
参数名
类型
必选
描述
Path
String
否
COS 路径,支持视频格式(mp4,avi,mkv,mov),例如 /video/1.mp4
CosConfig
CosConfig
是
COS 存储配置,用于存储转码后的文件

参数名
类型
必选
描述
Destination
String
否
COS 路径(不含文件名),例如/video
VideoDescriptor
VideoDescriptor
是
视频转码配置,用于转码
CosConfig
CosConfig
是
COS 存储配置,用于存储转码后的文件
参数名
类型
必选
描述
OutputName
String
是
输出文件名,后缀代表封装格式(mp4,avi,mkv,mov),例如 test.mp4
Codec
String
是
输出编码格式(H264,H265,VP9)
Width
Int
否
输出视频宽,正整数,取值范围[0,7680],默认0(输入视频宽度),必须为偶数
Height
Int
否
输出视频高,正整数,取值范围[0,7680],默认0(输入视频高度),必须为偶数
MaxBitrate
Int
否
输出视频最大码率,范围[10,200000],单位Kbps,默认输入视频码率
OutputAudioVideoSync
String
是
是否进行音频和视频帧率同步,取值范围为 on off
参数名
类型
必选
描述
Bucket
String
是
COS 桶名称,例如 test-12345678
Region
String
是
COS 所在的地域,例如 ap-guangzhou
说明:
转码函数运行时需要读取 COS 资源进行转码,并将转码后的资源写回 COS。CosConfig 将使用模板创建时填入的 SecretId 和 SecretKey 信息,需要给已提供的SecretId 和 SecretKey配置一个授权 COS 全读写的运行角色。更多参考 函数运行角色。
转码输出桶与应用建议配置在同一区域,因为跨区域配置转码应用稳定性及效率都会降低,并且会产生跨区流量费用。

返回参数说明

参数名
类型
描述
CreateTransCodeJobRequest
Object
异步调用固定返回格式,指示请求是否成功
job
Object
-
id
String
任务 id,可以通过任务查询接口查询任务当前状态
status
String
任务状态。PENDING 队列中;RUNNING 运行中;TERMINATED 已终止;SUCCESS 成功;FAIL 失败

请求示例

输入源为 Url
输入源为 COS
{
"Action": "CreateTransCodeJob",
"CreateTransCodeJobRequest": {
"Inputs": [{
"Url": "https://tencent"
}],
"Outputs": [{
"CosConfig": {
"Bucket": "media",
"Region": "ap-guangzhou"
},
"Destination": "/transcode",
"VideoDescriptor": {
"OutputName": "output.mp4",
"Codec": "H264" ,
"Width":640,
"Height" :360,
"MaxBitrate": 1024,
"OutputAudioVideoSync": "off"
}
}]
}
}
{
"Action": "CreateTransCodeJob",
"CreateTransCodeJobRequest": {
"Inputs": [{
"Source": {
"Path":"/enhance.mp4",
"CosConfig":{
"Bucket": "media",
"Region": "ap-guangzhou"
}
}
}],
"Outputs": [{
"CosConfig": {
"Bucket": "media",
"Region": "ap-guangzhou"
},
"Destination": "/transcode",
"VideoDescriptor": {
"OutputName": "output.mp4",
"Codec": "H264" ,
"Width":640,
"Height" :360,
"MaxBitrate": 1024,
"OutputAudioVideoSync": "off"
}
}]
}
}

响应示例

{
"CreateJobResponse": {
"job": {
"id": "ecjsxdesrprc9f8235",
"state": "PENDING"
}
}
}

查询融合媒体转码任务状态接口

此接口可以通过创建融合媒体任务得到的任务 id 来查询任务状态。

请求参数说明

参数名
类型
必选
描述
Action
String
是
本产品固定 DescribeJob
DescribeJobRequest
Object
是
包含 id
DescribeJobRequest
Input[]
是
转码文件的获取来源,目前应用仅处理数组的第一项
id
String
是
创建融合媒体任务得到的任务 id

响应说明

参数名
类型
必选
描述
RequestId
String
是
请求唯一 RequestId
DescribeJobResponse
Object
是
包含job 对象
job
Object
是
任务状态结构体
id
String
是
任务 id
state
String
是
任务状态。PENDING 队列中;RUNNING 运行中;TERMINATED 已终止;SUCCESS 成功;FAIL 失败
ApplyParam
String
是
已经提交的任务参数
applyTime
String
是
提交时间
startTime
String
是
开始时间
endTime
String
是
任务结束时间
EngineRequestId
String
是
引擎 RequestId,可以查询实际的引擎运行情况
ErrorMessage
String
是
若引擎运行失败,可以看到根据错误信息判断错误来源

请求示例

{
"Action": "DescribeJob",
"DescribeJobRequest": {
"id": "ecjsxdesrprc9f8235"
}
}

响应示例

{
"RequestId": "f0mn4teo68pjvn4eujawwcpz52vsiplf",
"DescribeJobResponse": {
"job": {
"id": "g2ads4bgms1wwqv244",
"state": "SUCCESS",
"ApplyParam": "{}",
"applyTime": "1630929363223",
"startTime": "1630932002511",
"endTime": "1630965618361",
"EngineRequestId": "f8344d37-10c1-4a33-95eb-920337dacb8a"
}
}
}

取消融合媒体转码任务状态接口

此接口可以通过创建融合媒体任务得到的任务 id 来取消转码任务,只有 PENDING 状态任务可取消。

请求参数说明

参数名
类型
必选
描述
Action
String
是
本产品固定 CancelJob
CancelJobRequest
Object
是
包含 id
id
String
是
创建融合媒体任务得到的任务 id

响应参数说明

参数名
类型
必选
描述
RequestId
String
是
请求唯一 id
Result
Object
是
包含 IsSuccess
IsSuccess
Boolean
是
取消任务是否成功,取值范围为 true false

请求示例

{
"Action": "CancelJob",
"CancelJobRequest": {
"id": "9rv9zx15idweviq2"
}
}

响应示例

{
"RequestId": "yqsrrgh6t1097k6cqd8cpnw5y26xkone",
"Result": {
"IsSuccess": true
}
}

中止融合媒体转码任务状态接口

此接口可以通过创建融合媒体任务得到的任务 id 来中止转码任务,只有 RUNNING 状态任务可中止,此操作为尝试中止,最终是否中止以结果为准。

请求参数说明

参数名
类型
必选
描述
Action
String
是
本产品固定 TerminateJob
TerminateJobRequest
Object
是
包含 id
id
String
是
创建融合媒体任务得到的任务 id

响应参数说明

参数名
类型
必选
描述
RequestId
String
是
请求唯一 id
Result
Object
是
包含 IsSuccess
IsSuccess
Boolean
是
中止任务是否成功,取值范围为 true false

请求示例

{
"Action": "TerminateJob",
"TerminateJobRequest": {
"id": "m2y3isjca9ew9w54"
}
}

响应示例

{
"RequestId": "yqsrrgh6t1097k6cqd8cpnw5y26xkone",
"Result": {
"IsSuccess": true
}
}