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.v2.LiveClient;
import com.huaweicloud.sdk.live.v2.model.ListLiveStreamsOnlineRequest;
import com.huaweicloud.sdk.live.v2.model.ListLiveStreamsOnlineResponse;
import com.huaweicloud.sdk.live.v2.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请见StatisticalAnalyzeDemo.listBandwidthDetail()方法
5.1.1 构造请求参数
Copied!
ListBandwidthDetailRequest request = new ListBandwidthDetailRequest()
.withPlayDomains(Arrays.asList("play.example.huawei.com"))
.withApp("live")
.withIsp(Arrays.asList("CMCC"))
.withInterval(ListBandwidthDetailRequest.IntervalEnum.NUMBER_300);
5.1.2 发送请求
Copied!
ListBandwidthDetailResponse response = client.listBandwidthDetail(request);
5.1.3 接口及参数说明
请见 查询播放带宽趋势接口
5.2 查询播放流量趋势接口
demo请见StatisticalAnalyzeDemo.listDomainTrafficDetail()方法
5.2.1 构造请求参数
Copied!
ListDomainTrafficDetailRequest request = new ListDomainTrafficDetailRequest()
.withPlayDomains(Arrays.asList("play.example.huawei.com"))
.withApp("live")
.withIsp(Arrays.asList("CMCC"))
.withInterval(300);
5.2.2 发送请求
Copied!
ListDomainTrafficDetailResponse response = client.listDomainTrafficDetail(request);
5.2.3 接口及参数说明
请见 查询播放带宽趋势接口
5.3 查询播放带宽峰值接口
demo请见StatisticalAnalyzeDemo.listDomainBandwidthPeak()方法
5.3.1 构造请求参数
Copied!
ListDomainBandwidthPeakRequest request = new ListDomainBandwidthPeakRequest()
.withPlayDomains(Arrays.asList("play.example.huawei.com"))
.withApp("live")
.withIsp(Arrays.asList("CMCC"));
5.3.2 发送请求
Copied!
ListDomainBandwidthPeakResponse response = client.listDomainBandwidthPeak(request);
5.3.3 接口及参数说明
请见 查询播放带宽峰值接口
5.4 查询播放流量汇总接口
demo请见StatisticalAnalyzeDemo.listDomainTrafficSummary()方法
5.4.1 构造请求参数
Copied!
ListDomainTrafficSummaryRequest request = new ListDomainTrafficSummaryRequest()
.withPlayDomains(Arrays.asList("play.example.huawei.com"))
.withApp("live")
.withIsp(Arrays.asList("CMCC"));
5.4.2 发送请求
Copied!
ListDomainTrafficSummaryResponse response = client.listDomainTrafficSummary(request);
5.4.3 接口及参数说明
请见 查询播放流量汇总接口
5.5 查询观众趋势接口
demo请见StatisticalAnalyzeDemo.listUsersOfStream()方法
5.5.1 构造请求参数
Copied!
ListUsersOfStreamRequest request = new ListUsersOfStreamRequest()
.withPlayDomain("play.example.huawei.com")
.withApp("live")
.withIsp(Arrays.asList("CMCC"))
.withInterval(ListUsersOfStreamRequest.IntervalEnum.NUMBER_300);
5.5.2 发送请求
Copied!
ListUsersOfStreamResponse response = client.listUsersOfStream(request);
5.5.3 接口及参数说明
请见 查询观众趋势接口
5.6 查询直播拉流HTTP状态码接口
demo请见StatisticalAnalyzeDemo.listQueryHttpCode()方法
5.6.1 构造请求参数
Copied!
ListQueryHttpCodeRequest request = new ListQueryHttpCodeRequest()
.withPlayDomains(Arrays.asList("play.example.huawei.com"))
.withCode(Arrays.asList("200"));
5.6.2 发送请求
Copied!
ListQueryHttpCodeResponse response = client.listQueryHttpCode(request);
5.6.3 接口及参数说明
请见 查询直播拉流HTTP状态码接口
5.7 查询转码用量接口
demo请见StatisticalAnalyzeDemo.listTranscodeData()方法
5.7.1 构造请求参数
Copied!
ListTranscodeDataRequest request = new ListTranscodeDataRequest()
.withPublishDomain("publish.example.huawei.com")
.withStartTime("2020-08-18T07:20:40Z")
.withEndTime("2020-08-18T10:20:40Z");
5.7.2 发送请求
Copied!
ListTranscodeDataResponse response = client.listTranscodeData(request);
5.7.3 接口及参数说明
请见 查询转码用量接口
5.8 查询录制用量接口
demo请见StatisticalAnalyzeDemo.listRecordData()方法
5.8.1 构造请求参数
Copied!
ListRecordDataRequest request = new ListRecordDataRequest()
.withStartTime("2020-08-18T07:20:40Z")
.withEndTime("2020-08-18T10:20:40Z");
5.8.2 发送请求
Copied!
ListRecordDataResponse response = client.listRecordData(request);
5.8.3 接口及参数说明
请见 查询录制用量接口
5.9 查询截图用量接口
demo请见StatisticalAnalyzeDemo.listSnapshotData()方法
5.9.1 构造请求参数
Copied!
ListSnapshotDataRequest request = new ListSnapshotDataRequest()
.withPublishDomain("publish.example.huawei.com")
.withStartTime("2020-08-18T07:20:40Z")
.withEndTime("2020-08-18T10:20:40Z");
5.9.2 发送请求
Copied!
ListSnapshotDataResponse response = client.listSnapshotData(request);
5.9.3 接口及参数说明
请见 查询截图用量接口
5.10 查询上行带宽数据接口
demo请见StatisticalAnalyzeDemo.showUpBandwidth()方法
5.10.1 构造请求参数
Copied!
ShowUpBandwidthRequest request = new ShowUpBandwidthRequest()
.withPublishDomains(Arrays.asList("publish.example.huawei.com"))
.withStartTime("2020-08-18T07:20:40Z")
.withEndTime("2020-08-18T10:20:40Z");
5.10.2 发送请求
Copied!
ShowUpBandwidthResponse response = client.showUpBandwidth(request);
5.10.3 接口及参数说明
请见 查询上行带宽数据接口
5.11 查询域名维度推流路数接口
demo请见StatisticalAnalyzeDemo.showStreamCount()方法
5.11.1 构造请求参数
Copied!
ShowStreamCountRequest request = new ShowStreamCountRequest()
.withPublishDomains(Arrays.asList("publish.example.huawei.com"))
.withStartTime("2020-08-18T07:20:40Z")
.withEndTime("2020-08-18T10:20:40Z");
5.11.2 发送请求
Copied!
ShowStreamCountResponse response = client.showStreamCount(request);
5.11.3 接口及参数说明
请见 查询域名维度推流路数接口
5.12 查询历史推流列表接口
demo请见StatisticalAnalyzeDemo.listHistoryStreams()方法
5.12.1 构造请求参数
Copied!
ListHistoryStreamsRequest request = new ListHistoryStreamsRequest()
.withDomain("publish.example.huawei.com")
.withApp("live")
.withLimit(10)
.withOffset(0);
5.12.2 发送请求
Copied!
ListHistoryStreamsResponse response = client.listHistoryStreams(request);
5.12.3 接口及参数说明
请见 查询历史推流列表接口
5.13 查询播放画像信息接口
demo请见StatisticalAnalyzeDemo.showStreamPortrait()方法
5.13.1 构造请求参数
Copied!
ShowStreamPortraitRequest request = new ShowStreamPortraitRequest()
.withPlayDomain("play.example.huawei.com")
.withTime("20200904");
5.13.2 发送请求
Copied!
ShowStreamPortraitResponse response = client.showStreamPortrait(request);
5.13.3 接口及参数说明
请见 查询播放画像信息接口
直播服务数据统计分析场景示例(Java版本)
1. 简介
华为云提供了直播服务端SDK,您可以直接集成服务端SDK来调用直播的相关API,从而实现对直播服务的快速操作。该示例展示了如何通过java版SDK进行数据统计分析。
2. 开发前准备
3. 安装SDK
您可以通过Maven方式获取和安装SDK,首先需要在您的操作系统中下载并安装Maven ,安装完成后您只需要在Java项目的pom.xml文件中加入相应的依赖项即可。
使用服务端SDK前,您需要安装“huaweicloud-sdk-core”和“huaweicloud-sdk-live”,具体的SDK版本号请参见 SDK开发中心 。
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.v2.LiveClient; // 导入待请求接口的request和response类 (以获取实时在线人数接口为例) import com.huaweicloud.sdk.live.v2.model.ListLiveStreamsOnlineRequest; import com.huaweicloud.sdk.live.v2.model.ListLiveStreamsOnlineResponse; // 导入服务区域枚举 import com.huaweicloud.sdk.live.v2.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请见StatisticalAnalyzeDemo.listBandwidthDetail()方法
5.1.1 构造请求参数
ListBandwidthDetailRequest request = new ListBandwidthDetailRequest() .withPlayDomains(Arrays.asList("play.example.huawei.com")) .withApp("live") .withIsp(Arrays.asList("CMCC")) .withInterval(ListBandwidthDetailRequest.IntervalEnum.NUMBER_300);
5.1.2 发送请求
ListBandwidthDetailResponse response = client.listBandwidthDetail(request);
5.1.3 接口及参数说明
请见 查询播放带宽趋势接口
5.2 查询播放流量趋势接口
demo请见StatisticalAnalyzeDemo.listDomainTrafficDetail()方法
5.2.1 构造请求参数
ListDomainTrafficDetailRequest request = new ListDomainTrafficDetailRequest() .withPlayDomains(Arrays.asList("play.example.huawei.com")) .withApp("live") .withIsp(Arrays.asList("CMCC")) .withInterval(300);
5.2.2 发送请求
ListDomainTrafficDetailResponse response = client.listDomainTrafficDetail(request);
5.2.3 接口及参数说明
请见 查询播放带宽趋势接口
5.3 查询播放带宽峰值接口
demo请见StatisticalAnalyzeDemo.listDomainBandwidthPeak()方法
5.3.1 构造请求参数
ListDomainBandwidthPeakRequest request = new ListDomainBandwidthPeakRequest() .withPlayDomains(Arrays.asList("play.example.huawei.com")) .withApp("live") .withIsp(Arrays.asList("CMCC"));
5.3.2 发送请求
ListDomainBandwidthPeakResponse response = client.listDomainBandwidthPeak(request);
5.3.3 接口及参数说明
请见 查询播放带宽峰值接口
5.4 查询播放流量汇总接口
demo请见StatisticalAnalyzeDemo.listDomainTrafficSummary()方法
5.4.1 构造请求参数
ListDomainTrafficSummaryRequest request = new ListDomainTrafficSummaryRequest() .withPlayDomains(Arrays.asList("play.example.huawei.com")) .withApp("live") .withIsp(Arrays.asList("CMCC"));
5.4.2 发送请求
ListDomainTrafficSummaryResponse response = client.listDomainTrafficSummary(request);
5.4.3 接口及参数说明
请见 查询播放流量汇总接口
5.5 查询观众趋势接口
demo请见StatisticalAnalyzeDemo.listUsersOfStream()方法
5.5.1 构造请求参数
ListUsersOfStreamRequest request = new ListUsersOfStreamRequest() .withPlayDomain("play.example.huawei.com") .withApp("live") .withIsp(Arrays.asList("CMCC")) .withInterval(ListUsersOfStreamRequest.IntervalEnum.NUMBER_300);
5.5.2 发送请求
ListUsersOfStreamResponse response = client.listUsersOfStream(request);
5.5.3 接口及参数说明
请见 查询观众趋势接口
5.6 查询直播拉流HTTP状态码接口
demo请见StatisticalAnalyzeDemo.listQueryHttpCode()方法
5.6.1 构造请求参数
ListQueryHttpCodeRequest request = new ListQueryHttpCodeRequest() .withPlayDomains(Arrays.asList("play.example.huawei.com")) .withCode(Arrays.asList("200"));
5.6.2 发送请求
ListQueryHttpCodeResponse response = client.listQueryHttpCode(request);
5.6.3 接口及参数说明
请见 查询直播拉流HTTP状态码接口
5.7 查询转码用量接口
demo请见StatisticalAnalyzeDemo.listTranscodeData()方法
5.7.1 构造请求参数
ListTranscodeDataRequest request = new ListTranscodeDataRequest() .withPublishDomain("publish.example.huawei.com") .withStartTime("2020-08-18T07:20:40Z") .withEndTime("2020-08-18T10:20:40Z");
5.7.2 发送请求
ListTranscodeDataResponse response = client.listTranscodeData(request);
5.7.3 接口及参数说明
请见 查询转码用量接口
5.8 查询录制用量接口
demo请见StatisticalAnalyzeDemo.listRecordData()方法
5.8.1 构造请求参数
ListRecordDataRequest request = new ListRecordDataRequest() .withStartTime("2020-08-18T07:20:40Z") .withEndTime("2020-08-18T10:20:40Z");
5.8.2 发送请求
ListRecordDataResponse response = client.listRecordData(request);
5.8.3 接口及参数说明
请见 查询录制用量接口
5.9 查询截图用量接口
demo请见StatisticalAnalyzeDemo.listSnapshotData()方法
5.9.1 构造请求参数
ListSnapshotDataRequest request = new ListSnapshotDataRequest() .withPublishDomain("publish.example.huawei.com") .withStartTime("2020-08-18T07:20:40Z") .withEndTime("2020-08-18T10:20:40Z");
5.9.2 发送请求
ListSnapshotDataResponse response = client.listSnapshotData(request);
5.9.3 接口及参数说明
请见 查询截图用量接口
5.10 查询上行带宽数据接口
demo请见StatisticalAnalyzeDemo.showUpBandwidth()方法
5.10.1 构造请求参数
ShowUpBandwidthRequest request = new ShowUpBandwidthRequest() .withPublishDomains(Arrays.asList("publish.example.huawei.com")) .withStartTime("2020-08-18T07:20:40Z") .withEndTime("2020-08-18T10:20:40Z");
5.10.2 发送请求
ShowUpBandwidthResponse response = client.showUpBandwidth(request);
5.10.3 接口及参数说明
请见 查询上行带宽数据接口
5.11 查询域名维度推流路数接口
demo请见StatisticalAnalyzeDemo.showStreamCount()方法
5.11.1 构造请求参数
ShowStreamCountRequest request = new ShowStreamCountRequest() .withPublishDomains(Arrays.asList("publish.example.huawei.com")) .withStartTime("2020-08-18T07:20:40Z") .withEndTime("2020-08-18T10:20:40Z");
5.11.2 发送请求
ShowStreamCountResponse response = client.showStreamCount(request);
5.11.3 接口及参数说明
请见 查询域名维度推流路数接口
5.12 查询历史推流列表接口
demo请见StatisticalAnalyzeDemo.listHistoryStreams()方法
5.12.1 构造请求参数
ListHistoryStreamsRequest request = new ListHistoryStreamsRequest() .withDomain("publish.example.huawei.com") .withApp("live") .withLimit(10) .withOffset(0);
5.12.2 发送请求
ListHistoryStreamsResponse response = client.listHistoryStreams(request);
5.12.3 接口及参数说明
请见 查询历史推流列表接口
5.13 查询播放画像信息接口
demo请见StatisticalAnalyzeDemo.showStreamPortrait()方法
5.13.1 构造请求参数
ShowStreamPortraitRequest request = new ShowStreamPortraitRequest() .withPlayDomain("play.example.huawei.com") .withTime("20200904");
5.13.2 发送请求
ShowStreamPortraitResponse response = client.showStreamPortrait(request);
5.13.3 接口及参数说明
请见 查询播放画像信息接口
6. FAQ
暂无
7. 参考
更多信息请参考 直播服务文档
8. 修订记录