如何创建单画面布局

导播台布局定义了画面的引用关系和排列规则,您可以根据使用场景创建合适的布局。

画面引用及排列规则按如下参数设置:

  • 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.nA列表的第n个参数,A.n.BA列表中第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;
    }