声网 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 使用体验征文大赛 | 掘金技术征文,征文活动正在进行中

转载于:https://juejin.im/post/5cbc3a6d6fb9a06877394e6b

注意:本项目使用android studio开发,eclipse可能无法直接使用。 简介 RTMPCHybirdEngine是为移动端应用量身打造的基于RTMP和RTC混合引擎的连麦互动流媒体直播系统。通过集成本SDK,只需几个简单API调用,便可实现一套完整的连线麦互动直播流媒体应用。包含了流媒体应用中:『采集->编码->传输->解码->播放->连麦视频互动』的所有步骤。 优势 超低延时 超低内存 无缝连接(原有方案不变的情况,直接嵌入SDK) 文字互动、弹幕消息 人员上下线 多达4人同时在线连麦视频互动 SDK包含 RTC 连麦互动 RTMP 推流器 RTMP 播放器 编译环境 Android Studio 替换RTMPUrlHelper.java文件中的RTMP_PUSH_URL和RTMP_PULL_URL 支持的系统平台 Android 4.0及以上 支持的CPU架构 Android armv7 arm64 项目特点 1,商业级开源代码,高效稳定 2,超小内存占有率,移动直播针对性极致优化,代码冗余率极低 3,iOS全平台适配,硬件编解码可保证99%的可用性 4,接口极简,推流:2个 拉流:2个 5,底层库C 核心库代码风格采用:Google code style 6,极简内核,无需再去深扒复杂的FFMpeg代码 7,实用主义,那些什么坑什么优化等概念请搜索相关文章 8,OpenH264软件编码,FFMpeg软件解码,FAAC/FAAD软件编解码,适配不同系统的硬件编解码统统包含 9,支持SRS、Nginx-RTMP等标准RTMP服务;同时支持各大CDN厂商的接入
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值