You need to enable JavaScript to run this app.
导航
组合使用 TOS 和视频点播实现多媒体数据处理
最近更新时间:2023.10.12 16:27:26首次发布时间:2023.10.12 16:24:20

您可以将存储在 TOS 中的视频文件接入到视频点播服务,通过视频点播实现转码、转封装等多媒体数据处理操作。本文介绍如何组合使用 TOS 和视频点播实现多媒体数据处理。

背景信息

视频点播主要提供集媒资上传、媒资管理、多媒体处理、内容加速分发和视频播放功能于一体的音视频服务,帮助您持续提升应用的音视频能力,打造极致视听体验。关于视频点播服务的详细介绍,请参见概述
通过跨服务授权的方式,视频点播可以对存放在 TOS Bucket 中的文件进行多媒体数据处理,包括视频转码、低成本转码、倍速转码、极智超清、音频转码、截图、画质增强、水印贴片操作。经过处理后的视频文件将仍然存储在 TOS Bucket 中,您可以进一步通过火山引擎 CDN 回源到 TOS 对处理后的视频文件进行加速分发。

前提条件

已开通视频点播服务,具体操作,请参见快速入门

注意事项

类别注意事项
地域视频点播当前仅华北2(北京)地域默认支持挂载对象存储 TOS。如果您需要在视频点播的华东2(上海)、华南1(广州)地域挂载对象存储 TOS,请联系我们开通白名单。

挂载 TOS Bucket

  • 2022 年 11 月 01 日之前创建的点播空间不支持挂载 TOS Bucket 。

  • 视频点播不支持重复挂载 TOS Bucket。例如 A Bucket 挂载在视频点播的 A 空间后,不支持重复挂载到其他点播空间。

多媒体处理操作

  • 如果您需要为视频文件添加水印,水印文件需要与视频文件处于同一个 Bucket 中。

  • 组合使用 TOS 和视频点播功能时,暂不支持检测修复、多媒体 AI、智能字幕功能。

在视频点播挂载 TOS

关于在视频点播挂载 TOS 的详细介绍,请参见点播挂载 TOS 说明

  1. 添加对象存储 bucket。

    1. 登录视频点播控制台

    2. 在左侧导航栏,单击空间管理。

    3. 空间管理页面,单击目标空间的进入空间

    4. 在左侧导航栏,选择系统设置 > 上传存储设置

    5. 上传存储设置页面,单击存储设置页签,单击添加对象存储bucket

    6. 添加对象存储bucket 对话框,选择目标 bucket,单击确定

  2. 设置对象存储 bucket 为默认存储。

    1. 上传存储设置页面存储设置页签下,单击目标 bucket 操作列下的设为默认

    2. 在弹出的对话框,单击确定

      设置对象存储 bucket 为默认存储的操作需要一定时间,稍等一段时间后,可以看到对象存储 bucket 右上角显示默认存储的标签。

  3. 验证在视频点播挂载 TOS 是否成功。

    1. 在左侧导航栏,选择媒资管理 > 视频管理

    2. 视频管理页面左上角,单击 DirectUrl模式。
      已上传页签下,可以看到存储在对象存储 bucket 中的文件,说明在视频点播挂载 TOS 成功。

使用视频点播处理视频

