背景
工作流无法满足用户场景时,需用户自己判断业务逻辑,使用API提交转码任务。例如:并不是所有的视频都需要转码,不同视频需要设置不同的转码配置。
优势
自定义业务逻辑,灵活提交转码作业。
功能强大,支持转码、转封装、水印、支持HLS-AES128标准加密、剪辑等功能。
转码任务执行完成,支持向指定的消息队列或消息通知发送执行信息。
支持URL播放。
架构图如下所示:
解析
配置转码模板、水印模板、设置管道消息通知。
上传视频到OSS。
调用API,提交转码作业。
等待媒体转码完成,并发送完成消息到队列。
播放。
使用限制
一个转码作业生成一个输出文件,允许批量提交作业。
API转码支持HLS-AES128标准加密,暂不支持阿里云私有加密。
API转码支持URL播放,不支持媒体ID播放。需用户自己关联多个格式的多个清晰度输出,实现多清晰度自动切换、多格式支持等逻辑。
准备
操作步骤
输入文件上传到OSS。(多种上传方案:OSS控制台上传,使用OSS相关上传工具上传,上传SDK)。
在获取到消息后,调用“查询转码作业”接口查询作业执行结果,获取输出文件URL。
从查询转码作业接口返回结果的
Output字段中获取输出文件的 Bucket、Location 和 Object,使用 OSS SDK 生成预签名 URL,并将该 URL 传递给下游业务服务。从查询转码作业接口返回结果的
Output字段中,获取输出文件的Bucket、Location和Object。使用 OSS SDK,基于 Location、Bucket 和 Object 生成带过期时间的预签名 URL。以 Python 的 oss2 为例:
import oss2 auth = oss2.Auth(ACCESS_KEY_ID, ACCESS_KEY_SECRET) # endpoint 根据上一步返回的 Location 拼接,Bucket 名称使用上一步返回的 Bucket bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com', bucket_name) # object_key 使用上一步返回的 Object,3600 为预签名 URL 的有效期(单位:秒) url = bucket.sign_url('GET', object_key, 3600)生成的预签名 URL 包含
Expires、OSSAccessKeyId和Signature参数,可通过外网直接访问并播放转码后的输出文件。预签名 URL 到达 Expires 指定的过期时间后失效,需重新生成。将生成的预签名 URL 通过 HTTP 回调传递给下游业务服务。
通过预签名URL或输出文件URL播放视频。