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

声网 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

实现代码和 apk 体验

官方提供了 Android 平台的实现代码,你能够在 GitHub 上下载并进行测试,也能够基于该代码进行扩展。学习

固然,官方也提供了已经实现的 apk 文件测试

运行 Demo

首先,咱们能够经过官方给出的代码连接下载 Demo:github.com/AgoraIO/ARD…gradle

下载后进行解压,注意关注一下 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 使用体验征文大赛 | 掘金技术征文,征文活动正在进行中

相关文章
相关标签/搜索