阅读 238

声网 PK 连麦功能 Android 入门实践 | 掘金技术征文

声网 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 的下载:

之后主要有以下三个步骤:

  1. 将 AppID 填写进 PKConstants 的 MEDIA_APP_ID以及SIGNALING_APP_ID 中

  2. 解压视频通话/视频直播 SDK 包,将其中的 jar 和 so 复制到项目对应文件夹下。

  3. 最后使用 AndroidStudio 打开项目,连接 Android 测试设备,编译并运行。

示例程序主要包括以下一些功能

  1. 开始直播:在首页输入直播频道名,点击“开始直播”按钮,进入直播房间,开始直播和 CDN 推流;

  2. 发起PK:在房间内点击“PK”按钮,并输入“PK房间名”进入PK(需要两个主播同时输入相同的“PK房间名”以进入同一房间);

  3. 退出PK:点击“退出PK”按钮,退出PK模式,返回单主播模式;

  4. 退出房间:点击右上角“离开”按钮,离开直播房间;

  5. 拷贝拉流地址:在直播中可点击“拷贝”按钮,拷贝拉流地址,使用 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

集成注意事项

  1. 单主播模式与 PK 模式切换时一定要先停止原先的推流,再重新开始推流,否则会推流失败

  2. 观众一般需要感知主播模式的改变来更新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 入门初体验。下面我列一些学习资料,希望对大家有帮助。

参考学习资料


Agora SDK 使用体验征文大赛 | 掘金技术征文,征文活动正在进行中

关注下面的标签,发现更多相似文章
评论