数据流录制
  • iOS
  • Android : Java
  • Web
  • 产品简介
    • 概述
    • 发布日志
  • 下载
    • SDK 下载
    • 体验 App
  • 快速开始
    • 跑通示例源码
    • 录制实现流程
    • 回放 SDK 集成
    • 回放实现流程
  • 基础功能
  • 客户端 API
  • 服务端 API v2
  • 常见错误码
  • 常见问题
  • 文档中心
  • 数据流录制
  • 基础功能
  • 设置回放布局

设置回放布局

更新时间:2022-05-05 19:34

1 功能描述

数据流录制服务在录制时,可以通过服务端接口 UpdateLayout,记录用户在回放时想要使用的布局方式。回放时每路音视频流与白板在画面中的显示位置依赖于设置的布局方式,如果原视频的宽高比与回放布局中的宽高比不一致,可能出现裁剪或压缩。

数据流录制支持的布局方式如下:

  • 自定义布局:灵活设置每个画面的位置和大小,最多可支持 5 个画面。
  • 平分布局:所有画面平铺显示,根据画面的数量自动调整每个画面的大小和位置,每个画面的大小一致,最多可支持 5 个画面。
  • 水平布局:显示一个大画面和若干个小画面,小画面在画布上方从左到右排列,根据画面的数量自动调整每个画面的大小和位置,每个小画面的大小一致,最多可支持 5 个画面。
  • 垂直布局:显示一个大画面和若干个小画面,小画面在画布右侧从上到下排列,根据画面的数量自动调整每个画面的大小和位置,每个小画面的大小一致,最多可支持 5 个画面。
  • 悬浮布局:显示一个大画面和若干个小画面,大画面铺满整个画布,小画面在画布下方从右到左排列,每个小画面的大小一致,悬浮在大画面上方,最多可支持 5 个画面。

如果某条流只有音频数据,依然会占据一个画面。

2 实现方法

在调用 StartDataFlowRecord 方法时,通过设置 “MixMode” 参数选择布局方式。在录制过程中可以通过调用 UpdateLayout 方法更改布局方式。

本节将详细介绍各种布局方式,示例图片中的数字代表流加入房间的先后顺序。

2.1 平分布局

  • 在以下平分布局示例中,如果房间内的流数不足,则剩余位置会空置显示背景色。
  • 如果在开始录制的请求中设置了录制白板并且房间内有白板时,白板画面会始终占据 1 号画面。
  • 如果实际视频流的宽高比与画面的宽高比不一致,原视频会裁剪以适配画面的大小。

实际布局效果如下所示:

2.2 水平布局

水平布局可以在调用 StartDataFlowRecord 方法和 UpdateLayout 方法时通过设置 MixMaxResolutionStreamId 来指定大画面显示的流。

  • 未设置 MixMaxResolutionStreamId 时,大画面显示最先进入房间的流。
  • 设置了 MixMaxResolutionStreamId 但该条流还未进入房间时,会取最早进入的流设置为大画面,直到设置的流进来为止。
  • 在以下水平布局示例中,如果房间内的流数不足,则剩余位置会空置显示背景色。
  • 如果在开始录制的请求中设置了录制白板并且房间内有白板时,MixMaxResolutionStreamId 参数失效,白板画面会始终占据大画面。
  • 如果实际视频流的宽高比与画面的宽高比不一致,对于大画面,原视频会缩放以适配画面的大小,对于小画面,原视频会裁剪以适配画面的大小。

实际布局效果如下所示:

2.3 垂直布局

垂直布局可以在调用 StartDataFlowRecord 方法和 UpdateLayout 方法时通过设置 MixMaxResolutionStreamId 来指定大画面显示的流。

注意事项请参考 2.2 水平布局,实际布局效果如下所示:

2.4 悬浮布局

悬浮布局可以在调用 StartDataFlowRecord 方法和 UpdateLayout 方法时通过设置 MixMaxResolutionStreamId 来指定大画面显示的流。

注意事项请参考 2.2 水平布局,实际布局效果如下所示:

2.5 自定义布局

如果开发者需要自定义布局,可以在 ZegoRecorderPlayback SDK 回放中,自行设定每一个音视频流窗口的位置以及大小,并设置参数,自由摆放组合,达到想要的效果。

3 请求示例

在录制过程中,可以随时调用本方法更新布局和设置在大画面显示的流,以下是一个更新示例。

“Content-type” 为 application/json;charset=utf-8 时,UpdateLayout 请求包体内容如下:

{
    "TaskId": "xxxx",
    "MixMode": 3,
    "MixMaxResolutionStreamId": "teacher"
}
本篇目录