3. 安装SDK
您可以通过Maven方式获取和安装SDK,首先需要在您的操作系统中下载并安装Maven ,安装完成后您只需要在Java项目的pom.xml文件中加入相应的依赖项即可。
使用服务端SDK前,您需要安装“huaweicloud-sdk-core”和“huaweicloud-sdk-live”,具体的SDK版本号请参见 SDK开发中心 。
Copied!
<dependency>
<groupId>com.huaweicloud.sdk</groupId>
<artifactId>huaweicloud-sdk-core</artifactId>
<version>3.0.32-rc</version>
</dependency>
<dependency>
<groupId>com.huaweicloud.sdk</groupId>
<artifactId>huaweicloud-sdk-live</artifactId>
<version>3.0.32-rc</version>
</dependency>
4. 开始使用
4.1 导入依赖模块
Copied!
import com.huaweicloud.sdk.core.auth.BasicCredentials;
import com.huaweicloud.sdk.core.auth.ICredential;
import com.huaweicloud.sdk.core.exception.ConnectionException;
import com.huaweicloud.sdk.core.exception.RequestTimeoutException;
import com.huaweicloud.sdk.core.exception.ServiceResponseException;
import com.huaweicloud.sdk.live.v1.LiveClient;
import com.huaweicloud.sdk.live.v1.model.ListLiveStreamsOnlineRequest;
import com.huaweicloud.sdk.live.v1.model.ListLiveStreamsOnlineResponse;
import com.huaweicloud.sdk.live.v1.region.LiveRegion;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
4.2 初始化认证信息
Copied!
String ak = System.getenv("HUAWEICLOUD_SDK_AK");
String sk = System.getenv("HUAWEICLOUD_SDK_SK");
public static ICredential getCredential(ak, sk) {
return new BasicCredentials()
.withAk(ak)
.withSk(sk);
}
相关参数说明如下所示:
- ak:华为云账号Access Key。
- sk:华为云账号Secret Access Key 。
4.3 初始化直播服务的客户端
Copied!
public static LiveClient getClient(Region region, ICredential auth) {
return LiveClient.newBuilder()
.withCredential(auth)
.withRegion(region)
.build();
}
相关参数说明如下所示:
service region: 服务所在区域,当前支持北京一和北京四
- CN_NORTH_1 北京一
- CN_NORTH_4 北京四
4.4 配置请求参数
以获取实时在线人数接口为例:
Copied!
ListLiveStreamsOnlineRequest request = new ListLiveStreamsOnlineRequest()
.withPublishDomain("<PUBLISH DOMAIN NAME>")
.withApp("<APP NAME>")
.withLimit(<LIMIT>)
.withOffset(<OFFSET>)
.withStream("<STREAM NAME>");
相关demo说明见 5. SDK demo代码解析
4.5 发送请求
以获取实时在线人数接口为例:
Copied!
ListLiveStreamsOnlineResponse response = client.listLiveStreamsOnline(request);
##5. SDK demo代码解析
5.1 创建直播转码模板
demo请见TranscodingTemplateDemo.createTranscodingTemplate()方法
5.1.1 构造请求参数
Copied!
QualityInfo qualityInfo = new QualityInfo()
.withTemplateName("templateName_001")
.withQuality("FHD")
.withPvc(QualityInfo.PvcEnum.ON)
.withHdlb(QualityInfo.HdlbEnum.ON)
.withCodec(QualityInfo.CodecEnum.H265)
.withWidth(1080)
.withHeight(640)
.withBitrate(1000)
.withVideoFrameRate(0)
.withProtocol(QualityInfo.ProtocolEnum.RTMP)
.withIFrameInterval(25)
.withGop(4);
StreamTranscodingTemplate template = new StreamTranscodingTemplate()
.withDomain("play.example.huawei.com")
.withAppName("live")
.withQualityInfo(Arrays.asList(qualityInfo));
CreateTranscodingsTemplateRequest request = new CreateTranscodingsTemplateRequest()
.withBody(template);
5.1.2 发送请求
Copied!
CreateTranscodingsTemplateResponse response = client.createTranscodingsTemplate(request);
5.1.3 接口及参数说明
请见 创建直播转码模板
5.2 删除直播转码模板
demo请见TranscodingTemplateDemo.deleteTranscodingTemplate()方法
5.2.1 构造请求参数
Copied!
DeleteTranscodingsTemplateRequest request = new DeleteTranscodingsTemplateRequest()
.withAppName("live")
.withDomain("play.example.huawei.com");
5.2.2 发送请求
Copied!
DeleteTranscodingsTemplateResponse response = client.deleteTranscodingsTemplate(request);
5.2.3 接口及参数说明
请见 删除直播转码模板
5.3 配置直播转码模板
demo请见TranscodingTemplateDemo.updateTranscodingTemplate()方法
5.3.1 构造请求参数
Copied!
QualityInfo qualityInfo = new QualityInfo()
.withTemplateName("templateName_001")
.withQuality("FHD")
.withPvc(QualityInfo.PvcEnum.ON)
.withHdlb(QualityInfo.HdlbEnum.ON)
.withCodec(QualityInfo.CodecEnum.H265)
.withWidth(1080)
.withHeight(640)
.withBitrate(1000)
.withVideoFrameRate(0)
.withProtocol(QualityInfo.ProtocolEnum.RTMP)
.withIFrameInterval(25)
.withGop(4);
StreamTranscodingTemplate template = new StreamTranscodingTemplate()
.withDomain("live")
.withAppName("play.example.huawei.com")
.withQualityInfo(Arrays.asList(qualityInfo));
UpdateTranscodingsTemplateRequest request = new UpdateTranscodingsTemplateRequest()
.withBody(template);
5.3.2 发送请求
Copied!
UpdateTranscodingsTemplateResponse response = client.updateTranscodingsTemplate(request);
5.3.3 接口及参数说明
请见 配置直播转码模板
5.4 查询直播转码模板
demo请见TranscodingTemplateDemo.showTranscodingTemplate()方法
5.4.1 构造请求参数
Copied!
ShowTranscodingsTemplateRequest request = new ShowTranscodingsTemplateRequest()
.withAppName("live")
.withDomain("play.example.huawei.com")
.withPage(1)
.withSize(10);
5.4.2 发送请求
Copied!
ShowTranscodingsTemplateResponse response = client.showTranscodingsTemplate(request);
5.4.3 接口及参数说明
请见 查询直播转码模板
直播服务转码模板场景示例(Java版本)
0. 版本说明
本示例基于华为云SDK V3.0版本开发。
1. 简介
华为云提供了直播服务端SDK,您可以直接集成服务端SDK来调用直播的相关API,从而实现对直播服务的快速操作。该示例展示了如何通过java版SDK对转码模板进行管理。
2. 开发前准备
3. 安装SDK
您可以通过Maven方式获取和安装SDK,首先需要在您的操作系统中下载并安装Maven ,安装完成后您只需要在Java项目的pom.xml文件中加入相应的依赖项即可。
使用服务端SDK前,您需要安装“huaweicloud-sdk-core”和“huaweicloud-sdk-live”,具体的SDK版本号请参见 SDK开发中心 。
<dependency> <groupId>com.huaweicloud.sdk</groupId> <artifactId>huaweicloud-sdk-core</artifactId> <version>3.0.32-rc</version> </dependency> <dependency> <groupId>com.huaweicloud.sdk</groupId> <artifactId>huaweicloud-sdk-live</artifactId> <version>3.0.32-rc</version> </dependency>
4. 开始使用
4.1 导入依赖模块
// 用户身份认证 import com.huaweicloud.sdk.core.auth.BasicCredentials; import com.huaweicloud.sdk.core.auth.ICredential; // 请求异常类 import com.huaweicloud.sdk.core.exception.ConnectionException; import com.huaweicloud.sdk.core.exception.RequestTimeoutException; import com.huaweicloud.sdk.core.exception.ServiceResponseException; // 导入live的客户端 import com.huaweicloud.sdk.live.v1.LiveClient; // 导入待请求接口的request和response类 (以获取实时在线人数接口为例) import com.huaweicloud.sdk.live.v1.model.ListLiveStreamsOnlineRequest; import com.huaweicloud.sdk.live.v1.model.ListLiveStreamsOnlineResponse; // 导入服务区域枚举 import com.huaweicloud.sdk.live.v1.region.LiveRegion; // 日志打印 import org.slf4j.Logger; import org.slf4j.LoggerFactory;
4.2 初始化认证信息
// 认证用的ak和sk直接写到代码中有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全; // 本示例以ak和sk保存在环境变量中来实现身份验证为例,运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK。 String ak = System.getenv("HUAWEICLOUD_SDK_AK"); String sk = System.getenv("HUAWEICLOUD_SDK_SK"); public static ICredential getCredential(ak, sk) { return new BasicCredentials() .withAk(ak) .withSk(sk); }
相关参数说明如下所示:
4.3 初始化直播服务的客户端
public static LiveClient getClient(Region region, ICredential auth) { // 初始化直播服务的客户端 return LiveClient.newBuilder() .withCredential(auth) .withRegion(region) // 选择服务所在区域 .build(); }
相关参数说明如下所示:
service region: 服务所在区域,当前支持北京一和北京四
4.4 配置请求参数
以获取实时在线人数接口为例:
ListLiveStreamsOnlineRequest request = new ListLiveStreamsOnlineRequest() .withPublishDomain("<PUBLISH DOMAIN NAME>") .withApp("<APP NAME>") .withLimit(<LIMIT>) .withOffset(<OFFSET>) .withStream("<STREAM NAME>");
相关demo说明见 5. SDK demo代码解析
4.5 发送请求
以获取实时在线人数接口为例:
ListLiveStreamsOnlineResponse response = client.listLiveStreamsOnline(request);
##5. SDK demo代码解析
5.1 创建直播转码模板
demo请见TranscodingTemplateDemo.createTranscodingTemplate()方法
5.1.1 构造请求参数
QualityInfo qualityInfo = new QualityInfo() .withTemplateName("templateName_001") .withQuality("FHD") .withPvc(QualityInfo.PvcEnum.ON) .withHdlb(QualityInfo.HdlbEnum.ON) .withCodec(QualityInfo.CodecEnum.H265) .withWidth(1080) .withHeight(640) .withBitrate(1000) .withVideoFrameRate(0) .withProtocol(QualityInfo.ProtocolEnum.RTMP) .withIFrameInterval(25) .withGop(4); StreamTranscodingTemplate template = new StreamTranscodingTemplate() .withDomain("play.example.huawei.com") .withAppName("live") .withQualityInfo(Arrays.asList(qualityInfo)); CreateTranscodingsTemplateRequest request = new CreateTranscodingsTemplateRequest() .withBody(template);
5.1.2 发送请求
CreateTranscodingsTemplateResponse response = client.createTranscodingsTemplate(request);
5.1.3 接口及参数说明
请见 创建直播转码模板
5.2 删除直播转码模板
demo请见TranscodingTemplateDemo.deleteTranscodingTemplate()方法
5.2.1 构造请求参数
DeleteTranscodingsTemplateRequest request = new DeleteTranscodingsTemplateRequest() .withAppName("live") .withDomain("play.example.huawei.com");
5.2.2 发送请求
DeleteTranscodingsTemplateResponse response = client.deleteTranscodingsTemplate(request);
5.2.3 接口及参数说明
请见 删除直播转码模板
5.3 配置直播转码模板
demo请见TranscodingTemplateDemo.updateTranscodingTemplate()方法
5.3.1 构造请求参数
QualityInfo qualityInfo = new QualityInfo() .withTemplateName("templateName_001") .withQuality("FHD") .withPvc(QualityInfo.PvcEnum.ON) .withHdlb(QualityInfo.HdlbEnum.ON) .withCodec(QualityInfo.CodecEnum.H265) .withWidth(1080) .withHeight(640) .withBitrate(1000) .withVideoFrameRate(0) .withProtocol(QualityInfo.ProtocolEnum.RTMP) .withIFrameInterval(25) .withGop(4); StreamTranscodingTemplate template = new StreamTranscodingTemplate() .withDomain("live") .withAppName("play.example.huawei.com") .withQualityInfo(Arrays.asList(qualityInfo)); UpdateTranscodingsTemplateRequest request = new UpdateTranscodingsTemplateRequest() .withBody(template);
5.3.2 发送请求
UpdateTranscodingsTemplateResponse response = client.updateTranscodingsTemplate(request);
5.3.3 接口及参数说明
请见 配置直播转码模板
5.4 查询直播转码模板
demo请见TranscodingTemplateDemo.showTranscodingTemplate()方法
5.4.1 构造请求参数
ShowTranscodingsTemplateRequest request = new ShowTranscodingsTemplateRequest() .withAppName("live") .withDomain("play.example.huawei.com") .withPage(1) .withSize(10);
5.4.2 发送请求
ShowTranscodingsTemplateResponse response = client.showTranscodingsTemplate(request);
5.4.3 接口及参数说明
请见 查询直播转码模板
6. FAQ
暂无
7. 参考
更多信息请参考 直播服务文档
8. 修订记录