七牛云直播java服务端,新人鉴权访问问题教程

七牛云直播java服务端接入

七牛云直播服务开通准备工作

七牛云申请直播服务操作参考官方文档:
参考地址:
链接: 七牛云官方参考文档.

七牛云java—sdk官方参考案例

参考GitHub地址:
链接: 七牛云官方java参考案例.

运行环境

  1. Jdk 1.8
  2. Gradle-6.4.1

操作第一步

  1. 我是用的SpringBoot + Gradle 框架进行操作的,框架根据自己使用的就行
  2. URL
    RTMP推流地址: client.RTMPPublishURL(domain, hub, streamKey, expireAfterDays)
    RTMP直播地址: RTMPPlayURL(domain, hub, streamKey)
    HLS直播地址: HLSPlayURL(domain, hub, streamKey)
    HDL直播地址: HDLPlayURL(domain, hub, streamKey)
    直播封面地址: SnapshotPlayURL(domain, hub, streamKey)
    Hub
    创建流: hub.create(streamKey)
    查询流: hub.get(streamKey)
    列出流: hub.list(prefix, limit, marker)
    列出正在直播的流: hub.listLive(prefix, limit, marker)
    批量查询直播实时信息: hub.batchLiveStatus(streamTitles)
    Stream
    流信息: stream.info()
    禁用流: stream.disable() / stream.disable(disabledTill)
    解禁流: stream.enable()
    查询直播状态: stream.liveStatus()
    保存直播回放: stream.save(key, start, end) / stream.save(saveOptions)
    保存直播截图: stream.snapshot(snapshotOptions) zzz
    更改流的实时转码规格: stream.updateConverts(profiles)
    查询直播历史: stream.historyRecord(start, end)
  3. 我引入的jar包,仅供参考
// 引入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,官方文档没有说明,被坑三天

配置完KEY,就是改造代码

  1. 找到Client.java
    这边找个方法举例
    官方封装的方法是这样的
/*
        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);
    }

如有侵权请联系删除

邮箱:18827526631@163.com

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读