直播服务数据统计分析
引导式阅读
Go
直播服务数据统计分析
作者
C***
上架时间
2023-11-14 03:17:07

直播服务数据统计分析场景示例(Java版本)

1. 简介

华为云提供了直播服务端SDK,您可以直接集成服务端SDK来调用直播的相关API,从而实现对直播服务的快速操作。该示例展示了如何通过java版SDK进行数据统计分析。

2. 开发前准备

  • 注册 华为云,并完成 实名认证
  • 具备已备案的域名用于直播推流和播放,并在视频直播控制台 添加推流和播放域名 ,且已完成 域名关联
  • 已具备开发环境 ,支持Java JDK 1.8及其以上版本。
  • 已获取华为云账号对应的Access Key(AK)和Secret Access Key(SK)。请在华为云控制台“我的凭证 > 访问密钥”页面上创建和查看您的AK/SK。具体请参见 访问密钥
  • 已获取直播服务对应区域的项目ID,请在华为云控制台“我的凭证 > API凭证”页面上查看项目ID。具体请参见 API凭证

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.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); }

相关参数说明如下所示:

  • ak:华为云账号Access Key。
  • sk:华为云账号Secret Access Key 。

4.3 初始化直播服务的客户端

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 配置请求参数

以获取实时在线人数接口为例:

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. 修订记录

发布日期 文档版本 修订说明
2020-02-05 1.0 文档首次发布