本示例介绍使用Alibaba Cloud SDK for Java调用AddCasterLayout接口添加导播台布局。
前提条件
请在pom.xml文件中增加以下依赖,准确的SDK版本号,参见阿里云开发工具包(SDK)。
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>java.demo</groupId>
<artifactId>test</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<!-- https://mvnrepository.com/artifact/com.aliyun/aliyun-java-sdk-core -->
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.4.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.aliyun/aliyun-java-sdk-live -->
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-live</artifactId>
<version>3.7.5</version>
</dependency>
</dependencies>
</project>
示例代码
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());
}
}
}
在文档使用中是否遇到以下问题
更多建议
匿名提交