导播台布局定义了单个或多个画面的引用关系和排列规则,您可依据不同的使用场景创建合适的布局。
画面引用及排列规则按如下参数说明设置:
- BlendList:指定引用资源的位置ID(LocationId),列表中元素的顺序代表了画面自下而上叠加顺序。
- MixList:指定引用资源的位置ID(LocationId),列表中元素的顺序代表了音频混合顺序。
- VideoLayer:指定画面的布局配置,包括原点坐标、归一化宽高值、坐标系位置等信息,元素顺序与
BlendList
顺序保持一致。 - AudioLayer:指定音频音量、声道等配置信息,元素顺序与
MixList
顺序保持一致。
单画面布局参数样例
布局参数取值说明请参见添加导播台布局。
名称 | 示例值 | 描述 |
---|---|---|
Action | AddCasterLayout | 操作接口名称 |
CasterId | LIVEPRODUCER_POST-cn-v0h1557**** | 导播台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("LIVEPRODUCER_POST-cn-v0h1557****"); // 设置导播台ID
addCasterLayoutRequest.setBlendLists(blendList); // 设置BlendList
addCasterLayoutRequest.setMixLists(mixList); // 设置MixList
addCasterLayoutRequest.setVideoLayers(videoLayers); // 设置VideoLayers
addCasterLayoutRequest.setAudioLayers(audioLayers); // 设置AudioLayers
AddCasterLayoutResponse addCasterLayoutResponse = null;
try {
addCasterLayoutResponse = LiveClient.getClient().getAcsResponse(addCasterLayoutRequest);
} catch (Exception e) {
e.printStackTrace();
}
return addCasterLayoutResponse;
}