Java 实现阿里云直播
Java 实现阿里云直播
阿里云播放器直接在线点播视频以及直播技术,此处记录直播实现过程
更多精彩
- 更多技术博客,请移步 asing1elife’s blog
官网
准备步骤
关键点
- 阿里云直播服务端提供了 一系列 API ,但如果只是单纯的直播[推流和拉流] ,实际不需要使用这些 API
推流准备
- 推流即直播人员进行视频播放的操作,这需要使用推流客户端 第三方推流工具 OBS
- 在推流工具中需要指定推流地址、流名称、鉴权密钥
- 如果上述信息阿里云验证合法,既可以开始直播,在阿里云后端可以看到正在直播的流信息
拉流准备
- 拉流即直播观众通过视频播放器在线获取直播信息,播放器使用 阿里云播放器 即可,该播放器目前只是阿里云的点播和直播服务
- 获取拉流地址后传入播放器,即可开始观看直播
Java 开发注意点
- 在阿里云直播的文档中有提供 Java SDK
- 目前 SDK 中推荐引入的版本号是 2.3.0 ,但其实所有 API 参照的都是最新版 SDK ,最新的版本号可在 阿里云SDK频道 找到
- 但如果只是单纯的直播[推流和拉流] ,则不需要进行以上操作
- 推流的关键点在于 直播鉴权
- 此处介绍的直播鉴权只是说的 auth_key 的拼接和验证规则
- 完整的推流和拉流地址并不知这些,需要依旧案例参考
获取推流地址
- 此处获取的只是推流地址的房间号及其他请求参数
- 完整的推流地址需要加上阿里云直播中心地址和用户的产品名称
- 直播中心地址
http://video-center.alivecdn.com
- 产品名称[支持自定义]
/appName/
- 直播中心地址
-
vhost
用于接收拉流地址,即申请阿里云直播时准备的直播域名 - 此处使用 Java MD5加密 实现字串加密,加密后长度需要是 32 位
- 加密串中的
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); }
获取拉流地址
- 此处获取的拉流地址是完整的,因为拉流地址是直接获取后传入前端的阿里云播放器中
- 注意房间名后面加的后缀
.m3u8
用于表示接受的直播视频类型,阿里云官方还提供其他几种类型,可在文档中查看 - 拉流地址和推流地址最大的区别在于请求地址的不同,拉流是请求自己提供给阿里云的直播域名,而拉流是请求阿里云的直播中心
- 而且推流时需要指定
vhost
告知阿里云直播域名,但拉流时不需要 - 获取到拉流地址后可直接参照 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); }
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Java 通过 HttpConnection 解决 Ajax 请求跨域问题
版权声明:本文首发 http://asing1elife.com ,转载请注明出处。 https://blog.csdn.net/asing1elife/article/details/82788062 Java 通过 HttpConnection 解决 Ajax 请求跨域问题 $.ajax 在访问外部服务器时会出现跨域问题,尝试过很多前端的方式解决都没有效果,最终是使用 Java 发送请求得以解决 更多精彩 更多技术博客,请移步 asing1elife’s blog 包装 Java 发送 Http 请求的工具类 该工具类中包括发送 GET/POST 请求的方法 方法只需要传入请求的地址和参数列表即可 参数列表的格式为 name1=value1&name2=value2 public class HttpUtils { public static String sendGet(String url, String param) { String result = ""; BufferedReader in = null; try { String urlNameString =...
- 下一篇
Java 实现阿里云短信
版权声明:本文首发 http://asing1elife.com ,转载请注明出处。 https://blog.csdn.net/asing1elife/article/details/82788132 Java 实现阿里云短信 阿里云提供一套短信发送的服务可通过 Java 进行对接 更多精彩 更多技术博客,请移步 asing1elife’s blog 官网 短信发送API(SendSms)—阿里云 准备步骤 创建 阿里云账号 根据 流程 完成实名认证,以确保可以使用阿里云相应服务 在密钥管理页面获取阿里云访问密钥,AccessKeyId 和 AccessKeySecret 想要成功发送一条短信需要获取 短信签名 和 短信模版 在项目 pom 中引入对接所需要的 jar 包 <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</artifactId> <version>3.2.2</version> &l...
相关文章
文章评论
共有0条评论来说两句吧...