方法一:通过视频点播控制台处理视频

  1. 创建工作流模板。

    1. 登录视频点播控制台

    2. 在左侧导航栏,单击空间管理。

    3. 空间管理页面,单击目标空间的进入空间

    4. 在左侧导航栏,选择媒体处理设置 > 工作流模板。

    5. 工作流模板页面,单击新建工作流。

    6. 创建工作流模板页面,输入工作流名称工作流描述,根据业务需求选择工作流任务,详细参数介绍,请参见工作流模板

    7. 工作流设置区域,开启自定义文件路径,在转码后文件路径文本框中设置文件路径。

      您可以设置转码后文件路径{{filePrefix}}{{fileTitle}},视频点播会自动使用源文件的文件前缀和文件名称作为转码后文件的路径。例如源文件路径为 vod/volces.mp4,则转码输出的 m3u8 文件路径为 vod/volces.m3u8。详细介绍,请参见自定义转码后文件路径说明

    8. 单击保存

  2. 使用工作流模板处理视频。

    1. 在左侧导航栏,选择媒资管理 > 视频管理

    2. 视频管理页面左上角,单击 DirectUrl模式。

    3. 已上传页签下,单击目标视频文件操作列下的处理视频

    4. 发起视频处理对话框,选择工作流模板,单击确定

  3. 查看工作流处理结果。

    1. 在左侧导航栏,选择任务管理 > 工作流任务

    2. 工作流任务页面,查看目标工作流状态,如果目标工作流任务状态列显示成功,说明工作流任务处理完成。

  4. 查看经过多媒体处理后的文件。

    1. 在左侧导航栏,选择媒资管理 > 视频管理

    2. 视频管理页面左上角,单击 DirectUrl模式

    3. 已上传页签下,根据自定义的文件路径找到对应文件,该文件即为经过多媒体处理后的最终文件。
      您也可以登录对象存储控制台,根据自定义的文件路径在对应存储桶中找到对应文件,然后可以对文件进行下载、分享、查看详情等操作。

    说明

    如果创建工作流模板时,您没有自定义文件名称,您可以使用获取工作流执行结果的 API 获取 StoreUri 参数值,StoreUri 参数值即为对应工作流处理后的最终文件名称。关于该 API 详细介绍,请参见获取工作流执行结果

方法二:通过视频点播 SDK 处理视频

