应用场景
适配多种终端设备
利用综合转码能力,适配 PC、TV 以及移动终端等多平台播放,带来更好的视觉体验。
支持多种网络环境
不同网络带宽的用户可通过智能融合媒体转码能力选择最佳码率,流畅播放。
视频快速审核
视频在生产、发布的各个环节都有送审、评审需求,在保证相同画质质量的前提下,可通过提高视频压缩率、调整视频码率等方式降低带宽消耗,压缩成本,提升效率。
提升短视频用户体验
支持 K 歌等场景下的画质增强,综合利用多种视频加清技术进行处理,提升画质,进一步提升歌曲点唱率。
架构原理
腾讯多媒体实验室自研的智慧融合媒体处理技术,支持对包括视频、音乐、文字、图片等融合媒体内容进行理解、分析、处理、编创。可满足广电、文旅、教育、电商、政企、泛互等各行业场景的融合媒体处理需求。通过 Serverless 应用和腾讯多媒体实验室智慧融合媒体(Intelligent Convergence Media)深度整合,您可快速部署一个基于 COS + API + SCF + ICM 的开箱即用、灵活便捷的高效视频转码应用。通过 API 网关进行事件触发,将用户原始视频进行转码处理,转码完成后上传到用户对应的 COS 平台进行存储。具体流程如下图所示:

应用优势
存储多样化
视频源文件支持 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[] | 是 | 转码文件的输出配置,目前应用仅处理数组的第一项 |
参数详情如下:InputOutputVideoDescriptorCosConfig
参数名 | 类型 | 必选 | 描述 |
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 }}
官网1折活动,限时活动,即将结束,速速收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利。同意关联立享优惠
转转请注明出处:https://www.yunxiaoer.com/149211.html