Java 实现阿里云直播

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 版权声明:本文首发 http://asing1elife.com ,转载请注明出处。 https://blog.csdn.net/asing1elife/article/details/82788122 ...
版权声明:本文首发 http://asing1elife.com ,转载请注明出处。 https://blog.csdn.net/asing1elife/article/details/82788122

Java 实现阿里云直播

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

更多精彩

官网

阿里云直播-快速入门

准备步骤

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

关键点

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

推流准备

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

拉流准备

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

Java 开发注意点

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

获取推流地址

  1. 此处获取的只是推流地址的房间号及其他请求参数
  2. 完整的推流地址需要加上阿里云直播中心地址用户的产品名称
    • 直播中心地址 http://video-center.alivecdn.com
    • 产品名称[支持自定义] /appName/
  3. vhost 用于接收拉流地址,即申请阿里云直播时准备的直播域名
  4. 此处使用 Java MD5加密 实现字串加密,加密后长度需要是 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. 获取到拉流地址后可直接参照 Java + jQuery 实现阿里云播放器接口 实现播放器的对接
    • 在播放器的的配置中指明 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);
}
目录
相关文章
|
6月前
|
Java 关系型数据库 应用服务中间件
阿里云RDS购买Linux完整过程——安装java环境并跑起来tomcat
阿里云RDS购买Linux完整过程——安装java环境并跑起来tomcat
99 0
|
Java 云计算
阿里云国际站代理商:Java计算当前时间处于某段时间内的第几周、第几个月
@luotuoemo飞机@TG阿里云国际站代理商:Java计算当前时间处于某段时间内的第几周、第几个月,以上就是使用Java代码计算当前时间处于某段时间内的第几周和第几个月的全部内容。通过该篇文章,我们可以了解到如何使用Java的Calendar类以及日期函数来计算时间段内的周数和月数,掌握相应的计算方法和实践技巧。在开发过程中,合理运用这些方法,可以方便地获取时间相关的信息,满足业务需求,提高开发效率。希望本文能对读者在使用阿里云国际站代理商开发Java应用时计算时间段的周数和月数提供一些帮助与启示。
|
6月前
|
弹性计算 前端开发 小程序
微信小程序上传文件至阿里云OSS直传(java后端签名+前端直传)
当前的通用文件上传方式是通过前端上传到服务器,再由服务器转存至对象存储。这种方式在处理小文件时效率尚可,但大文件上传因受限于服务器带宽,速度较慢。例如,一个100MB的文件在5Mbps带宽的阿里云ECS上上传至服务器需160秒。为解决此问题,可以采用后端签名的方式,使微信小程序直接上传文件到阿里云OSS,绕过服务器中转。具体操作包括在JAVA后端引入相关依赖,生成签名,并在微信小程序前端使用这个签名进行文件上传,注意设置正确的请求头和formData参数。这样能提高大文件上传的速度。
1117 1
|
Java Linux Docker
阿里云云效流水线自动化构建Java项目并发布到docker环境
阿里云云效流水线自动化构建Java项目并发布到docker环境
753 0
|
2月前
|
存储 SQL 分布式计算
Java连接阿里云MaxCompute例
要使用Java连接阿里云MaxCompute数据库,首先需在项目中添加MaxCompute JDBC驱动依赖,推荐通过Maven管理。避免在代码中直接写入AccessKey,应使用环境变量或配置文件安全存储。示例代码展示了如何注册驱动、建立连接及执行SQL查询。建议使用RAM用户提升安全性,并根据需要配置时区和公网访问权限。具体步骤和注意事项请参考阿里云官方文档。
|
3月前
|
Java 开发工具
通过Java SDK调用阿里云模型服务
在阿里云平台上,可以通过创建应用并使用模型服务完成特定任务,如生成文章内容。本示例展示了一段简化的Java代码,演示了如何调用阿里云模型服务生成关于“春秋战国经济与文化”的简短文章。示例代码通过设置系统角色为历史学家,并提出文章生成需求,最终处理并输出生成的文章内容。在实际部署前,请确保正确配置环境变量中的密钥和ID,并根据需要调整SDK导入语句及类名。更多详情和示例,请参考相关链接。
|
6月前
|
监控 Java 测试技术
阿里云推出 3.x Java 探针,解锁应用观测与治理的全新姿势
阿里云推出 3.x Java 探针,解锁应用观测与治理的全新姿势
174367 12
|
3月前
|
机器学习/深度学习 存储 缓存
Java本地高性能缓存实践问题之阿里云机器学习团队开源社区的问题如何解决
Java本地高性能缓存实践问题之阿里云机器学习团队开源社区的问题如何解决
|
5月前
|
Java 对象存储
java对接阿里云OSS上传
java对接阿里云OSS上传
377 2
|
5月前
|
Java 对象存储
阿里云OSS上传下载文件java
阿里云OSS上传下载文件java
351 0