功能描述

在使用合流录制模式时,你需要设置频道内所有发流用户视窗的大小及其在视频画布上的位置,进行合流布局。

下图为合流后的视频示例。我们将视频的背景称为画布,每个发流用户占据一个视窗

如果原视频的宽高比和布局中用户视窗的宽高比不一致,可能出现裁剪或压缩。用户视窗的宽高比取决于视频画布的长宽比以及合流布局方式。

Agora 本地服务端录制的 demo 提供三种预设的合流布局样式,你只需选择其中一种样式,就能实现预设的布局效果。

实现方法

在命令行中开始录制时设置 --isMixingEnabled 1 使用合流模式,同时设置 --layoutMode 参数选择一种布局:

  • --layoutMode 0 使用悬浮布局(默认)。第一个加入频道的用户在画布上会显示为大视窗,铺满整个画布;其他用户按照加入的顺序从画布左下角开始依次水平排列,显示为小视窗,最多 4 行,每行 4 个视窗。小视窗会悬浮在大视窗上面。最多支持共 17 个用户视窗。
  • --layoutMode 1 使用自适应布局。用户视窗平铺在画布上。根据用户的数量自动调整每个用户视窗的大小,每个用户视窗的大小一致。最多支持 17 个用户视窗。
  • --layoutMode 2 使用垂直布局。指定一个用户在画布左侧显示大视窗,其他用户的小视窗在右侧垂直排列,最多两列,每列最多 8 个视窗。最多支持共 17 个用户视窗。

悬浮布局

默认布局方式。小视窗会悬浮在大视窗上面。第一个加入频道的用户在屏幕上会显示为大视窗,铺满整个画布,其他用户按照加入的顺序从屏幕左下角开始依次水平排列显示小视窗,最多 4 行,每行 4 个视窗。

对于悬浮布局,有以下注意事项:

  • 如果某用户只发送音频,仍然会占据布局位,显示大视窗。
  • 如果实际视频流的宽高比与视窗的宽高比不一致,视频视窗会裁剪以适配视窗的大小。
  • 每个小视窗的宽和高分别为整个画布宽和高的 0.235,相邻小视窗的左右和上下间距分别为整个画布宽和高的 0.012。小视窗距离画布的水平和垂直边距也分别为整个画布宽和高的 0.012。

不同人数下实际布局效果如下图所示。

自适应布局

布局样式会根据频道人数自适应。每个用户视窗平铺在画布上,大小一致。

对于自适应布局,有以下注意事项:

  • 在下面不同人数的合流布局下,如果频道中人数不足,则剩余的布局位置会空着,显示背景色。
  • 如果某用户只发送音频,仍然会占据布局,显示背景色。
  • 如果实际视频流的宽高比与视窗的宽高比不一致,视频会裁剪以适配视频的大小。

不同人数下实际布局效果如下图所示。

17 人的布局与上面的情况不同,用户视窗没有铺满整个画布。每个用户视窗的宽和高分别为总宽度和总高度的 0.2,前四行每行四个用户,画布左右边距均为总宽度的 0.1。第五行居中显示第 17 个用户视窗。

垂直布局

如果你选择了垂直布局,需要在开始录制的时候通过 --maxResolutionUid指定一个 UID 作为大视窗。

对于垂直布局,有以下注意事项:

  • 大视窗显示指定的 UID 用户的视频流.
    • 如果未指定或者指定用户未进入频道,Large 区域显示背景色。
    • 如果实际视频流的宽高比与视窗的宽高比不一致,视窗会缩放以保证视频的完整性。
  • 小视窗的排列顺序,是按照加入频道的时间先后顺序。
    • 如果用户1退出频道,用户2会占据用户1的视窗,依次替补。
    • 如果实际视频流的宽高比与视窗的宽高比不一致,视频会裁剪以适配视窗的大小。
  • 在下面不同人数的合流布局下,若频道中人数不足,则剩余的布局位置会空着,显示背景色。
  • 如果某用户只发送音频,仍然会占据布局位,显示背景色。

不同人数下实际布局效果如下图所示。

  • 1 - 5 人布局,小视窗 1 - 4 依次显示在画布右侧, 且不会覆盖大视窗。小视窗宽度是总宽的 1/5,视窗高度是总高的 1/4,如下左图所示。
  • 6 - 7 人布局,小视窗 1 - 6 依次显示在画布右侧, 且不会覆盖大视窗。小视窗宽度是总宽的 1/7,视窗高度是总高的 1/6,如下右图所示。

  • 8 - 9 人布局,小视窗 1 - 8 依次显示在画布右侧, 且不会覆盖大视窗。小视窗宽度是总宽的 1/9,视窗高度是总高的 1/8,如下左图所示。
  • 10 - 17 人布局,小视窗 1 - 16 依次显示在画布右侧, 且不会覆盖大视窗。小视窗宽度是总宽的 1/10,视窗高度是总高的 1/8,如下右图所示。