tencent cloud

文档反馈

SCF + TRTC 提供一站式全景录制解决方案

最后更新时间:2022-01-23 16:11:23

    使用场景

    快速生成回放文件

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

    精彩瞬间

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

    文件合成

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

    架构原理

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

    应用优势

    • 更低成本
      通过 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. 在新建应用页面,根据页面相关信息提示进行配置。
      • 创建方式:选择应用模板
      • 模糊搜索:输入“全景”进行搜索,选择全景录制
        单击模板中的查看详情,即可在弹出的“模板详情”窗口中查看相关信息,支持下载操作。
    4. 单击下一步,根据页面相关信息提示进行配置。
      • 应用名:例如,“record-app”。
      • 地域:例如,“上海”。
      • 中间结果存储:录制过程临时文件存放位置,可以根据自己需求选择 COS 或者 CFS。
      • 目标存储:录制结果的最终存放位置,可以根据需要选择 VOD 或者 COS。
      • 文件系统:按需选择即可。
      • redis:按需选择即可。
    5. 单击完成即可完成应用创建、函数创建以及 API 网关触发器创建。
      如需根据业务场景修改函数配置,可通过 Serverless 应用 > 资源列表 > 函数详情 进行修改。如下图所示:
      说明
      • 录制应用如需要依赖云函数长时运行能力,可参见 异步执行
      • 为避免请求超时,API 网关触发器的后端超时建议设置较大数值。或采取预置,具体请参考 预置说明

    接口使用说明

    使用前提

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

    接口请求路径

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

    开始录制接口

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

    参数类型必填说明
    Actionstring请求操作类型,开始录制为 Start
    Dataobject请求协议参数
    RecordURLstring需要录制的 WEB 页面访问 URL,需要 Chrome 浏览器能够访问。
    ManualStartbool创建的录制任务是否需要等待页面主动调用 window.startRecord 方法触发开始录制,默认为 false,录制任务会自动开始录制,当值被设置为 true 时,录制函数加载页面后,不会自动开始录制,而是等待页面主动调用 window.startRecord 方法才会触发开始录制
    Widthnumber录制画面宽度,默认为1280,合法取值范围 [0, 2560]
    Heightnumber录制画面高度,默认为720,合法取值范围 [0, 2560]
    CallbackURLstring录制结果通知回调地址
    MaxDurationLimitint录制最大时长限制, 单位s,合法取值范围 [0, 36000],默认21600s(6小时),超过6小时需要配置永久密钥
    StorageTypestring录制过程中中间态 webm 文件的存储位置,可选参数为cos ,不填写默认为cfs。(如果环境变量配置了COS_BUCKET_RAW这个参数,会写在这个桶里面,不配置会写在目标存储桶的 raw 路径下)
    Outputobject请求协议参数
    Cosobject请求协议参数
    Domainstring录制文件回放域名,不设置为默认源站域名
    Bucketstring录制文件存放空间,不设置默认为创建函数时设置的存储空间
    Regionstring录制文件存放区域,默认为存储空间所在区域
    TargetDirstring录制文件存放路径,不设置默认为 Taskid
    TargetNamestring录制文件名称,不设置为结束时间戳
    VodobjectVOD配置参数
    MediaInfoobjectVOD配置媒体信息
    MediaNamestring媒体名称
    ExpireTimeTimestamp ISO8601媒体文件过期时间,格式按照 ISO 8601 标准表示,详见 ISO 日期格式
    StorageRegionstring指定上传园区,仅适用于对上传地域有特殊需求的用户
    ClassIdInteger分类 ID,用于对媒体进行分类管理,可通过 创建分类 接口,创建分类,获得分类 ID
    SourceContextstring来源上下文,用于透传用户请求信息,VOD的上传完成回调 将返回该字段值,最长 250 个字符
    ProcedureInfoobject任务流信息
    Procedurestring媒体后续任务处理操作,即完成媒体上传后,可自动发起任务流操作。参数值为任务流模板名,云点播支持 创建模版 并为模板命名。
    SessionContextstring会话上下文,用于透传用户请求信息,当指定 Procedure 参数后,任务流状态变更回调 将返回该字段值,最长 1000 个字符。
    SubAppIdstring点播 子应用 ID。如果要访问子应用中的资源,则将该字段填写为子应用 ID;否则无需填写该字段
    Videoobject请求协议参数
    Muxerstring录制文件格式,可选 hls、mp4,不写默认为 mp4
    EncryptKeystringhls加密公钥,不设置默认不加密
    AuthUrlstring解密私钥地址,设置公钥的情况下必填参数

    暂停录制接口

    使用暂停录制接口可以将已经开始录制的任务暂时停止录制。

    参数类型必填说明
    Actionstring请求操作类型,暂停录制为 Pause
    Dataobject请求协议参数
    Data.TaskIDstring需要暂停录制的录制任务 ID,录制任务 ID 可以在开始录制的接口返回参数中获取到

    恢复录制接口

    使用恢复录制接口可以将已暂停的录制任务重新开始录制。重新开始录制的视频内容将直接追加在暂停之前的内容后面,不会产生视频分段。

    参数类型必填说明
    Actionstring请求操作类型,恢复暂停录制为 Resume
    Dataobject请求协议参数
    Data.TaskIDstring需要恢复录制的录制任务 ID,录制任务 ID 可以在开始录制的接口返回参数中获取到

    刷新录制页面

    使用刷新录制接口发起刷新录制页面请求。

    参数类型必填说明
    Actionstring请求操作类型,刷新录制为 Refresh
    Dataobject请求协议参数
    Data.TaskIDstring需要刷新的录制任务 ID,录制任务 ID 可以在开始录制的接口返回参数中获取到

    停止录制接口

    使用停止录制接口发起结束录制请求。

    参数类型必填说明
    Actionstring请求操作类型,结束录制为 Stop
    Dataobject请求协议参数
    Data.TaskIDstring需要取消的录制任务 ID,录制任务 ID 可以在开始录制的接口返回参数中获取到

    查询录制任务信息接口

    使用查询任务信息接口发起查询录制任务信息请求。

    参数类型必填说明
    Actionstring请求操作类型,查询录制任务信息为 Describe
    Dataobject请求协议参数
    Data.TaskIDstring需要查询的录制任务 ID,录制任务 ID 可以在开始录制的接口返回参数中获取到
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持