新闻资讯

新闻资讯 通知公告

阿里云直播:Java 实现阿里云直播推流在线列表查询(m3u8)

编辑:009     时间:2020-03-02

m3u8查询在线人数的话是需要阿里云客服单独配置的


为了统计HLS直播的在线人数, 我们需要客户端在请求的参数中带上唯一标识用户的uuid,在阿里云cdn使用的默认参数是aliyun_uuid,只要能唯一标识用户的值都可以, 我们推荐使用a2930ac5-f5f1-484b-867a-0bb00575cc5a(如Python中的uuid.uuid4()函数生成)格式的值。

如果您需要配置的话,请确认下您需要配置的直播域名(播流域名),我们后台帮您配置aliyun_uuid这个参数,后续客户端请求的时候用http://<URL>?aliyun_uuid=a29xxx-f5f1-484b-867a-0bbxxxxcc5a 类似这样的形式去请求,每个客户端后面的aliyun_uuid参数都不一样,是唯一值,后端通过aliyun_uuid的值来统计数量。(以上是阿里云客服的回话,客服会顺带的给一个接口的文档,需要的可以联系我,或者找阿里云客服)HLS在线人数查询接口请往下看。


DescribeHlsLiveStreamRealTimeBpsData


查询HLS直播流的实时在线⼈人数和带宽信息。

HLS直播请求的在线⼈人数统计依赖于在m3u8URL后⾯面带⽤用户唯⼀一标识uuid参数。

单次请求最多⽀支持查询100个域名的数据,如果域名字段留留空则查询该账户下所有域名数据


请求参数:

参数                             类型 必须      描述

DomainName              String   否     域名列列表,以逗号分割

Time                          String   是     时间(把当前时间转成UTC格式的哦!!)


返回参数

参数             类型                                 描述
UsageData UsageDataPerDomain[]    HLS流统计数据

Time             String                          时间


数据类型 UsageDataPerDomain

参数                 类型                 描述

DomainName     String             域名

StreamInfos    StreamInfo[]     每个域名HLS流统计数据


数据类型 StreamInfo

参数                 类型                 描述

Infos             Info[]         HLS流多码率统计数据

StreamName   String             流名

数据类型 Info
参数                 类型                 描述
DownFlow         Float                 带宽

Rate                 String                 码率

Online             Float             在线⽤用户数



请求示例例

https://live.aliyuncs.com?Action=DescribeHlsLiveStreamRealTimeBpsData&Time=<Time>

响应示例例
JSON格式


来,上代码


try {
   DescribeHlsLiveStreamRealTimeBpsDataRequest listRequest2 = new DescribeHlsLiveStreamRealTimeBpsDataRequest();
   listRequest2.setDomainName("播流域名(补全)");
   listRequest2.setTime("当前时间的UTC格式(补全)");

   DefaultProfile profile = DefaultProfile.getProfile("regionId(补全)", "acccessKeyId(补全)", "secret(补全)");


   IAcsClient iAcsClient = new DefaultAcsClient(profile);
   DescribeHlsLiveStreamRealTimeBpsDataResponse usageDatasResponse = iAcsClient.getAcsResponse(listRequest2);//获取直播人数       List<DescribeHlsLiveStreamRealTimeBpsDataResponse.UsageDataPerDomain> usageDatas = usageDatasResponse.getUsageData();//获取直播状态        for (DescribeHlsLiveStreamRealTimeBpsDataResponse.UsageDataPerDomain usageData : usageDatas) {     if (usageData.getDomainName().equals("播流域名(补全)")) {
         List<DescribeHlsLiveStreamRealTimeBpsDataResponse.UsageDataPerDomain.StreamInfo> streamInfos = usageData.getStreamInfos();     for (DescribeHlsLiveStreamRealTimeBpsDataResponse.UsageDataPerDomain.StreamInfo streamInfo : streamInfos) {
            System.out.println("时间人数:"+ streamInfo.getInfos().get(0).getOnline());
         }
      }
   }
}catch (Exception e){

}



为大家奉上一个将当前时间转成UTC格式的方法

public static String time() {
Date date = new Date();// 获取当前时间     
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);  int zoneOffset = calendar.get(Calendar.ZONE_OFFSET); int dstOffset = calendar.get(Calendar.DST_OFFSET);
calendar.add(Calendar.MILLISECOND, -(zoneOffset + dstOffset));  long timeInMillis = calendar.getTimeInMillis();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
//System.out.println("df.format(timeInMillis)==="+df.format(timeInMillis)); return df.format(timeInMillis);
}


以上,有不对的地方请联系www.rongsoft.com

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

回复列表

相关推荐