详情页标题前

腾讯云Serverless应用中心部署全景录制-同尘科技

详情页1

使用场景

快速生成回放文件

直播回放可以将优质资源的价值进行放大,降低优质资源的成本,从而提升收益,通过全景录制功能可以在用户的视角将上课的内容实时录制下来,课程结束之后可以根据 Serverless 庞大的算力池快速转码,形成录制文件,实时生成回放。

精彩瞬间

家长很少有时间全程观看孩子的上课视频,通过精彩瞬间可以将孩子上课过程精彩表现呈现给家长,提升家长对课程的认知度和认可感,针对上课过程中录制的文件,可以使用 H5 平台将上课的精彩内容截取下来,然后采取全景录制生成 mp4 文件,通过 CDN 快速分发,形成孩子上课过程的精彩集锦。

文件合成

常规的文件合成需要转码,对于算力的消耗较大,将视频、声音、图片等,在一个前端页面进行合成,进行布局调整,采取全景录制进行录制,多路解码,一路编码,快速生成视频文件,最大程度使用算力资源。

架构原理

腾讯云自研的全景录制,主打所见即所得的录制理念,只需要用户提供一个可供访问的公网链接,采取 Chrome 进行页面渲染录制,ffmpeg 转码,同时直接上传到 COS,实时生成录制文件。结合直播、点播、 TRTC 等腾讯云产品,提供教育,游戏,互娱等一站式数据解决方案。

腾讯云Serverless应用中心部署全景录制-同尘科技



应用优势

更低成本
通过 Chrome 完成多路解码,一路解码,算力消耗降低,与传统录制方案相比,成本可以降低60%以上。高度还原
客户端上课过程中所有的特效等外部信息都可以捕捉到,达到100%实现课堂实际效果。 自由切换
录制过程中可以灵活调整浏览器布局,灵活操作和切换老师,学生等视角。超高并发
云函数计算实例支持快速启动,高并发承载能力稳定,轻松面对突发的业务峰值。即刻出片
用户直播结束之后可以直接拿到回放,不需要进行复杂的合成工作,省时高效。

应用资源

全景录制应用部署后,将为您创建以下资源:云函数 : 获取外部链接数据,通过全景录制实时进行录制。CLS 日志 :处理过程的日志会存储在日志服务 CLS 中,可能会产生一定计费,详情请参见 CLS 计费规则。API 网关 :通过 API 网关触发器进行事件触发。

前提条件

1. 配置部署账号权限。参考 账号和权限配置。2. 配置 运行角色 权限。3. 全景录制需要和其他服务关联使用,需要添加以下策略:QcloudRedisFullAccess、QcloudVPCFullAccess、QcloudCFSFullAcces、QcloudSCFFullAccess、QcloudCOSFullAccess、QcloudAccessForScfRole 权限。详情请参见 策略绑定。

操作步骤

创建依赖资源

函数创建的过程中,需要依赖以下相关组件,请提前创建。具体创建流程请参见 VPC 创建、CFS 创建、COS 创建、Redis 创建。

创建全景录制应用

1. 登录 Serverless 控制台,选择左侧导航栏中的 Serverless 应用。2. 在 “Serverless 应用” 页面,单击新建应用。3. 在新建应用页面,根据页面相关信息提示进行配置。创建方式:选择应用市场模糊搜索:输入“全景”进行搜索,选择全景录制。如下图所示:

腾讯云Serverless应用中心部署全景录制-同尘科技


单击模板中的查看详情,即可在弹出的“模板详情”窗口中查看相关信息,支持下载操作。4. 单击下一步,根据页面相关信息提示进行配置。如下图所示:

腾讯云Serverless应用中心部署全景录制-同尘科技

应用名:例如,“record-app”。地域:例如,“上海”。中间结果存储:录制过程临时文件存放位置,可以根据自己需求选择 COS 或者 CFS。目标存储:录制结果的最终存放位置,可以根据需要选择 VOD 或者 COS。文件系统:按需选择即可。Redis:按需选择即可。5. 单击完成即可完成应用创建、函数创建以及 API 网关触发器创建。
如需根据业务场景修改函数配置,可通过 Serverless 应用 > 资源列表 > 函数详情 进行修改。如下图所示:

腾讯云Serverless应用中心部署全景录制-同尘科技

