七牛云申请直播服务操作参考官方文档:
参考地址:
链接: 七牛云官方参考文档.
参考GitHub地址:
链接: 七牛云官方java参考案例.
// 引入jar包,多余的可以删除
compile 'com.qiniu:qiniu-java-sdk:7.2.+'
compile 'commons-codec:commons-codec:1.10'
compile 'org.springframework.boot:spring-boot-starter-web'
compile group:'com.squareup.okhttp3', name:'okhttp', version:'3.2.0'
compile group:'com.google.code.gson', name:'gson', version:'2.6.2'
testCompile 'org.springframework.boot:spring-boot-starter-test'
testImplementation group: 'junit', name: 'junit', version: '4.12'
引入官方提供的工具,多余的可自行删除,主要用Client.java中的方法,主要是官方的工具里没有封装鉴权方法,这边需要自己改造一下
鉴权参考地址:七牛云官方参考鉴权文档.
主要是这里面的KEY,在官方文档没有说清楚,造成鉴权失败,这边跟七牛云技术支持让他们帮忙看,也说不清个所以然,只会让参考这个文档,那个文档,所以发帖说明这个KEY是从哪里来的
在七牛云中时间戳防盗链会有很多地方都会进行设置,cdn加速那块也有时间戳防盗链,开始问七牛云的技术支持问他是不是哪里的key,回复我是的,结果不是那里的,害的浪费时间去处理鉴权;
这个key会有三个地方进行获取,在直播空间中域名管理里面获取,这里会配置三个域名作为播放,RTMP、HLS、HDL,还有一个RTMP推流域名
这里点击操作里的管理
这里设置主密钥跟副密钥,也就是在鉴权时用的key,官方文档没有说明,被坑三天
/*
HLSPlayURL generates HLS play URL
*/
public String HLSPlayURL(String domain, String hub, String streamKey) {
return String.format("http://%s/%s/%s.m3u8", domain, hub, streamKey);
}
我改造的代码,可能不够简洁,这样返回的就是鉴权后的播放地址
/*
HLSPlayURL generates HLS play URL
设置的过期时间戳:expireAfterSeconds
这个就是空间域名里的时间戳防盗链里设置里配置的key: hlsKey
*/
public String HLSPlayURL(String domain, String hub, String streamKey, int expireAfterSeconds, String hlsKey) {
long expire = System.currentTimeMillis() / 1000 + expireAfterSeconds;
String path = "/"+hub+"/"+streamKey+".m3u8";
String expireHex = Long.toHexString(expire);
String toSignStr = String.format("%s%s%s", hlsKey, path, expireHex);
String signedStr = md5ToLower(toSignStr);
return String.format("http://%s/%s/%s.m3u8?sign=%s&t=%s", domain, hub, streamKey,signedStr,expireHex);
}