tencent cloud

数据万象

动态与公告
产品动态
产品公告
产品简介
产品概述
产品优势
应用场景
功能概览
地域与域名
使用限制
产品计费
计费概述
计费方式
计费项
免费额度
欠费说明
查看消费明细
常见问题
快速入门
注册与登录
绑定存储桶
上传和处理文件
下载和删除文件
解绑存储桶
通过 COS 使用数据万象
能力地图
图片处理
媒体处理
内容审核
AI 内容识别
文档处理
智能语音
文件处理
用户指南
概览
存储桶管理
智能工具箱
任务与工作流
数据监控
用量统计
实践教程
版权保护解决方案
图片处理实践
API 授权策略使用指引
工作流实践
API 文档
API 概览
结构体
公共请求头部
公共响应头部
开通万象服务
图片处理
AI 内容识别
智能语音
媒体处理
内容审核
文档处理
文件处理
任务与工作流
云查毒
错误码
请求签名
SDK 文档
SDK 概览
图片处理 Android SDK
图片处理 iOS SDK
COS Android SDK
C SDK
C++ SDK
.NET(C#) SDK
Go SDK
COS iOS SDK
Java SDK
JavaScript SDK
Node.js SDK
PHP SDK
Python SDK
小程序 SDK
SDK 产品个人信息保护规则
安全与合规
权限管理
常见问题
基础设置
文档处理
媒体处理
内容识别
智能语音
服务协议
Service Level Agreement
联系我们
词汇表

生成播放列表

PDF
聚焦模式
字号
最后更新时间: 2025-11-19 17:46:01

功能描述

边转边播功能,可以根据用户请求实时生成转码后的内容,并将生成的文件转存至对象存储 COS,在下次访问视频无需再进行转码。与异步转码任务相比,边转边播的处理耗时极短,可以在分发视频的同时完成转码,实现边播放边转码的效果。边转边播支持两种使用方式:通过 URL 参数使用通过播放列表使用。本文将介绍如何通过播放列表使用边转边播。
说明:
边转边播生成的内容为基于 HLS 的视频,HLS 是一种基于 HTTP 的流媒体协议,通过 m3u8 播放列表文件和 ts 视频分片两部分内容,实现 “边下载边播放”,适合需要兼容多设备的视频播放场景。
通过播放列表使用边转边播主要分三步,架构示意图如下所示:
第一步:生成 m3u8播放列表,本文详细介绍了如何生成 m3u8播放列表;
第二步:通过 获取播放列表下载权限接口,为播放列表进行签名授权并生成带鉴权信息的播放列表;
第三步:使用 HLS 播放器进行视频的播放,播放视频时会实时对视频进行转码,可以直接将第二步的链接粘贴到支持 HLS 的播放器中播放。

图1 通过播放列表使用边转边播的架构示意图



授权说明

通过子账号提交文件解压任务时,需要在 授权策略 的 action 中添加 ci:CreateMediaJobs,数据万象支持的所有操作接口请参见 action
同时,还需要授予 cam:PassRole 权限用于传递角色,便于异步处理接口能够通过 CAM 的“角色”进行 COS 的资源读写操作。

服务开通

使用该功能需 绑定存储桶
使用该功能需提前通过 控制台接口 开通媒体处理服务。

使用限制

使用该接口时,需开启白名单,可 提交工单 联系我们开启。
不支持处理 COS 上的归档存储类型和深度归档存储类型的视频,如果需要处理此类型视频,请先 恢复归档文件

费用说明

生成播放列表不会产生实际的转码及费用,只有在进行播放时,才会实时转码并进行计费。边转边播与普通音视频转码的计费方式和价格相同,按实际转码时长进行计费,输出的视频分辨率不同对应的价格也不同,详情请参见媒体处理费用

请求

请求示例

POST /jobs HTTP/1.1
Host: <BucketName-APPID>.ci.<Region>.myqcloud.com
Date: <GMT Date>
Authorization: <Auth String>
Content-Length: <length>
Content-Type: application/xml
说明:
Authorization: Auth String(详情请参见 请求签名 文档)。
通过子账号使用时,需要授予相关的权限,详情请参见 授权粒度详情 文档。

请求头

此接口仅使用公共请求头部,详情请参见 公共请求头部 文档。

请求体

该请求操作的实现需要有如下请求体。
<Request>
<Tag>GeneratePlayList</Tag>
<Input>
<Object>input/demo.mp4</Object>
</Input>
<Operation>
<Transcode>
<Container>
<Format>hls</Format>
<ClipConfig>
<Duration>5</Duration>
</ClipConfig>
</Container>
<Video>
<Codec>H.264</Codec>
<Width>1080</Width>
<Height>1920</Height>
<Bitrate>192</Bitrate>
</Video>
</Transcode>
<Output>
<Region>ap-chongqing</Region>
<Bucket>test-123456789</Bucket>
<Object>output/out.${ext}</Object>
</Output>
<UserData>This is my data.</UserData>
<JobLevel>0</JobLevel>
</Operation>
<CallBack>http://callback.demo.com</CallBack>
<CallBackFormat>JSON</CallBackFormat>
</Request>
具体的数据描述如下:
节点名称(关键字)
父节点
描述
类型
是否必选
Request
保存请求的容器
Container
Container 类型 Request 的具体数据描述如下:
节点名称(关键字)
父节点
描述
类型
是否必选
Tag
Request
创建任务的 Tag:GeneratePlayList
String
Input
Request
待操作的文件信息
Container
Operation
Request
操作规则
Container
CallBack
Request
任务回调地址,优先级高于队列的回调地址。设置为 no 时,表示队列的回调地址不产生回调
String
CallBackFormat
Request
任务回调格式,JSON 或 XML,默认 XML,优先级高于队列的回调格式
String
QueueType
Request
任务所在的队列类型,限制为 SpeedTranscoding, 表示为开启倍速转码
String
CallBackType
Request
任务回调类型,Url 或 TDMQ,默认 Url,优先级高于队列的回调类型
String
CallBackMqConfig
Request
任务回调 TDMQ 配置,当 CallBackType 为 TDMQ 时必填。详情见 CallBackMqConfig
Container
Container 类型 Input 的具体数据描述如下:
节点名称(关键字)
父节点
描述
类型
是否必选
Object
Request.Input
文件路径
String
Container 类型 Operation 的具体数据描述如下:
节点名称(关键字)
父节点
描述
类型
是否必选
Transcode
Request.Operation
转码参数,用于配置视频转码时的参数信息
Container
Output
Request.Operation
结果输出配置
Container
UserData
Request.Operation
透传用户信息, 可打印的 ASCII 码, 长度不超过1024
String
JobLevel
Request.Operation
任务优先级,级别限制:0 、1 、2 。级别越大任务优先级越高,默认为0
String
Watermark
Request.Operation
水印模板参数,同创建水印模板接口中的 Request.Watermark,最多传2个
Container
WatermarkTemplateId
Request.Operation
水印模板 ID,可以传多个水印模板 ID,最多传2个。
String数组
说明:
对于水印参数,可以使用 WatermarkTemplateId 或 Watermark 设置,WatermarkTemplateId 优先级更高。
Container 类型
Transcode
的具体数据描述如下:
节点名称(关键字)
父节点
描述
类型
必选
Container
Request.Operation.Transcode
容器封装格式
Container
Video
Request.Operation.Transcode
视频信息
Container
TransConfig
Request.Operation.Transcode
转码配置
Container
Container 类型 Container 的具体数据描述如下:
节点名称(关键字)
父节点
描述
类型
是否必选
Format
Request.Operation.Transcode.Container
封装格式,取值范围 hls,默认 hls
String
ClipConfig
Request.Operation.Transcode.Container
分片配置
Container
Container 类型 ClipConfig 的具体数据描述如下:
节点名称(关键字)
父节点
描述
类型
是否必选
Duration
Request.Operation.Transcode.Container.ClipConfig
分片时长,单位秒,默认5s,取值范围[3, 8]
String
Container 类型 Video 的具体数据描述如下:
节点名称(关键字)
父节点
描述
类型
是否必选
Codec
Request.Operation.Transcode.Video
编码格式,默认 H.264 ,目前仅支持 H.264
String
Width
Request.Operation.Transcode.Video
视频宽,单位px ,范围[256, 2560], 如果只设置 Width,Height 按照视频原始比例计算,必须为8的倍数,默认原视频宽
String
Height
Request.Operation.Transcode.Video
视频高,单位px ,范围[256, 2560], 如果只设置 Width 按照视频原始比例计算,必须为8的倍数,默认原视频宽
String
Bitrate
Request.Operation.Transcode.Video
视频输出码率,单位Kbps,范围[128, 10000],auto 表示自适应码率,默认原视频码率
String
Fps
Request.Operation.Transcode.Video
帧率,单位fps ,范围(0, 60],默认30
String
Gop
Request.Operation.Transcode.Video
关键帧间最大帧数,范围[1, 100000],默认2
String
Maxrate
Request.Operation.Transcode.Video
视频码率峰值,单位 Kbps ,范围[10, 50000]
String
Crf
Request.Operation.Transcode.Video
码率-质量控制因子
值范围:(15, 38]
如果设置了 Crf,则 Bitrate 的设置失效
当 Bitrate 为空时,默认为25
String
Container 类型 TransConfig 的具体数据描述如下:
节点名称(关键字)
父节点
描述
类型
是否必选
InitialClipNum
Request.Operation.Transcode.TransConfig
初始转码分片个数,默认 0
String
CosTag
Request.Operation.Transcode.TransConfig
输出 m3u8文件对象的标签集合,最多可设置10个标签(例如,Key1 = Value1 & Key2 = Value2)。 标签集合中的 Key 和 Value 必须先进行 URL 编码。
String
HlsEncrypt
Request.TransConfig
hls 加密配置
Container
Container 类型 HlsEncrypt 的具体数据描述如下:
节点名称(关键字)
父节点
描述
类型
是否必选
限制
IsHlsEncrypt
Request.TransConfig.HlsEncrypt
是否开启 HLS 加密,取值 true/false,默认 false
String
当 Container.Format 为 hls 时支持加密
Container 类型
Output
的具体数据描述如下:
节点名称(关键字)
父节点
描述
类型
是否必选
Region
Request.Operation.Output
存储桶的地域
String
Bucket
Request.Operation.Output
存储结果的存储桶
String
Object
Request.Operation.Output
输出结果的文件名
String
Request.Operation.Output.Object 支持的通配符如下:
通配符
含义
${ext}
封装格式
${jobid}
任务 Id

响应

响应头

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

响应体

该响应体返回为 application/xml 数据,包含完整节点数据的内容展示如下:
<Response>
<JobsDetail>
<Code>Success</Code>
<Message/>
<JobId>j8d121820f5e411ec926ef19d53ba9c6f</JobId>
<State>Submitted</State>
<Progress>0</Progress>
<CreationTime>2022-06-27T15:23:10+0800</CreationTime>
<StartTime>-</StartTime>
<EndTime>-</EndTime>
<QueueId>p2242ab62c7c94486915508540933a2c6</QueueId>
<Tag>GeneratePlayList</Tag>
<Input>
<BucketId>test-123456789</BucketId>
<Object>input/demo.mp4</Object>
<Region>ap-chongqing</Region>
</Input>
<Operation>
<Transcode>
<Container>
<Format>hls</Format>
<ClipConfig>
<Duration>5</Duration>
</ClipConfig>
</Container>
<Video>
<Codec>H.264</Codec>
<Width>1080</Width>
<Height>1920</Height>
<Bitrate>192</Bitrate>
</Video>
</Transocde
<Output>
<Region>ap-chongqing</Region>
<Bucket>test-123456789</Bucket>
<Object>output/out.${ext}</Object>
</Output>
<UserData>This is my data.</UserData>
<JobLevel>0</JobLevel>
</Operation>
</JobsDetail>
</Response>
具体的数据内容如下:
节点名称(关键字)
父节点
描述
类型
Response
保存结果的容器
Container
Container 节点 Response 的内容:
节点名称(关键字)
父节点
描述
类型
JobsDetail
Response
任务的详细信息
Container
Container 节点 JobsDetail 的内容:
节点名称(关键字)
父节点
描述
类型
Code
Response.JobsDetail
错误码,当 State 为 Failed 时错误码生效
String
Message
Response.JobsDetail
错误描述,当 State 为 Failed 时错误描述生效
String
JobId
Response.JobsDetail
新创建任务的 ID
String
State
Response.JobsDetail
任务的状态,为 Submitted、Running、Success、Failed、Pause、Cancel 其中一个
String
Progress
Response.JobsDetail
任务进度百分比,当 State 为 Submitted、Running、Success、Pause 时此参数生效,范围为[0, 100]
String
CreationTime
Response.JobsDetail
任务的创建时间
String
StartTime
Response.JobsDetail
任务的开始时间
String
EndTime
Response.JobsDetail
任务的结束时间
String
QueueId
Response.JobsDetail
任务所属的队列 ID
String
Tag
Response.JobsDetail
新创建任务的 Tag:Transcode
String
Input
Response.JobsDetail
该任务的输入资源地址
Container
Operation
Response.JobsDetail
该任务的规则
Container
Container 节点 Input 的内容:
节点名称(关键字)
父节点
描述
类型
BucketId
Response.JobsDetail.Input
源文件的存储桶
String
Object
Response.JobsDetail.Input
源文件的文件名
String
Region
Response.JobsDetail.Input
存储桶的地域
String
Container 节点 Operation 的内容:
节点名称(关键字)
父节点
描述
类型
Transcode
Response.JobsDetail.Operation
同请求中的 Request.Operation.Transcode
Container
Output
Response.JobsDetail.Operation
同请求中的 Request.Operation.Output
Container
UserData
Response.JobsDetail.Operation
透传用户信息
String
JobLevel
Response.JobsDetail.Operation
任务优先级
String
TemplateName
Response.JobsDetail.Operation
任务的模板名称, 当 TemplateId 存在时返回
String
MediaInfo
Response.JobsDetail.Operation
输出文件的媒体信息,任务未完成时不返回
Container
MediaResult
Response.JobsDetail.Operation
输出文件的基本信息,任务未完成时不返回
Container
Container 节点 MediaInfo 的内容:同 GenerateMediaInfo 接口中的 Response.MediaInfo 节点。
Container 节点 MediaResult 的内容:详情见 MediaResult

错误码

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

实际案例:使用转码处理参数

请求

POST /jobs HTTP/1.1
Authorization:q-sign-algorithm=sha1&q-ak=************************************&q-sign-time=1497530202;1497610202&q-key-time=1497530202;1497610202&q-header-list=&q-url-param-list=&q-signature=****************************************
Host: test-1234567890.ci.ap-chongqing.myqcloud.com
Content-Length: 166
Content-Type: application/xml

<Request>
<Tag>GeneratePlayList</Tag>
<Input>
<Object>input/demo.mp4</Object>
</Input>
<Operation>
<Transcode>
<Container>
<Format>hls</Format>
</Container>
<Video>
<Codec>H.264</Codec>
<Bitrate>1000</Bitrate>
<Width>1280</Width>
<Fps>30</Fps>
</Video>
</Transcode>
<Output>
<Region>ap-chongqing</Region>
<Bucket>test-123456789</Bucket>
<Object>output/out.${ext}</Object>
</Output>
<UserData>This is my data.</UserData>
<JobLevel>0</JobLevel>
</Operation>
<CallBack>http://callback.demo.com</CallBack>
<CallBackFormat>JSON</CallBackFormat>
</Request>

响应

HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: 230
Connection: keep-alive
Date: Mon, 28 Jun 2022 15:23:12 GMT
Server: tencent-ci
x-ci-request-id: NTk0MjdmODlfMjQ4OGY3XzYzYzhf****

<Response>
<JobsDetail>
<Code>Success</Code>
<Message/>
<JobId>j8d121820f5e411ec926ef19d53ba9c6f</JobId>
<State>Submitted</State>
<Progress>0</Progress>
<CreationTime>2022-06-27T15:23:10+0800</CreationTime>
<StartTime>-</StartTime>
<EndTime>-</EndTime>
<QueueId>p2242ab62c7c94486915508540933a2c6</QueueId>
<Tag>Transcode</Tag>
<Input>
<BucketId>test-123456789</BucketId>
<Object>input/demo.mp4</Object>
<Region>ap-chongqing</Region>
</Input>
<Operation>
<Transcode>
<Container>
<Format>hls</Format>
</Container>
<Video>
<Codec>H.264</Codec>
<Bitrate>1000</Bitrate>
<Width>1280</Width>
<Fps>30</Fps>
</Video>
</Transcode>
<Output>
<Region>ap-chongqing</Region>
<Bucket>test-123456789</Bucket>
<Object>output/out.${ext}</Object>
</Output>
<UserData>This is my data.</UserData>
<JobLevel>0</JobLevel>
</Operation>
</JobsDetail>
</Response>

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