准备步骤创建 阿里云账号根据 流程 完成实名认证,以确保可以使用阿里云相应服务在密钥管理页面获取阿里云访问密钥,AccessKeyId 和 AccessKeySecret开通阿里云直播服务关键点阿里云直播服务端提供了 一系列 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 可在阿里云后端的直播鉴权处获取1// 获取推流地址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);