说明录制应用如需要依赖云函数长时运行能力,可参见 异步执行。为避免请求超时,API 网关触发器的后端超时建议设置较大数值。或采取预置,具体请参考 预置说明。

接口使用说明

使用前提

准备一个可以通过 URL 访问的 WEB 页面作为录制内容来源,此页面需兼容 Chrome。用于录制的页面需要自行处理可能存在的登录态或者鉴权。用于录制的页面如果需要播放多媒体,需要自行处理多媒体的播放、跳转、停止等操作。用于录制的页面需要在指定的宽高内完整的显示所有内容,不能有滚动条,因为 WEB 全景录制只能录制浏览器窗口的可见区域,超出可见区的内容不会被录制下来。

接口请求路径

请求URL请求方式接口鉴权方式1. 登录 Serverless 控制台,选择左侧导航栏中的 Serverless 应用。2. 在 Serverless 应用列表页,单击应用名称。3. 在应用详情页,获取触发器访问入口。如下图所示:

腾讯云Serverless应用中心部署全景录制-同尘科技

POST
Content-Type: application/json全景录制服务接口由云函数实现,采用了 API 网关触发器方式对外提供服务,鉴权采用应用认证方式(ApiAppKey 和 ApiAppSecret),详情请参见 应用鉴权。

开始录制接口

通过此接口可以发起全景录制,在接口参数中指定录制 URL,录制分辨率,录制结果回调地址等参数。请求Body参数说明请求Body示例返回参数说明返回参数示例

参数 类型 必填 说明
Action string 请求操作类型,开始录制为 Start
Data object 请求协议参数
RecordURL string 需要录制的 WEB 页面访问 URL,需要 Chrome 浏览器能够访问。
ManualStart bool 创建的录制任务是否需要等待页面主动调用 window.startRecord 方法触发开始录制,默认为 false,录制任务会自动开始录制,当值被设置为 true 时,录制函数加载页面后,不会自动开始录制,而是等待页面主动调用 window.startRecord 方法才会触发开始录制
Width number 录制画面宽度,默认为1280,合法取值范围 [0, 2560]
Height number 录制画面高度,默认为720,合法取值范围 [0, 2560]
CallbackURL string 录制结果通知回调地址
MaxDurationLimit int 录制最大时长限制, 单位s,合法取值范围 [0, 36000],默认21600s(6小时),超过6小时需要配置永久密钥
StorageType string 录制过程中中间态 webm 文件的存储位置,可选参数为cos ,不填写默认为cfs。(如果环境变量配置了COS_BUCKET_RAW这个参数,会写在这个桶里面,不配置会写在目标存储桶的 raw 路径下)
Output object 请求协议参数
Cos object 请求协议参数
Domain string 录制文件回放域名,不设置为默认源站域名
Bucket string 录制文件存放空间,不设置默认为创建函数时设置的存储空间
Region string 录制文件存放区域,默认为存储空间所在区域
TargetDir string 录制文件存放路径,不设置默认为 Taskid
TargetName string 录制文件名称,不设置为结束时间戳
Vod object VOD配置参数
MediaInfo object VOD配置媒体信息
MediaName string 媒体名称
ExpireTime Timestamp ISO8601 媒体文件过期时间,格式按照 ISO 8601 标准表示,详见 ISO 日期格式
StorageRegion string 指定上传园区,仅适用于对上传地域有特殊需求的用户
ClassId Integer 分类 ID,用于对媒体进行分类管理,可通过 创建分类 接口,创建分类,获得分类 ID
SourceContext string 来源上下文,用于透传用户请求信息,VOD的上传完成回调 将返回该字段值,最长 250 个字符
ProcedureInfo object 任务流信息
Procedure string 媒体后续任务处理操作,即完成媒体上传后,可自动发起任务流操作。参数值为任务流模板名,云点播支持 创建模板 并为模板命名。
SessionContext string 会话上下文,用于透传用户请求信息,当指定 Procedure 参数后,任务流状态变更回调 将返回该字段值,最长 1000 个字符。
SubAppId string 点播 子应用 ID。如果要访问子应用中的资源,则将该字段填写为子应用 ID;否则无需填写该字段
Video object 请求协议参数
Muxer string 录制文件格式,可选 hls、mp4,不写默认为 mp4
EncryptKey string hls加密公钥,不设置默认不加密
AuthUrl string 解密私钥地址,设置公钥的情况下必填参数
{    "Action": "Start",    "Data": {        "RecordURL": "https://web-record-12596******.cos.ap-chengdu.myqcloud.com/test/ponyo.mp4",         "Width": 1280,        "Height": 720,        "CallbackURL": "http://xxx/webrecord/callback",        "MaxDurationLimit": 21600,        "Output":{            "Cos":{                "Domain":"abc.xxx.com",                 "Bucket":"webrecord-xxx",                  "Region":"ap-shanghai",                 "TargetDir":"11234/",                 "TargetName":"record-file-name.mp4"          },         "Vod": {          "MediaInfo": {                "MediaName": "test",                "ExpireTime": "2023-10-01T10:00:00Z",                "StorageRegion": "ap-shanghai",                "ClassId": 1                },        "ProcedureInfo": {                "Procedure": "",                "SessionContext": ""                },        "SubAppId": 1500007120            },     "Video": {        "Muxer": "hls",            "EncryptKey": "21834cca41778803e1afba3f41******",            "AuthUrl": "https://hls-web-record-125******.cos.ap-shanghai.myqcloud.com/m3u8-encrypt/enc.key"            }         }        }}
参数 类型 必填 说明
ErrorCode string 错误类型,只有请求出错的时候才会返回此字段
ErrorMessage string 错误说明,只有请求出错的时候才会返回此字段
TaskID string 录制任务 ID,只有开始录制成功的时候才会返回此字段
RequestID string 请求 ID
// 成功返回{    "TaskID": "d1806f20-25b8-4c30-8176-c0832b******",    "RequestID": "95941e2c85898384a95b81c2a5******"}
// 失败返回{ "ErrorCode": "InvalidParam", "ErrorMessage": "RecordURL missing", "RequestID": "95941e2c85898384a95b81c2a5******"}

