声网 直播SDK 连麦PK 小结
程序员文章站
2022-06-10 14:09:23
...
声网 直播SDK 连麦PK 小结
概述
项目中若实现视频通话
类似功能,目前第三方服务商可选择的有:
- 声网
- 七牛
1. 直播场景描述
声网 PK 连麦场景针对 CDN 推流场景设计,主要涉及两种模式的切换
-
单主播模式
主播可以采用Agora SDK 或者第三方推流工具(比如ijkplayer
)推流到 CDN。观众通过 CDN 播放器拉取主播视频流观看直播。 -
双主播 PK 模式
两个主播退出 CDN 推流并同时加入同一个声网频道,各自在声网服务端设置双主播的合图(setLiveTranscoding),并通过声网提供的推流接口(addPublishStreamUrl)将合图后的流推送到原先的 CDN 地址。各自的 CDN 观众看到两个主播开始 PK。由于两个 PK 主播各自的 CDN 推流地址未发生改变,CDN 观众端不需要切换 CDN 拉流地址。只要任意一个主播离开声网 PK 频道,另一主播也退出 PK 模式返回普通模式
2. 直播PK原理图
3. 运行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频道房间名字即可
4. 示例程序功能
- 开始直播:在首页输入直播频道名,点击“开始直播”按钮,进入直播房间,开始直播和 CDN 推流;
- 发起PK:在房间内点击“PK”按钮,并输入“PK房间名”进入PK(需要两个主播同时输入相同的“PK房间名”以进入同一房间);
- 退出PK:点击“退出PK”按钮,退出PK模式,返回单主播模式;
- 退出房间:点击右上角“离开”按钮,离开直播房间;
- 拷贝拉流地址:在直播中可点击“拷贝”按钮,拷贝拉流地址,使用 CDN 播放器(如 VLC),也可参考我以前一篇文章:直播测试拉流播放器和地址
5. 集成注意点
- 单主播模式与 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.
}
参考
- 这么多连麦方案,到底哪种适合你?
- 互动直播介绍
- PK 连麦
-
Agora-Online-PK-Android
声网PK Github地址
-
到处都在说直播连麦技术,它们真的能连吗?
介绍了,CDN概念,短板,直播原理等
上一篇: 表单兼容类型设计
下一篇: 告别session jwt使用初尝试
推荐阅读