详情页标题前

腾讯云云函数(SCF)SCF + VOD 实现接收事件通知-云淘科技

详情页1

使用须知

Demo 功能介绍

本文以一个视频的上传、转码流程为例,向开发者展示云点播(VOD)事件通知机制 的使用方法。

架构和流程

Demo 基于云函数(SCF) 搭建了一个 HTTP 服务,用于接收来自 VOD 的事件通知请求。该服务通过对 NewFileUpload(视频上传完成事件通知)和 ProcedureStateChanged(任务流状态变更)的处理,实现发起视频转码和获取转码结果。系统主要涉及四个组成部分:控制台、API 网关、云函数和云点播,其中 API 网关和云函数即是本 Demo 的部署对象,如下图所示:

腾讯云云函数(SCF)SCF + VOD 实现接收事件通知-云淘科技


具体业务流程为:1. 在控制台上传一个视频到 VOD。2. VOD 后台发起 NewFileUpload 事件通知请求给 Demo。3. Demo 解析事件通知内容,调用 VOD 的 ProcessMedia 接口对刚上传的视频发起转码,使用的转码模板为 系统预置模板 100010和100020。4. VOD 完成转码任务后,发起 ProcedureStateChanged 事件通知请求给 Demo。5. Demo 解析事件通知内容,将转码输出文件的 URL 打印到 SCF 日志中。说明Demo 中的 SCF 代码使用 Python3.6 进行开发,此外 SCF 还支持 Python2.7、Node.js、Golang、PHP 和 Java 等多种编程语言,开发者可以根据情况自由选择,具体请参考 SCF 开发指南。

费用

本文提供的云点播事件通知接收服务 Demo 是免费开源的,但在搭建和使用的过程中可能会产生以下费用:购买腾讯云云服务器(CVM)用于执行服务部署脚本,详见 CVM 计费。使用 SCF 提供签名派发服务,详见 SCF 计费 和 SCF 免费额度。使用腾讯云 API 网关为 SCF 提供外网接口,详见 API 网关计费。消耗 VOD 存储用于存储上传的视频,详见 存储计费 和 存储资源包。消耗 VOD 转码时长用于对视频进行转码,详见 转码计费 和 转码资源包。

避免影响生产环境

事件通知接收服务 Demo 的业务逻辑使用到 VOD 事件通知机制,因此部署过程中需要开发者配置事件通知地址。如果该账号已有基于 VOD 的生产环境,那么变更事件通知地址可能造成业务异常。操作前请务必确认不会影响生产环境,如果您无法确定,请更换一个全新账号来部署 Demo

快速部署事件通知接收服务

步骤1:准备腾讯云 CVM

部署脚本需要运行在一台腾讯云 CVM 上,要求如下:地域:任意。机型:官网最低配置(1核1GB)即可。公网:需要拥有公网 IP,带宽1Mbps或以上。操作系统:官网公共镜像Ubuntu Server 16.04.1 LTS 64位Ubuntu Server 18.04.1 LTS 64位。购买 CVM 的方法请参见 操作指南 – 创建实例。重装系统的方法请参见 操作指南 – 重装系统。注意事件通知接收服务 Demo 本身并不依赖于 CVM,仅使用 CVM 来执行部署脚本。如果您没有符合上述条件的腾讯云 CVM,也可以在其它带外网的 Linux(如 CentOS、Debian 等)或 Mac 机器上执行部署脚本,但需根据操作系统的区别修改脚本中的个别命令,具体修改方式请开发者自行搜索。

步骤2:开通云点播

请参考 快速入门 – 步骤1 开通云点播服务。

步骤3:获取 API 密钥和 APPID

事件通知接收服务 Demo 的部署和运行过程需要使用到开发者的 API 密钥(即 SecretId 和 SecretKey)和 APPID。如果还未创建过密钥,请参见 创建密钥文档 生成新的 API 密钥;如果已创建过密钥,请参见 查看密钥文档 获取 API 密钥。在控制台 账号信息 页面可以查看 APPID,如下图所示:

腾讯云云函数(SCF)SCF + VOD 实现接收事件通知-云淘科技