暂停录制接口

使用暂停录制接口可以将已经开始录制的任务暂时停止录制。请求Body参数说明请求Body示例返回参数说明返回参数示例

参数 类型 必填 说明
Action string 请求操作类型,暂停录制为 Pause
Data object 请求协议参数
Data.TaskID string 需要暂停录制的录制任务 ID,录制任务 ID 可以在开始录制的接口返回参数中获取到
{    "Action": "Pause",     "Data": {        "TaskID": "0f7d9522-a1a3-4517-b5ad-7a6eca******"     }}
参数 类型 必填 说明
ErrorCode string 错误类型,只有请求出错的时候才会返回此字段
ErrorMessage string 错误说明,只有请求出错的时候才会返回此字段
TaskID string 录制任务 ID,只有开始录制成功的时候才会返回此字段
RequestID string 请求 ID
// 成功返回{    "TaskID": "d1806f20-25b8-4c30-8176-c0832b******",    "RequestID": "95941e2c85898384a95b81c2a5******"}
// 失败返回{ "ErrorCode": "InvalidParam", "ErrorMessage": "TaskID missing", "RequestID": "95941e2c85898384a95b81c2a5******"}

恢复录制接口

使用恢复录制接口可以将已暂停的录制任务重新开始录制。重新开始录制的视频内容将直接追加在暂停之前的内容后面,不会产生视频分段。请求Body参数说明请求Body示例返回参数说明返回参数示例

参数 类型 必填 说明
Action string 请求操作类型,恢复暂停录制为 Resume
Data object 请求协议参数
Data.TaskID string 需要恢复录制的录制任务 ID,录制任务 ID 可以在开始录制的接口返回参数中获取到
{    "Action": "Resume",     "Data": {        "TaskID": "0f7d9522-a1a3-4517-b5ad-7a6eca******"     }}
参数 类型 必填 说明
ErrorCode string 错误类型,只有请求出错的时候才会返回此字段
ErrorMessage string 错误说明,只有请求出错的时候才会返回此字段
TaskID string 录制任务 ID,只有开始录制成功的时候才会返回此字段
RequestID string 请求 ID
// 成功返回{    "TaskID": "d1806f20-25b8-4c30-8176-c0832b******",    "RequestID": "95941e2c85898384a95b81c2a5******"}
// 失败返回{ "ErrorCode": "InvalidParam", "ErrorMessage": "TaskID missing", "RequestID": "95941e2c85898384a95b81c2a5******"}

刷新录制页面

使用刷新录制接口发起刷新录制页面请求。请求Body参数说明请求Body示例返回参数说明返回参数示例

