声网 PK 连麦方案场景主要是针对 CDN 推流拉流场景设计。git
声网 PK 连麦场景针对 CDN 推流场景设计,主要涉及单主播模式和双主播 PK 模式两种模式的切换,此外还有可选的观众模式。github
单主播模式中,主播能够采用Agora SDK 或者第三方推流工具(好比 ijkplayer)推流到 CDN。观众经过 CDN 播放器拉取主播视频流观看直播。web
双主播 PK 模式中,两个主播退出 CDN 推流并同时加入同一个声网频道,各自在声网服务端设置双主播的合图(setLiveTranscoding),并经过声网提供的推流接口(addPublishStreamUrl)将合图后的流推送到原先的 CDN 地址。各自的 CDN 观众看到两个主播开始 PK。bash
因为两个 PK 主播各自的 CDN 推流地址未发生改变,CDN 观众端不须要切换 CDN 拉流地址。只要任意一个主播离开声网 PK 频道,另外一主播也退出 PK 模式返回普通模式。架构
对于可选的观众模式,观众通常使用第三方 CDN 播放器(好比 ijkplayer)拉取视频流观看直播,本示例程序中并不包含观众模式。工具
官方文档中给出了声网 PK 连麦方案的架构图:post
官方提供了 Android 平台的实现代码,你能够在 GitHub 上下载并进行测试,也能够基于该代码进行扩展。学习
固然,官方也提供了已经实现的 apk 文件。测试
首先,咱们能够经过官方给出的代码连接下载 Demo:github.com/AgoraIO/ARD…gradle
下载后进行解压,注意关注一下 gradle 和 gradle tools 的版本号。注意一下代码配置,这个位置要细致检查,防止出错。
sourceSets {
main {
jniLibs.srcDirs = ['src/main/jniLibs']
// jniLibs.srcDirs = ['../../../libs']
}
}
复制代码
固然,咱们想要运行示例程序,须要先去声网注册帐号,建立本身的测试项目,获取到 AppID。
你也能够在 视频通话/视频直播 SDK 页面进行 SDK 的下载:
以后主要有如下三个步骤:
将 AppID 填写进 PKConstants 的 MEDIA_APP_ID以及SIGNALING_APP_ID 中
解压视频通话/视频直播 SDK 包,将其中的 jar 和 so 复制到项目对应文件夹下。
最后使用 AndroidStudio 打开项目,链接 Android 测试设备,编译并运行。
开始直播:在首页输入直播频道名,点击“开始直播”按钮,进入直播房间,开始直播和 CDN 推流;
发起PK:在房间内点击“PK”按钮,并输入“PK房间名”进入PK(须要两个主播同时输入相同的“PK房间名”以进入同一房间);
退出PK:点击“退出PK”按钮,退出PK模式,返回单主播模式;
退出房间:点击右上角“离开”按钮,离开直播房间;
拷贝拉流地址:在直播中可点击“拷贝”按钮,拷贝拉流地址,使用 CDN 播放器(如 VLC)
对于直播拉流,给你们几个测试地址:
单主播模式与 PK 模式切换时必定要先中止原先的推流,再从新开始推流,不然会推流失败
观众通常须要感知主播模式的改变来更新UI,通常是经过信令通知观众,因为信令和 CDN 视频流存在时间差(CDN 推流通常存在数秒的延迟),为了更好的用户体验,能够在切换模式时作一个延时动画,让用户忽略这个时间差。也能够经过 CDN 播放器的特有回调(如视频尺寸改变)来感知主播状态的变化。
集成时,我就使用了简单 Channel Name 的方式登陆,怎么都不行。后来网上查找解决方案,发现加入频道正式应用中通常采用 Token 模式。
private void joinChannel() {
// 这个null需传入Token
mRtcEngine.joinChannel(null, "demoChannel1", "Extra Optional Data", 0); // if you do not specify the uid, Agora will assign one.
}
复制代码
此处是看了这篇文章找到的问题:blog.csdn.net/zmm911zmm/a…
以上就是个人声网 PK 连麦功能 Android 入门初体验。下面我列一些学习资料,但愿对你们有帮助。