步骤4:部署事件通知接收服务

登录 步骤1准备的 CVM(登录方法详见 操作指南 – 登录 Linux),在远程终端输入以下命令并运行:

ubuntu@VM-69-2-ubuntu:~$ export SECRET_ID=AKxxxxxxxxxxxxxxxxxxxxxxx; export SECRET_KEY=xxxxxxxxxxxxxxxxxxxxx;export APPID=125xxxxxxx;git clone https://github.com/tencentyun/vod-server-demo.git ~/vod-server-demo; bash ~/vod-server-demo/installer/callback_scf.sh

说明请将命令中的 SECRET_ID、SECRET_KEY 和 APPID 赋值为 步骤3 中获取到的内容。该命令将从 Github 下载 Demo 源码并自动执行安装脚本。安装过程需几分钟(具体取决于 CVM 网络状况),期间远程终端会打印如下示例的信息:

[2020-06-05 17:16:08]开始检查npm。[2020-06-05 17:16:12]npm 安装成功。[2020-06-05 17:16:12]开始安装 ServerLess。[2020-06-05 17:16:13]serverless 安装成功。[2020-06-05 17:16:14]开始部署云点播事件通知接收服务。[2020-06-05 17:16:24]云点播事件通知接收服务部署完成。[2020-06-05 17:16:26]服务地址:https://service-xxxxxxxx-125xxxxxxx.gz.apigw.tencentcs.com/release/callback