参数 类型 必填 说明
Action string 请求操作类型,刷新录制为 Refresh
Data object 请求协议参数
Data.TaskID string 需要刷新的录制任务 ID,录制任务 ID 可以在开始录制的接口返回参数中获取到
{    "Action": "Refresh",     "Data": {        "TaskID": "0f7d9522-a1a3-4517-b5ad-7a6eca******"     }}
参数 类型 必填 说明
ErrorCode string 错误类型,只有请求出错的时候才会返回此字段
ErrorMessage string 错误说明,只有请求出错的时候才会返回此字段
TaskID string 录制任务 ID,只有开始录制成功的时候才会返回此字段
RequestID string 请求 ID
// 成功返回{    "TaskID": "d1806f20-25b8-4c30-8176-c0832b******",    "RequestID": "95941e2c85898384a95b81c2a5******"}
// 失败返回{ "ErrorCode": "InvalidParam", "ErrorMessage": "TaskID missing", "RequestID": "95941e2c85898384a95b81c2a5******"}

停止录制接口

使用停止录制接口发起结束录制请求。请求Body参数说明请求Body示例返回参数说明返回参数示例

参数 类型 必填 说明
Action string 请求操作类型,结束录制为 Stop
Data object 请求协议参数
Data.TaskID string 需要取消的录制任务 ID,录制任务 ID 可以在开始录制的接口返回参数中获取到
{    "Action": "Stop",     "Data": {        "TaskID": "0f7d9522-a1a3-4517-b5ad-7a6eca******"     }}
参数 类型 必填 说明
ErrorCode string 错误类型,只有请求出错的时候才会返回此字段
ErrorMessage string 错误说明,只有请求出错的时候才会返回此字段
TaskID string 录制任务 ID,只有开始录制成功的时候才会返回此字段
RequestID string 请求 ID
// 成功返回{    "TaskID": "d1806f20-25b8-4c30-8176-c0832b******",    "RequestID": "95941e2c85898384a95b81c2a5******"}
// 失败返回{ "ErrorCode": "InvalidParam", "ErrorMessage": "TaskID missing", "RequestID": "95941e2c85898384a95b81c2a5******"}

查询录制任务信息接口

使用查询任务信息接口发起查询录制任务信息请求。请求Body参数说明请求Body示例返回参数说明返回参数示例

参数 类型 必填 说明
Action string 请求操作类型,查询录制任务信息为 Describe
Data object 请求协议参数
Data.TaskID string 需要查询的录制任务 ID,录制任务 ID 可以在开始录制的接口返回参数中获取到
{    "Action": "Describe",     "Data": {        "TaskID": "0f7d9522-a1a3-4517-b5ad-7a6ec******"    }}
参数 类型 必填 说明
ErrorCode string 错误类型,只有请求出错的时候才会返回
ErrorMessage string 错误说明,只有请求出错的时候才会返回
TaskID string 录制任务 ID,只有开始录制成功的时候才会返回
RequestID string 请求 ID
Status string 录制任务当前状态,可能的取值及其含义如下:
normal — 录制任务创建成功,但录制任务还没有开始录制
recording — 录制任务正在录制中
paused — 录制任务被暂停
canceled — 录制任务已经被取消
transcode — 录制任务正在对录制视频进行拼接、转码等操作
upload — 录制任务正在上传录制视频到云存储
callback — 录制任务正在把录制结果通过发起录制时配置的回调地址进行通知
finished — 录制任务的所有操作已经完成
CreateTime int 录制任务创建时间戳,单位s
StartTime int 录制任务开始录制时间戳,单位s,只有开始录制后才会返回此字段
CancelTime int 录制任务被取消的时间戳,单位s,只有发起过取消录制请求才会返回此字段
StopTime int 录制任务结束录制时间戳,单位s,只有录制任务停止后才会返回此字段
FinishTime int 录制任务完成录制时间戳,单位s,只有录制任务完成所有录制处理后才会返回此字段
Result object 录制任务结果
Result.ErrorCode string 录制任务出错类型,只有录制任务执行过程中出现错误时才会返回此字段
Result.ErrorMessage string 录制任务出错信息,只有录制任务执行过程中出现错误时才会返回此字段
Result.Videos []object 录制视频文件列表
Result.Videos.Filename string 视频文件名称
Result.Videos.FileSize int 视频文件大小
Result.Videos.FileDuration string 视频文件长度
Result.Videos.FileId string 如果目标为 VOD,该参数为 VOD 中媒体文件的唯一标识
Result.Videos.FileURL string 视频文件链接
// 成功返回{    "TaskID": "7a035551-d9d6-494e-b604-fa787b******",    "RequestID": "95941e2c85898384a95b81c2a5******",    "CreateTime": 1620982173,    "Status": "finished",    "StartTime": 1620982177,    "CancelTime": 1620982203,    "StopTime": 1620982203,    "FinishTime": 1620982210,    "Result": {        "Videos": [            {                "Filename": "1621406865789.mp4",                "FileSize": 169780,           "FileDuration": 9,            "FileId": 31235664578998,                "FileURL": "http://web-record-125******.cos.ap-chengdu.myqcloud.com/4d0f336d-4de4-4fc8-b505-d1f790974909/162140******.mp4"            }        ]    }}
// 请求出错返回{ "ErrorCode": "InvalidParam", "ErrorMessage": "TaskID missing", "RequestID": "95941e2c85898384a95b81c2a5******"}
// 录制任务出错返回{ "TaskID": "7a035551-d9d6-494e-b604-fa787b******", "RequestID": "95941e2c85898384a95b81c2a5******", "CreateTime": 1620982173, "Status": "finished", "StartTime": 1620982177, "CancelTime": 1620982203, "StopTime": 1620982203, "FinishTime": 1620982210, "Result": { "ErrorCode": "CallbackFailed", "ErrorMessage": "Callback failed even all tries. last error message:ECONNABORTED:timeout of 2000ms exceeded" }}



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

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

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

