您可以将存储在 TOS 中的视频文件接入到视频点播服务,通过视频点播实现转码、转封装等多媒体数据处理操作。本文介绍如何组合使用 TOS 和视频点播实现多媒体数据处理。
视频点播主要提供集媒资上传、媒资管理、多媒体处理、内容加速分发和视频播放功能于一体的音视频服务,帮助您持续提升应用的音视频能力,打造极致视听体验。关于视频点播服务的详细介绍,请参见概述。
通过跨服务授权的方式,视频点播可以对存放在 TOS Bucket 中的文件进行多媒体数据处理,包括视频转码、低成本转码、倍速转码、极智超清、音频转码、截图、画质增强、水印贴片操作。经过处理后的视频文件将仍然存储在 TOS Bucket 中,您可以进一步通过火山引擎 CDN 回源到 TOS 对处理后的视频文件进行加速分发。
已开通视频点播服务,具体操作,请参见快速入门。
类别 | 注意事项 |
---|---|
地域 | 视频点播当前仅华北2(北京)地域默认支持挂载对象存储 TOS。如果您需要在视频点播的华东2(上海)、华南1(广州)地域挂载对象存储 TOS,请联系我们开通白名单。 |
挂载 TOS Bucket |
|
多媒体处理操作 |
|
关于在视频点播挂载 TOS 的详细介绍,请参见点播挂载 TOS 说明。
添加对象存储 bucket。
登录视频点播控制台。
在左侧导航栏,单击空间管理。
在空间管理页面,单击目标空间的进入空间。
在左侧导航栏,选择系统设置 > 上传存储设置。
在上传存储设置页面,单击存储设置页签,单击添加对象存储bucket。
在添加对象存储bucket 对话框,选择目标 bucket,单击确定。
设置对象存储 bucket 为默认存储。
在上传存储设置页面存储设置页签下,单击目标 bucket 操作列下的设为默认。
在弹出的对话框,单击确定。
设置对象存储 bucket 为默认存储的操作需要一定时间,稍等一段时间后,可以看到对象存储 bucket 右上角显示默认存储的标签。
验证在视频点播挂载 TOS 是否成功。
在左侧导航栏,选择媒资管理 > 视频管理。
在视频管理页面左上角,单击 DirectUrl模式。
在已上传页签下,可以看到存储在对象存储 bucket 中的文件,说明在视频点播挂载 TOS 成功。
创建工作流模板。
登录视频点播控制台。
在左侧导航栏,单击空间管理。
在空间管理页面,单击目标空间的进入空间。
在左侧导航栏,选择媒体处理设置 > 工作流模板。
在工作流模板页面,单击新建工作流。
在创建工作流模板页面,输入工作流名称、工作流描述,根据业务需求选择工作流任务,详细参数介绍,请参见工作流模板。
在工作流设置区域,开启自定义文件路径,在转码后文件路径文本框中设置文件路径。
您可以设置转码后文件路径为 {{filePrefix}}{{fileTitle}}
,视频点播会自动使用源文件的文件前缀和文件名称作为转码后文件的路径。例如源文件路径为 vod/volces.mp4
,则转码输出的 m3u8 文件路径为 vod/volces.m3u8
。详细介绍,请参见自定义转码后文件路径说明。
单击保存。
使用工作流模板处理视频。
在左侧导航栏,选择媒资管理 > 视频管理。
在视频管理页面左上角,单击 DirectUrl模式。
在已上传页签下,单击目标视频文件操作列下的处理视频。
在发起视频处理对话框,选择工作流模板,单击确定。
查看工作流处理结果。
在左侧导航栏,选择任务管理 > 工作流任务。
在工作流任务页面,查看目标工作流状态,如果目标工作流任务状态列显示成功,说明工作流任务处理完成。
查看经过多媒体处理后的文件。
在左侧导航栏,选择媒资管理 > 视频管理。
在视频管理页面左上角,单击 DirectUrl模式。
在已上传页签下,根据自定义的文件路径找到对应文件,该文件即为经过多媒体处理后的最终文件。
您也可以登录对象存储控制台,根据自定义的文件路径在对应存储桶中找到对应文件,然后可以对文件进行下载、分享、查看详情等操作。
说明
如果创建工作流模板时,您没有自定义文件名称,您可以使用获取工作流执行结果的 API 获取 StoreUri
参数值,StoreUri
参数值即为对应工作流处理后的最终文件名称。关于该 API 详细介绍,请参见获取工作流执行结果。
本文以 Python SDK 为例,介绍如何使用视频点播的 SDK 对视频进行多媒体处理。关于其他服务端 SDK 的详细介绍,请参见服务端 SDK 概览。
创建工作流模板。
登录视频点播控制台。
在左侧导航栏,单击空间管理。
在空间管理页面,单击目标空间的进入空间。
在左侧导航栏,选择媒体处理设置 > 工作流模板。
在工作流模板页面,单击新建工作流。
在创建工作流模板页面,输入工作流名称、工作流描述,根据业务需求选择工作流任务,详细参数介绍,请参见工作流模板。
在工作流设置区域,开启自定义文件路径,在转码后文件路径文本框中设置文件路径。
您可以设置转码后文件路径为 {{filePrefix}}{{fileTitle}}
,视频点播会自动使用源文件的文件前缀和文件名称作为转码后文件的路径。例如源文件路径为 vod/volces.mp4
,则转码后的 m3u8 格式文件路径为 vod/volces.m3u8
。详细介绍,请参见自定义转码后文件路径说明。
单击保存。
在工作流模板页面工作流名称/ID 列下,获取目标工作流模板的 ID
在以下代码中设置 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。
在以下代码中设置工作流任务 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
即为本次工作流处理后的文件名称。
查看经过多媒体处理后的文件。