本文以 Python SDK 为例,介绍如何使用视频点播的 SDK 对视频进行多媒体处理。关于其他服务端 SDK 的详细介绍,请参见服务端 SDK 概览

  1. 创建工作流模板。

    1. 登录视频点播控制台

    2. 在左侧导航栏,单击空间管理。

    3. 空间管理页面,单击目标空间的进入空间

    4. 在左侧导航栏,选择媒体处理设置 > 工作流模板。

    5. 工作流模板页面,单击新建工作流。

    6. 创建工作流模板页面,输入工作流名称工作流描述,根据业务需求选择工作流任务,详细参数介绍,请参见工作流模板

    7. 工作流设置区域,开启自定义文件路径,在转码后文件路径文本框中设置文件路径。

      您可以设置转码后文件路径{{filePrefix}}{{fileTitle}},视频点播会自动使用源文件的文件前缀和文件名称作为转码后文件的路径。例如源文件路径为 vod/volces.mp4,则转码后的 m3u8 格式文件路径为 vod/volces.m3u8。详细介绍,请参见自定义转码后文件路径说明

    8. 单击保存

    9. 工作流模板页面工作流名称/ID 列下,获取目标工作流模板的 ID

  2. 安装和初始化视频点播服务端 SDK。具体操作,请参见安装初始化

  3. 在以下代码中设置 AK、SK、源视频文件名称、Bucket 名称、工作流模板 ID 和回调参数,运行代码,提交工作流任务处理视频。

    说明

    # coding:utf-8
    from __future__ import print_function
    
    from volcengine.vod.VodService import VodService
    from volcengine.vod.models.business.vod_workflow_pb2 import WorkflowParams
    from volcengine.vod.models.request.request_vod_pb2 import VodStartWorkflowRequest
    
    if __name__ == '__main__':
        vod_service = VodService()
        # call below method if you dont set ak and sk in $HOME/.vcloud/config
        # AK 和 SK 为 IAM 账号或 IAM 用户的 API 访问密钥
        vod_service.set_ak('AKLTM2U2Z***')
        vod_service.set_sk('WTJGbE4yS***')
        try:
            req = VodStartWorkflowRequest()
            # 指定源视频文件在 Bucket 中的对象名称
            req.DirectUrl.FileName = 'media.mp4'
            # 指定源视频文件所在的 Bucket 名称
            req.DirectUrl.BucketName = 'demobucket-bj2'
            # 指定工作流模板 ID
            req.TemplateId = 'b6f2298f2e02488b95a0820a69ae0922'
            req.Input.MergeFrom(WorkflowParams())
            req.Priority = 0
            # 指定回调参数
            req.CallbackArgs = 'your callback args'
            resp = vod_service.start_workflow(req)
        except Exception:
            raise
        else:
            print(resp)
            if resp.ResponseMetadata.Error.Code == '':
                print(resp.Result)
            else:
                print(resp.ResponseMetadata.Error)
    

    返回类似如下内容:

    ResponseMetadata {
      RequestId: "20230914165843C4****"
      Action: "StartWorkflow"
      Version: "2020-08-01"
      Service: "vod"
      Region: "cn-north-1"
    }
    Result {
      RunId: "lb:9779234445449*****"
    }
    
    RunId: "lb:9779234445449****"
    

    返回结果中 RunID 参数值即为工作流任务 ID。

  4. 在以下代码中设置工作流任务 ID,运行代码,获取工作流执行结果。

    # coding:utf-8
    from __future__ import print_function
    
    from volcengine.vod.VodService import VodService
    from volcengine.vod.models.request.request_vod_pb2 import VodGetWorkflowResultRequest
    
    if __name__ == '__main__':
        vod_service = VodService()
        # call below method if you dont set ak and sk in $HOME/.vcloud/config
        vod_service.set_ak('AKLTM2U2ZG****')
        vod_service.set_sk('WTJGbE4ySmh****')
        try:
            req = VodGetWorkflowResultRequest()
            # 指定工作流任务ID
            req.RunId = '9779234445449****'
            resp = vod_service.get_workflow_execution_result(req)
        except Exception:
            raise
        else:
            print(resp)
            if resp.ResponseMetadata.Error.Code == '':
                print(resp.Result)
            else:
                print(resp.ResponseMetadata.Error)
    

    返回类似如下内容:

    ResponseMetadata {
      RequestId: "20230914171*****"
      Action: "GetWorkflowExecutionResult"
      Version: "2022-12-01"
      Service: "vod"
      Region: "cn-north-1"
    }
    Result {
      DirectUrl {
        FileName: "media.mp4"
        BucketName: "demobucket-bj2"
      }
      RunId: "lb:9779234445449***"
      SpaceName: "zzytest"
      TemplateId: "b6f2298f2e02****"
      CallbackArgs: "your callback args"
      Status: "0"
      TranscodeInfos {
        FileId: "f63363ab379f****"
        Md5: "03d48b020ea132*****"
        FileType: "Video"
        Format: "HLS"
        Duration: 515.343994140625
        Size: 45747214.0
        StoreUri: "demobucket-bj2/media.mp4-zzy/main.m3u8"
        VideoStreamMeta {
          Codec: "h264"
          Height: 480
          Width: 854
          Duration: 515.3200073242188
          Definition: "480p"
          Bitrate: 482127
          Fps: 25.0
        }
        AudioStreamMeta {
          Codec: "aac"
          Duration: 515.343994140625
          SampleRate: 44100
          Bitrate: 128011
          Quality: "normal"
        }
        CreateTime: "2023-09-14 17:15:43"
        DynamicRange: "SDR"
        TosStorageClass: "STANDARD"
      }
    }
    

    返回结果中 StoreUri 即为本次工作流处理后的文件名称。

  5. 查看经过多媒体处理后的文件。

    1. 视频点播控制台左侧导航栏,选择媒资管理 > 视频管理

    2. 视频管理页面左上角,单击 DirectUrl模式。

    3. 已上传页签下,根据步骤 4 获取的文件名称找到对应文件,该文件即为经过多媒体处理后的最终文件。

      您也可以登录对象存储控制台,根据步骤 4 获取的文件名称在存储桶中找到对应文件,然后对文件进行下载、分享、查看详情等操作。