如何进行API转码

更新时间:
复制 MD 格式

背景

工作流无法满足用户场景时,需用户自己判断业务逻辑,使用API提交转码任务。例如:并不是所有的视频都需要转码,不同视频需要设置不同的转码配置。

优势

  • 自定义业务逻辑,灵活提交转码作业。

  • 功能强大,支持转码、转封装、水印、支持HLS-AES128标准加密、剪辑等功能。

  • 转码任务执行完成,支持向指定的消息队列或消息通知发送执行信息。

  • 支持URL播放。

架构图如下所示:

解析

  1. 配置转码模板、水印模板、设置管道消息通知。

  2. 上传视频到OSS。

  3. 调用API,提交转码作业。

  4. 等待媒体转码完成,并发送完成消息到队列。

  5. 播放。

使用限制

  • 一个转码作业生成一个输出文件,允许批量提交作业。

  • API转码支持HLS-AES128标准加密,暂不支持阿里云私有加密。

  • API转码支持URL播放,不支持媒体ID播放。需用户自己关联多个格式的多个清晰度输出,实现多清晰度自动切换、多格式支持等逻辑。

准备

操作步骤

  1. 输入文件上传到OSS。(多种上传方案:OSS控制台上传,使用OSS相关上传工具上传,上传SDK)。

  2. 设置管道消息队列通知

  3. 提交转码任务

  4. 在获取到消息后,调用“查询转码作业”接口查询作业执行结果,获取输出文件URL。

  5. 从查询转码作业接口返回结果的 Output 字段中获取输出文件的 Bucket、Location 和 Object,使用 OSS SDK 生成预签名 URL,并将该 URL 传递给下游业务服务。

    1. 从查询转码作业接口返回结果的 Output 字段中,获取输出文件的 BucketLocationObject

    2. 使用 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 包含 ExpiresOSSAccessKeyIdSignature 参数,可通过外网直接访问并播放转码后的输出文件。预签名 URL 到达 Expires 指定的过期时间后失效,需重新生成。

    3. 将生成的预签名 URL 通过 HTTP 回调传递给下游业务服务。

  6. 通过预签名URL或输出文件URL播放视频