新闻资讯
阿里云直播:Java 实现阿里云直播推流在线列表查询(m3u8)
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
回复列表