新闻资讯
Java端获取阿里云视频直播推流和波流教程
近年来,随着网络的发达,直播行业也是混的风生水起,今天小编叫你如何借助阿里云的视频直播功能做一套直播和观看直播的完整流程,让小白也能搞直播!
第一步:首先开通阿里云的视频直播功能,在域名管理处,添加播流域名和推流域名(注意:两域名的直播中心地址要一致!!!!!)
第二步:在播流域名处,关联添加的推流域名,然后在两个域名开启URL鉴权,并记录相应的KEY值
注意:别忘了在播流域名配置跨域访问设置哦!!!
第三步:开始部署java代码:
①在本地项目中引入Jar包
aliyun-java-sdk-live-3.8.0.jar
commons-codec-1.10.jar
hutool-core-4.4.0.jar
②在Java代码中放入自己的 域名,APPname,StreamName,和域名相应的鉴权
获取推流和播流地址:
public Map<String,Object> push(String appName,String streamName) { // 推流域名 String pushDomain = "******"; // 应用名称 String appName = "*********"; // 流名称 String streamName = "*********"; // 推流签名key String pushIdentKey = "********"; // 签名url有效时间 // Integer identUrlValidTime = aliyunLiveConfig.getAliyunLiveIdentUrlValidTime(); // 计算过期时间 String timestamp = String.valueOf(System.currentTimeMillis() / 1000); // 组合推流域名前缀 // rtmp://{pushDomain}/{appName}/{streamName} String rtmpUrl = StrUtil.format("rtmp://{}/{}/{}", pushDomain, appName, streamName); System.out.println(rtmpUrl); // 组合md5加密串 // /{appName}/{streamName}-{timestamp}-0-0-{pushIdentKey} String md5Url = StrUtil.format("/{}/{}-{}-0-0-{}", appName, streamName, timestamp, pushIdentKey); // md5加密 String md5Str = DigestUtils.md5Hex(md5Url); System.out.println(md5Url); System.out.println(md5Str); // 组合最终鉴权过的推流域名 // {rtmpUrl}?auth_key={timestamp}-0-0-{md5Str} String finallyPushUrl = StrUtil.format("{}?auth_key={}-0-0-{}", rtmpUrl, timestamp, md5Str); System.out.println(finallyPushUrl); return Util.result( 0, "操作成功", 1 , finallyPushUrl ); // 返回结果 } 获取播流地址:public Map<String,Object> pull(String appName,String streamName) { // 拉流域名 String pullDomain = "***************"; // 应用名称 String appName = "********"; // 流名称 String streamName = "*******"; // 拉流签名key String pullIdentKey = "**********"; // 签名url有效时间 // Integer identUrlValidTime = aliyunLiveConfig.getAliyunLiveIdentUrlValidTime(); / / 计算过期时间 String timestamp = String.valueOf(System.currentTimeMillis() / 1000); // 组合通用域名 // {pullDomain}/{appName}/{streamName} String pullUrl = StrUtil.format("{}/{}/{}", pullDomain, appName, streamName); // 组合md5加密串 // /{appName}/{streamName}-{timestamp}-0-0-{pullIdentKey} String md5Url = StrUtil.format("/{}/{}-{}-0-0-{}", appName, streamName, timestamp, pullIdentKey); String md5FlvUrl = StrUtil.format("/{}/{}.flv-{}-0-0-{}", appName, streamName, timestamp, pullIdentKey); String md5M3u8Url = StrUtil.format("/{}/{}.m3u8-{}-0-0-{}", appName, streamName, timestamp, pullIdentKey); // md5加密 String md5Str = DigestUtils.md5Hex(md5Url); String md5FlvStr = DigestUtils.md5Hex(md5FlvUrl); String md5M3u8Str = DigestUtils.md5Hex(md5M3u8Url); // 组合三种拉流域名前缀 // rtmp://{pullUrl}?auth_key={timestamp}-0-0-{md5Str} String rtmpUrl = StrUtil.format("rtmp://{}?auth_key={}-0-0-{}", pullUrl, timestamp, md5Str); // http://{pullUrl}.flv?auth_key={timestamp}-0-0-{md5FlvStr} String flvUrl = StrUtil.format("http://{}.flv?auth_key={}-0-0-{}", pullUrl, timestamp, md5FlvStr); // http://{pullUrl}.m3u8?auth_key={timestamp}-0-0-{md5M3u8Str} String m3u8Url = StrUtil.format("http://{}.m3u8?auth_key={}-0-0-{}", pullUrl, timestamp, md5M3u8Str); Map<String, String> urlMap = new HashMap<String, String>(); urlMap.put("rtmpUrl", rtmpUrl); urlMap.put("flvUrl", flvUrl); urlMap.put("m3u8Url", m3u8Url); return Util.result( 0, "操作成功", urlMap.size() , urlMap ); // 返回结果 }到这里,访问我们相应的接口就可以获取推流和播流地址了
推流地址直接复制到 OBS 直播软件中就可以了
播流地址直接复制到阿里云播放器就可以播放了~~~~~
回复列表