声网 PK 连麦方案场景主要是针对 CDN 推流拉流场景设计。
使用场景
声网 PK 连麦场景针对 CDN 推流场景设计,主要涉及单主播模式和双主播 PK 模式两种模式的切换,此外还有可选的观众模式。
单主播模式中,主播可以采用Agora SDK 或者第三方推流工具(比如 ijkplayer)推流到 CDN。观众通过 CDN 播放器拉取主播视频流观看直播。
双主播 PK 模式中,两个主播退出 CDN 推流并同时加入同一个声网频道,各自在声网服务端设置双主播的合图(setLiveTranscoding),并通过声网提供的推流接口(addPublishStreamUrl)将合图后的流推送到原先的 CDN 地址。各自的 CDN 观众看到两个主播开始 PK。
由于两个 PK 主播各自的 CDN 推流地址未发生改变,CDN 观众端不需要切换 CDN 拉流地址。只要任意一个主播离开声网 PK 频道,另一主播也退出 PK 模式返回普通模式。
对于可选的观众模式,观众一般使用第三方 CDN 播放器(比如 ijkplayer)拉取视频流观看直播,本示例程序中并不包含观众模式。
官方文档中给出了声网 PK 连麦方案的架构图:
实现代码和 apk 体验
官方提供了 Android 平台的实现代码,你可以在 GitHub 上下载并进行测试,也可以基于该代码进行扩展。
当然,官方也提供了已经实现的 apk 文件。
运行 Demo
首先,我们可以通过官方给出的代码链接下载 Demo:github.com/AgoraIO/ARD…
下载后进行解压,注意关注一下 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)
对于直播拉流,给大家几个测试地址:
- 香港财经:rtmp://202.69.69.180:443/webcast/bshdlive-pc
- 韩国朝鲜日报:rtmp://live.chosun.gscdn.com/live/tvchosun1.stream
- 湖南卫视:rtmp://58.200.131.2:1935/livetv/hunantv
集成注意事项
-
单主播模式与 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 入门初体验。下面我列一些学习资料,希望对大家有帮助。
参考学习资料
- Demo 地址:github.com/AgoraIO/ARD…
- apk 文件:github.com/AgoraIO-Use…
- 官方文档:github.com/AgoraIO-Use…