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

前提条件

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

阿里云2000元代金券免费领,最新优惠1折抢购,2核4G云服务器仅799元/3年,新老用户同享,立即抢购>>>

<dependency>     <groupId&gt;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());         }      }  }