博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java 实现阿里云直播
阅读量:6371 次
发布时间:2019-06-23

本文共 2945 字,大约阅读时间需要 9 分钟。

版权声明:本文首发 http://asing1elife.com ,转载请注明出处。 https://blog.csdn.net/asing1elife/article/details/82788122

Java 实现阿里云直播

阿里云播放器直接在线点播视频以及直播技术,此处记录直播实现过程

更多精彩

  • 更多技术博客,请移步

官网

准备步骤

  1. 创建
  2. 根据 完成实名认证,以确保可以使用阿里云相应服务
  3. 在密钥管理页面获取阿里云访问密钥,AccessKeyId 和 AccessKeySecret
  4. 开通阿里云直播服务

关键点

  1. 阿里云直播服务端提供了 ,但如果只是单纯的直播[推流和拉流] ,实际不需要使用这些 API

推流准备

  1. 推流即直播人员进行视频播放的操作,这需要使用推流客户端
  2. 在推流工具中需要指定推流地址、流名称、鉴权密钥
  3. 如果上述信息阿里云验证合法,既可以开始直播,在阿里云后端可以看到正在直播的流信息

拉流准备

  1. 拉流即直播观众通过视频播放器在线获取直播信息,播放器使用 即可,该播放器目前只是阿里云的点播和直播服务
  2. 获取拉流地址后传入播放器,即可开始观看直播

Java 开发注意点

  1. 在阿里云直播的文档中有提供
    • 目前 SDK 中推荐引入的版本号是 2.3.0 ,但其实所有 API 参照的都是最新版 SDK ,最新的版本号可在 找到
  2. 但如果只是单纯的直播[推流和拉流] ,则不需要进行以上操作
  3. 推流的关键点在于
    • 此处介绍的直播鉴权只是说的 auth_key 的拼接和验证规则
    • 完整的推流和拉流地址并不知这些,需要依旧案例参考

获取推流地址

  1. 此处获取的只是推流地址的房间号及其他请求参数
  2. 完整的推流地址需要加上阿里云直播中心地址用户的产品名称
    • 直播中心地址 http://video-center.alivecdn.com
    • 产品名称[支持自定义] /appName/
  3. vhost 用于接收拉流地址,即申请阿里云直播时准备的直播域名
  4. 此处使用 实现字串加密,加密后长度需要是 32 位
  5. 加密串中的 Constants.ALI_LIVE_PRIVATE_KEY 可在阿里云后端的直播鉴权处获取
// 获取推流地址public String getPushUri(String roomName, Long endTime) {
return getRoomName(roomName) + "vhost=" + Constants.ALI_LIVE_PULL_URL + "&" + generateAuthKey(roomName, endTime);}// 房间号private String getRoomName(String roomName) {
return roomName + "?";}// 完整验签串private String generateAuthKey(String roomName, Long endTime) {
return "auth_key=" + endTime + generateUuid() + generateEncryptStr(roomName, endTime);}// 唯一标识private String generateUuid() {
String uuid = "0"; String uid = "0"; return "-" + uuid + "-" + uid + "-";}// 验签密钥private String generateEncryptStr(String roomName, Long endTime) {
String uri = Constants.ALI_LIVE_APP_NAME + roomName; return md5(uri + "-" + endTime + generateUuid() + Constants.ALI_LIVE_PRIVATE_KEY);}

获取拉流地址

  1. 此处获取的拉流地址是完整的,因为拉流地址是直接获取后传入前端的阿里云播放器中
  2. 注意房间名后面加的后缀 .m3u8 用于表示接受的直播视频类型,阿里云官方还提供其他几种类型,可在文档中查看
  3. 拉流地址和推流地址最大的区别在于请求地址的不同,拉流是请求自己提供给阿里云的直播域名,而拉流是请求阿里云的直播中心
  4. 而且推流时需要指定 vhost 告知阿里云直播域名,但拉流时不需要
  5. 获取到拉流地址后可直接参照 实现播放器的对接
    • 在播放器的的配置中指明 isLive: true 表名是直播操作
    • 上述笔记中实现的是点播接口,利用的通过 vid 获取 playAuth 的方式,这不适用于直播
    • 直播需要直接指定 source: url 即可
public String getPullUrl(String roomName, Long endTime) {
roomName += ".m3u8"; return "http://" + Constants.ALI_LIVE_PULL_URL + generateUri(roomName) + generateAuthKey(roomName, endTime);}// 获取请求参数private String generateUri(String roomName) {
return Constants.ALI_LIVE_APP_NAME + getRoomName(roomName);}// 房间号private String getRoomName(String roomName) {
return roomName + "?";}// 完整验签串private String generateAuthKey(String roomName, Long endTime) {
return "auth_key=" + endTime + generateUuid() + generateEncryptStr(roomName, endTime);}// 唯一标识private String generateUuid() {
String uuid = "0"; String uid = "0"; return "-" + uuid + "-" + uid + "-";}// 验签密钥private String generateEncryptStr(String roomName, Long endTime) {
String uri = Constants.ALI_LIVE_APP_NAME + roomName; return md5(uri + "-" + endTime + generateUuid() + Constants.ALI_LIVE_PRIVATE_KEY);}
你可能感兴趣的文章
国内云计算厂商众生相:四大阵营十几家企业生存盘点
查看>>
细说Unicode(一) Unicode初认识
查看>>
Node.js有了新的管理者
查看>>
Java 20年:历史与未来
查看>>
彻底理解Javascript中的原型链与继承
查看>>
腾讯最大规模裁撤中层干部,让贤年轻人
查看>>
如何:强化 TCP/IP 堆栈安全
查看>>
Spring3 MVC中使用Swagger生成API文档
查看>>
FastCGI PHP on Windows Server 2003
查看>>
LimeSDR Getting Started Quickly | LimeSDR上手指南
查看>>
JSP标签JSTL的使用(1)--表达式操作
查看>>
SAP顾问的人脉比技术更为重要
查看>>
FI/CO PA考试试卷
查看>>
汽车介质应用非常严苛?没关系,新技术带来的高精度传感器十分适应!
查看>>
天合光能 - 用计算捕捉“光的能量”
查看>>
使用sysbench压力测试MySQL(一)(r11笔记第3天)
查看>>
css知多少(11)——position
查看>>
【Spring】定时任务详解实例-@Scheduled
查看>>
先有的资源,能看的速度看,不能看的,抽时间看。说不定那天就真的打不开了(转)...
查看>>
哪些领域适合开发微信小程序
查看>>