声网Android
SDK支持两种场景:
-
音视频
通话
-
音视频
直播
如标题所示,本文主要阐述直播相关知识
1.
直播场景描述
声网直播场景针对 CDN 推流场景设计,主要涉及两种模式切换
单主播模式
主播可以采用Agora SDK 或者第三方推流工具(比如ijkplayer
)推流到 CDN。观众通过 CDN 播放器拉取主播视频流观看直播。双主播 PK 模式
两个主播退出 CDN 推流并同时加入同一个声网频道,各自在声网服务端设置双主播的合图(setLiveTranscoding),并通过声网提供的推流接口(addPublishStreamUrl)将合图后的流推送到原先的 CDN 地址。各自的 CDN 观众看到两个主播开始 PK。由于两个 PK 主播各自的 CDN 推流地址未发生改变,CDN 观众端不需要切换 CDN 拉流地址。只要任意一个主播离开声网 PK 频道,另一主播也退出 PK 模式返回普通模式
2.
直播PK原理图
3.
声网直播关键参数
这个包大小要慎重考虑一下
4.
声网直播发版说明:
版本号 | 发版时间 | 改动点 |
---|---|---|
1.12 | 2017年7月25日 | 增加加密模式 |
1.13 | 2017年9月04日 | 关注上下麦回调,关闭语音播放,软编视频属性可控等 |
1.14 | 2017年10月20日 | 提供基础变声,直播秒开优化,Android适配 |
2.0 | 2017年12月06日 | 增加摄像头控制:缩放等,支持服务端踢人,Android模拟器 |
2.1.0 | 2018年3月07日 | 17位主播同时直播连麦,允许自定义视频源, |
2.2.0 | 2018年5月04日 | 大量主播连麦抖屏问题优化等 |
2.2.3 | 2018年7月05日 | 注意动态秘钥机制 |
2.3.0 | 2018年8月31日 | 大版本,改进稳定性 |
2.3.1 | 2018年10月12日 | 视频编码适配 |
2.3.2 | 2019年1月16日 | 抗丢包,兼容性等 |
2.3.3 | 2019年1月24日 | P9华为兼容等 |
2.4.0 | 2019年4月01日 | 新增美颜、变声和混响、缩短了远端视频出图时间等 |
5.
运行DEMO Agora-Online-PK-Android
下载解压后 Agora-Online-PK-Android
- 关注调整下gradle和gradle tools的版本号
- 然后复制.jar和.so到指定文件夹,见 这篇文章
- 切记要正确配置一下
sourceSets {
main {
jniLibs.srcDirs = ['src/main/jniLibs']
// jniLibs.srcDirs = ['../../../libs']
}
}
-
还有测试时,输入相同的PK频道房间名字即可
-
示例程序功能
- 开始直播:在首页输入直播频道名,点击“开始直播”按钮,进入直播房间,开始直播和 CDN 推流;
- 发起PK:在房间内点击“PK”按钮,并输入“PK房间名”进入PK(需要两个主播同时输入相同的“PK房间名”以进入同一房间);
- 退出PK:点击“退出PK”按钮,退出PK模式,返回单主播模式;
- 退出房间:点击右上角“离开”按钮,离开直播房间;
- 拷贝拉流地址:在直播中可点击“拷贝”按钮,拷贝拉流地址,使用 CDN 播放器(如 VLC),也可参考我以前一篇文章:直播测试拉流播放器和地址
6.
集成注意点
- 单主播模式与 PK 模式切换时一定要先
停止原先的推流
,再重新开始推流,否则会推流失败 - 观众一般需要感知主播模式的改变来更新UI,一般是通过
信令通知观众
(或者项目中其他消息IM机制) - 由于信令和 CDN 视频流存在时间差(CDN 推流一般存在数秒的延迟),为了更好的用户体验,可以在切换模式时做一个延时动画,让用户忽略这个时间差。也可以通过 CDN 播放器的特有回调(如视频尺寸改变)来感知主播状态的变化
- 加入频道正式应用中
一般采用Token模式
(我集成时就使用了简单Channel Name的方式登录,结果找了半天bug)
private void joinChannel() {
// 这个null需传入Token
mRtcEngine.joinChannel(null, "demoChannel1", "Extra Optional Data", 0); // if you do not specify the uid, Agora will assign one.
}
7.
参考