复制输出日志中的事件通知接收服务地址(示例中的https://service-xxxxxxxx-125xxxxxxx.gz.apigw.tencentcs.com/release/callback)。注意如果输出日志中出现如下所示的警告,一般是由于 CVM 无法立即解析刚部署好的服务域名,可尝试忽略该警告。

[2020-04-25 17:18:44]警告:事件通知接收服务测试不通过。

步骤5:配置事件通知地址

如 避免影响生产环境 一节所述,操作之前请先确认您的线上业务不依赖于 VOD 事件通知。登录 云点播控制台,单击设置,回调模式选择普通回调,回调 URL 填写 步骤4 中获得的事件通知接收服务地址,回调事件全部勾选,然后单击确定。如下图所示:

腾讯云云函数(SCF)SCF + VOD 实现接收事件通知-云淘科技

注意如果您在控制台同时看到两个回调 URL 设置(2.0版本格式和3.0版本格式),请填写3.0版本。如下图所示:

腾讯云云函数(SCF)SCF + VOD 实现接收事件通知-云淘科技



步骤6:测试 Demo

按照 上传视频 – 本地上传步骤 的说明,上传一个测试视频到云点播,注意上传过程选择默认的只上传,暂不进行视频处理。上传完成后,在已上传标签页可以看到该视频的状态为处理中,说明 Demo 接收到了 NewFileUpload 事件通知并发起了转码请求。

腾讯云云函数(SCF)SCF + VOD 实现接收事件通知-云淘科技

等待视频处理完成(状态变为“正常”)后,单击快捷查看,在页面右侧可以看到该视频有两个转码视频。如下图所示:

腾讯云云函数(SCF)SCF + VOD 实现接收事件通知-云淘科技

登录 SCF 控制台日志页面 查看 SCF 日志记录,在最新的一条日志中,可以看到两个转码文件的 URL 已经打印出来,在实际应用场景中,开发者可以通过 SCF 将 URL 记录在自己的数据库,或者通过其它渠道发布给观众。

腾讯云云函数(SCF)SCF + VOD 实现接收事件通知-云淘科技

说明SCF 日志可能会有些许延迟,如果在页面上没有看到日志,请耐心等待一两分钟,然后单击【重置】刷新。

系统设计说明

接口协议

事件通知接收云函数通过 API 网关对外提供接口,具体接口协议请参考文档 视频上传完成事件通知 和 任务流状态变更。

事件通知接收服务代码解读

1. main_handler()为入口函数。2. 调用parse_conf_file(),从config.json文件中读取配置信息。配置项说明如下:

字段 数据类型 功能
secret_id String API 密钥
secret_key String API 密钥
region String 云 API 请求地域,对于 VOD 可随意填写
definitions Array of Integer 转码模板
subappid Integer 事件通知是否来自 云点播子应用

3. 针对 NewFileUpload 类型的事件通知,调用deal_new_file_event()解析请求,从中取出新上传视频的 FileId:

        if event_type == "NewFileUpload":            fileid = deal_new_file_event(body)            if fileid is None:                return ERR_RETURN

4. 调用trans_media()发起转码,输出云 API 的回包到 SCF 日志,并回包给 VOD 的事件通知服务:

            rsp = trans_media(configuration, fileid)            if rsp is None:                return ERR_RETURN            print(rsp)

5.trans_media()中,调用云 API SDK 发起 ProcessMedia 请求:

     cred = credential.Credential(conf["secret_id"], conf["secret_key"])     client = vod_client.VodClient(cred, conf["region"])
method = getattr(models, API_NAME + "Request") req = method() req.from_json_string(json.dumps(params))
method = getattr(client, API_NAME) rsp = method(req) return rsp

6. 针对 ProcedureStateChanged 类型的事件通知,调用deal_procedure_event()解析请求,从中取出转码输出视频的 URL 并打印到 SCF 日志:

        elif event_type == "ProcedureStateChanged":            rsp = deal_procedure_event(body)            if rsp is None:                return ERR_RETURN



官网1折活动,限时活动,即将结束,速速收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利。同意关联立享优惠

转转请注明出处:https://www.yunxiaoer.com/150076.html

(0)
上一篇 2023年12月9日 下午1:30
下一篇 2023年12月9日 下午1:31
详情页2

相关推荐

  • 腾讯云CVM服务器在 CVM 上通过 AVX512 加速人工智能应用

    操作场景 腾讯云第六代实例 S6 和第五代实例 S5、M5、C4、IT5、D3 全面采用第二代智能英特尔®至强®可扩展处理器 Cascade Lake。提供了更多的指令集和特性,可用于加速人工智能的应用,同时集成的大量硬件增强技术,其中 AVX-512(高级矢量扩展)能够为 AI 推理过程提供强劲的并行计算能力,使用户获得更好的深度学习效果。本文以 S5、M…

    2023年12月9日
  • 腾讯云对象存储查询文档预览开通状态

    简介 本文档提供关于查询文档预览开通状态的 API 概览以及 SDK 示例代码。 API 说明 查询文档预览开通状态 用于查询存储桶是否已开通文档预览功能 查询文档预览开通状态 功能说明 DescribeDocProcessBuckets 接口用于查询存储桶是否已开通文档预览功能。 方法原型 func (s *CIService) DescribeDocPr…

    腾讯云 2023年12月9日
  • 腾讯云轻量应用服务器修改账号备注云小二

    您可以通过备注账号信息,实现对账号资源的分配和管理,本文为您介绍如何通过控制台修改数据库账号的备注信息。 操作步骤 1. 登录 轻量数据库服务控制台。2. 在数据库列表找到目标数据库,单击数据库进入管理页。3. 选择账号管理页,在账号列表找到目标账号,在其操作列单击更多 > 修改备注。 说明:您也可以在账号列表,在对应账号的备注字段下,单击 图标进…

    2023年12月9日
  • 腾讯云对象存储本地数据备份

    简介 本文主要为用户概括介绍通过哪些方式可以将本地数据进行备份上云,腾讯云对象存储(Cloud Object Storage,COS)为用户提供了以下三种备份方式,方便用户将本地的数据备份至 COS 存储桶中:COSBrowser 的文件同步备份COS Migration 线上迁移备份CDM 线下迁移备份 文件同步备份 COSBrowser 是腾讯云对象存储…

    2023年12月9日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 腾讯云对象存储GET Bucket lifecycle

    功能描述 GET Bucket lifecycle 用于查询 Bucket 的生命周期配置。如果该 Bucket 没有配置生命周期规则会返回 NoSuchLifecycleConfiguration。 授权说明 授权策略中 action 设置为 cos:GetBucketLifecycle 。查看所有 action。 请求 请求示例 GET /?lifec…

    腾讯云 2023年12月9日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。