相关推荐

  • 腾讯云容器镜像服务产品优势同尘

    云上独享 无需自行搭建及运维,即可快速创建仓库及推送拉取容器镜像。其中,容器镜像服务企业版实例均具有独立的服务后端及后端存储,相较于 DockerHub 等共享镜像托管平台,企业版 Registry 实例完全由单个租户独享,无需担心其它用户的影响及使用限制,可保障客户的数据安全及隐私性。 全球同步 容器镜像服务支持全球多个地域,企业版实例可通过设定自定义规则…

    腾讯云 2023年12月9日
  • 腾讯云本地专用集群购买指南云淘

    腾讯云本地专用集群(Cloud Dedicated Cluster,CDC)目前处于邀测阶段,如果您的业务场景需要使用该产品,请提交 试用申请 。收到您的申请后,我们将进入审核阶段。如通过审核,我们将安排售前工程师与您联系和安排后续测试。注意通过 CDC 试用申请需满足以下条件,请您首先自行核查是否满足:属于企业用户。已具备本地 IDC 机房,且支持第三方机…

    腾讯云 2023年12月9日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 腾讯云对象存储基于 Prometheus 搭建 GooseFS 监控体系

    Goosefs 可以通过配置将指标数据输出到不同的监控系统中,Prometheus 是其中之一。Prometheus 是一个开源的监控框架,目前腾讯云可观测平台已集成了 Prometheus,下文将重点介绍 Goosefs 监控指标,以及将监控指标上报到自建的 Prometheus 和云上 Prometheus 的流程。 准备工作 通过 Prometheus…

    腾讯云 2023年12月9日
  • 腾讯云Serverless应用中心对象存储 COS 组件-同尘科技

    操作场景 对象存储 COS 组件是 serverless-tencent 组件库中的基础组件之一。通过对象存储 COS 组件,可以快速且方便地创建、配置和管理腾讯云的 COS 存储桶。 前提条件 已安装 Node.js。注意2020年9月1日起,Serverless 组件不再支持 Node.js10.0 以下版本,请注意升级。 操作步骤 安装 已经安装 Se…

    腾讯云 2023年12月9日
  • 腾讯云容器服务在 TKE 中使用动态准入控制器同尘科技

    操作场景 动态准入控制器 Webhook 在访问鉴权的过程中可以更改请求对象或完全拒绝该请求,其调用 Webhook 服务的方式使其独立于集群组件。动态准入控制器具有很大的灵活性,可便捷地进行众多自定义准入控制。下图为动态准入控制在 API 请求调用链的位置,如需了解更多信息,请前往 Kubernetes 官网。 由图可知,动态准入控制分为执行及验证两个阶…

    2023年12月9日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

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

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