本示例介绍使用Alibaba Cloud SDK for Java调用AddCasterLayout接口添加导播台布局。

前提条件

请在pom.xml文件中增加以下依赖,准确的SDK版本号,参见阿里云开发工具包(SDK)

<dependency>
    <groupId>com.aliyun</groupId>
    <artifactId>aliyun-java-sdk-live</artifactId>
    <version>3.7.5</version>
 </dependency>

示例代码

import java.util.ArrayList;
import java.util.List;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.live.model.v20161101.AddCasterLayoutRequest;
import com.aliyuncs.live.model.v20161101.AddCasterLayoutResponse;
import com.aliyuncs.profile.DefaultProfile;
import com.google.gson.Gson;

/**
 * 添加导播台布局
 */
public class TestAddCasterLayout {

    public static void main(String[] args) {

        DefaultProfile profile = DefaultProfile.getProfile(
            "<your-region-id>", // 地域ID,可以通过接口 DescribeRegions 查看可用的地域ID。
            "<your-access-key-id>", // 您的AccessKey ID
            "<your-access-key-secret>"); // 您的AccessKey Secret
        IAcsClient client = new DefaultAcsClient(profile);

        AddCasterLayoutRequest request = new AddCasterLayoutRequest();
        request.setCasterId("yourCasterId");

        // Videolayer配置列表,元素为视频画面的配置信息,如宽高、位置等,画面层次按列表顺序排列
        List<AddCasterLayoutRequest.VideoLayer> videoLayerList = new ArrayList<AddCasterLayoutRequest.VideoLayer>();

        // 视频画面的配置信息1
        AddCasterLayoutRequest.VideoLayer videoLayer1 = new AddCasterLayoutRequest.VideoLayer();
        /**
         * 若采用不填充模式,则以画面作为配置目标进行Layer设置。
         * 若采用自适应模式,则以填充区(框)作为配置目标进行Layer设置,
         *     此时画面会按照原始的宽高比缩放,长边对齐的自适应方式在填充区(框)内居中填充。
         *     若填充区宽高比和画面不一致,则短边两侧无填充(显示为下层Layer画面,若下层未配置Layer,默认为底图黑色)。
         */
        // 元素填充方式。不填充:“none”自适应:“fit”,默认:不填充。若填充方式为“fit”则PositionNormalized参数为必选
        videoLayer1.setFillMode("none");
        // 设置该layer元素的高度归一化比例值。
        videoLayer1.setHeightNormalized(1F);
        //     设置该layer元素的宽度归一化比例值。
        videoLayer1.setWidthNormalized(1F);
        // 设置该layer 元素的位置归一化值[x,y]。默认值:[0,0]
        // videoLayer1.setPositionNormalized();
        // 该字段对视频进行固定延迟设置,可用于字幕同步。单位:ms,默认值:0,取值范围:[0-5000]
        videoLayer1.setFixedDelayDuration(500);
        // 设置元素的position 参考坐标值。默认值:topLeft
        // 取值范围:topLeft,topRight,bottomLeft,bottomRight以及center,topCenter,bottomCenter,leftCenter,rightCenter。
        videoLayer1.setPositionRefer("topLeft");
        videoLayerList.add(videoLayer1);

        // 视频画面的配置信息2
        AddCasterLayoutRequest.VideoLayer videoLayer2 = new AddCasterLayoutRequest.VideoLayer();
        // 元素填充方式。不填充:”none”自适应:”fit”,默认:不填充。
        videoLayer2.setFillMode("none");
        // 设置该layer元素的高度归一化比例值。
        videoLayer2.setHeightNormalized(1F);
        // 设置该layer元素的宽度归一化比例值。
        videoLayer2.setWidthNormalized(1F);
        // 设置该layer 元素的位置归一化值[x,y]。默认值:[0,0]
        // videoLayer2.setPositionNormalized();
        // 该字段对视频进行固定延迟设置,可用于字幕同步。
        videoLayer2.setFixedDelayDuration(500);
        // 设置元素的position 参考坐标值。默认值:topLeft
        videoLayer2.setPositionRefer("topLeft");
        videoLayerList.add(videoLayer2);
        // 添加视频配置信息
        request.setVideoLayers(videoLayerList);

        // Audiolayer配置列表,元素为音频配置信息,无层次关系
        List<AddCasterLayoutRequest.AudioLayer> audioLayerList = new ArrayList<AddCasterLayoutRequest.AudioLayer>();

        // 音频配置信息1
        AddCasterLayoutRequest.AudioLayer audioLayer1 = new AddCasterLayoutRequest.AudioLayer();
        // 调节音频流的音量大小倍数。取值范围:[0, 10.0],默认值:1.0
        audioLayer1.setVolumeRate(1.0F);
        // 确定哪些声道可以作为音量输入。
        audioLayer1.setValidChannel("all");
        // 该字段对视频进行固定延迟设置,可用于字幕同步。单位:ms,默认值:0,取值范围:[0-5000]
        audioLayer1.setFixedDelayDuration(200);
        audioLayerList.add(audioLayer1);

        // 音频配置信息2
        AddCasterLayoutRequest.AudioLayer audioLayer2 = new AddCasterLayoutRequest.AudioLayer();
        // 调节音频流的音量大小倍数。取值范围:[0, 10.0],默认值:1.0
        audioLayer2.setVolumeRate(1F);
        // 确定哪些声道可以作为音量输入。
        audioLayer2.setValidChannel("all");
        // 该字段对视频进行固定延迟设置,可用于字幕同步。单位:ms,默认值:0,取值范围:[0-5000]
        audioLayer2.setFixedDelayDuration(200);
        audioLayerList.add(audioLayer2);
        // 添加音频配置信息
        request.setAudioLayers(audioLayerList);

        // 元素为资源的位置ID(locationId参见添加视频源),与VideoLayers元素顺序对应
        List<String> blendListList = new ArrayList<String>();
        blendListList.add("RV01");
        blendListList.add("RV02");
        request.setBlendLists(blendListList);

        // 元素为资源的位置ID(locationId参见添加视频源),与VideoLayers元素顺序对应
        List<String> mixListList = new ArrayList<String>();
        mixListList.add("RV01");
        mixListList.add("RV02");
        request.setMixLists(mixListList);

        try {
            // 发起请求并获取返回值
            AddCasterLayoutResponse response = client.getAcsResponse(request);
            // 处理业务逻辑
            System.out.println(new Gson().toJson(response));
        } catch (ServerException e) {
            e.printStackTrace();
        } catch (ClientException e) {
            System.out.println("ErrCode:" + e.getErrCode());
            System.out.println("ErrMsg:" + e.getErrMsg());
            System.out.println("RequestId:" + e.getRequestId());
        }

    }

}
说明 更多参数信息,请参见API参考