合流布局
合流布局
直播合流视频布局目前分为三种:1. 自定义布局;2. 悬浮布局(默认);3. 自适应布局.下面分别介绍布局效果。
自定义布局
通过调用自定义布局接口可以设置合流视频整体尺寸,以及各个连麦者视图位置及大小。
如下图所示,合流布局是以像素方式,定义视频输出尺寸, 如图整体视频尺寸 宽*高 = 300 * 300 ;以整体作为画布,画布的原点(0,0)在左上角, 那么三个连麦主播的窗口相对原点的位置,及其宽度,高度值分别如图所示(相应的设置代码也可在直播布局的接口文档中查看布局实例代码):
-
示例代码:
C #var _videoCustomLayouts = new List<RCRTCCustomLayout>();
_videoCustomLayouts.Add(new RCRTCCustomLayout("主播1 UserID", 70, 20, 130, 80));
_videoCustomLayouts.Add(new RCRTCCustomLayout("主播2 UserID", 20, 100, 120, 150));
_videoCustomLayouts.Add(new RCRTCCustomLayout("主播3 UserID", 160, 100, 120, 150));
Engine.SetLiveMixCustomLayouts(_videoCustomLayouts);
悬浮布局
背景视频来源默认采用第一个加入房间的主播发布的视频或合流布局接口指定的 HostVideoStream 视频流,显示区域为整个合流视频,合流视频大小需要调用接口设置 SetLiveMixVideoResolution
(默认值是 360 * 640);
当连麦者依次加入时,按照下图显示的序列加载子视图:
当有人离开时,系统会自动按照现有主播加入房间的次序重新布局视图
-
示例代码:
C #// 设置主播合流悬浮布局
Engine.SetLiveMixLayoutMode(RCRTCLiveMixLayoutMode.SUSPENSION);
自适应布局
视频的整体大小为默认值 360 * 640 或通过合流接口自定义;当有多人加入房间后,直播系统会按照具体人数平分整体视频区域,使之每个子视图加载区域大小一致;录制系统会按照参会者进入房间的次序依次把参会者图像加载在示意图的相应序号上。 当有人离开时,系统会自动按照现有主播加入房间的次序重新布局视图。
-
示例代码:
C #Engine.SetLiveMixCustomLayouts(RCRTCLiveMixLayoutMode.ADAPTIVE);
视频合流参数设置
设置视频合流码率
- 示例代码:
C #
// 设置视频大流比特率
var isTinyStream = false;
Engine.SetLiveMixVideoBitrate(2000, isTinyStream);
设置视频合流帧率
-
示例代码:
C #// 设置视频大流帧率
var isTinyStream = false;
Engine.SetLiveMixVideoFPS(RCRTCVideoFps.FPS_24, isTinyStream);
设置视频合流分辨率
-
示例代码:
C #// 设置视频大流分辨率
var isTinyStream = false;
Engine.SetLiveMixVideoResolution(720, 1080, isTinyStream);
音频合流
音频合流布局的原理就是通过控制输入源列表,设置输出音频配置,达到合并哪些音频流输出指定配置的音频流。设置音频合流列表后,观众订阅直播流,就会只听到音频合流列表中对应的主播。
-
示例代码:
C #var _audioMix = new List<String>();
_audioMix.Add("主播1 UserID");
_audioMix.Add("主播2 UserID");
_audioMix.Add("主播3 UserID");
Engine.SetLiveMixCustomAudio(_audioMix);
设置音频合流码率
合流音频比特率,跟随主播当前设置的音质模式,SPEECH 模式为 32 Kbps,MUSIC 模式为 64 Kbps, MUSIC_HIGH 模式为 128 Kbps,默认为 32 Kbps。如果想自定义更高比特率,可传入自定义的数值,范围为 16 - 256 Kbps。基于带宽及音质提升考虑,建议不要高于 192 Kbps。
-
示例代码:
C #var mixAudioBitRate = 192;
Engine.SetLiveMixAudioBitrate(mixAudioBitRate);