导播台布局定义了单个或多个画面的引用关系和排列规则,您可依据不同的使用场景创建合适的布局,画面引用及排列规则按如下参数说明设置:
  • BlendList:指定引用资源的位置ID(LocationId),列表中元素的顺序代表了画面自下而上叠加顺序
  • MixList:指定引用资源的位置ID(LocationId),列表中元素的顺序代表了音频混合顺序
  • VideoLayer:指定画面的布局配置,包括原点坐标、归一化宽高值、坐标系位置等信息,元素顺序与BlendList顺序保持一致
  • AudioLayer:指定音频音量、声道等配置信息,元素顺序与MixList顺序保持一致

单画面布局参数样例

参数名 参数值 参数说明
Action AddCasterLayout 操作接口名称
CasterId xxxx 导播台ID
BlendList.1 RV01 视频源位置locationId
MixList.1 RV01 视频源位置locationId
VideoLayer.1.HeightNormalized 1.0 视频元素高度归一化值,设置高度后宽度会按照等比例缩放
VideoLayer.1.PositionNormalized.1 1.0 视频元素归一化水平坐标X值
VideoLayer.1.PositionNormalized.2 1.0 视频元素归一化垂直坐标Y值
VideoLayer.1.PositionRefer topLeft 视频元素参考坐标系,以播放窗口左上角为原点
AudioLayer.1.ValidChannel leftChannel 使用左声道作为音量输入
AudioLayer.1.VolumeRate 1.0 音频音量大小倍数,1.0为原始音量
说明 A.n 即A列表的第n个参数,A.n.B 即A列表中第n个结构体的B参数。

代码示例

public AddCasterLayoutResponse addCasterLayoutSample() {
		/*设置BlendList*/
		ArrayList<String> blendList = new ArrayList<String>();
		blendList.add("RV01");
		/*设置VideoLayers*/
		ArrayList<VideoLayer> videoLayers = new ArrayList<VideoLayer>();
		VideoLayer videoLayer = new VideoLayer();
		ArrayList<Float> positionNormalized = new ArrayList<Float>();
		positionNormalized.add(0f);
		positionNormalized.add(0f);
		videoLayer.setHeightNormalized(1f);  // 设置视频归一化高度比例
		videoLayer.setPositionNormalizeds(positionNormalized); // 设置视频归一化坐标
		videoLayer.setPositionRefer("topLeft"); // 设置视频坐标原点参考系
		videoLayers.add(videoLayer);
		/*设置MixList*/
		ArrayList<String> mixList = new ArrayList<String>();
		mixList.add("RV01");
		/*设置AudioLayers*/
		ArrayList<AudioLayer> audioLayers = new ArrayList<AudioLayer>();
		AudioLayer audioLayer = new AudioLayer();
		audioLayer.setVolumeRate(1f); // 设置音频音量倍数
		audioLayer.setValidChannel("leftChannel"); // 设置音频输入声道
		audioLayers.add(audioLayer);
		
		AddCasterLayoutRequest addCasterLayoutRequest = new AddCasterLayoutRequest();
		addCasterLayoutRequest.setCasterId("XXXXXX"); // 设置导播台ID
		addCasterLayoutRequest.setBlendLists(blendList); // 设置BlendList
		addCasterLayoutRequest.setMixLists(mixList);  // 设置MixList
		addCasterLayoutRequest.setVideoLayers(videoLayers); // 设置VideoLayers
		addCasterLayoutRequest.setAudioLayers(audioLayers); // 设置AudioLayers
		AddCasterLayoutResponse addCasterLayoutResponse = null;
		try {
			addCasterLayoutResponse = LiveCli-ent.getClient().getAcsResponse(addCasterLayoutRequest);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return addCasterLayoutResponse;
	}