欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

声网 直播SDK 连麦PK 小结

程序员文章站 2022-06-10 14:09:23
...

概述

项目中若实现视频通话类似功能,目前第三方服务商可选择的有:

  1. 声网
  2. 七牛
1. 直播场景描述

声网 PK 连麦场景针对 CDN 推流场景设计,主要涉及两种模式的切换

  • 单主播模式
    主播可以采用Agora SDK 或者第三方推流工具(比如ijkplayer)推流到 CDN。观众通过 CDN 播放器拉取主播视频流观看直播。
  • 双主播 PK 模式
    两个主播退出 CDN 推流并同时加入同一个声网频道,各自在声网服务端设置双主播的合图(setLiveTranscoding),并通过声网提供的推流接口(addPublishStreamUrl)将合图后的流推送到原先的 CDN 地址。各自的 CDN 观众看到两个主播开始 PK。由于两个 PK 主播各自的 CDN 推流地址未发生改变,CDN 观众端不需要切换 CDN 拉流地址。只要任意一个主播离开声网 PK 频道,另一主播也退出 PK 模式返回普通模式
2. 直播PK原理图

声网 直播SDK 连麦PK 小结

3. 运行DEMO Agora-Online-PK-Android

下载解压后 Agora-Online-PK-Android

  1. 关注调整下gradle和gradle tools的版本号
  2. 然后复制.jar和.so到指定文件夹,见 这篇文章
  3. 切记要正确配置一下
 sourceSets {
        main {
            jniLibs.srcDirs = ['src/main/jniLibs']
//            jniLibs.srcDirs = ['../../../libs']
        }
    }
  1. 还有测试时,输入相同的PK频道房间名字即可
4. 示例程序功能
  • 开始直播:在首页输入直播频道名,点击“开始直播”按钮,进入直播房间,开始直播和 CDN 推流;
  • 发起PK:在房间内点击“PK”按钮,并输入“PK房间名”进入PK(需要两个主播同时输入相同的“PK房间名”以进入同一房间);
  • 退出PK:点击“退出PK”按钮,退出PK模式,返回单主播模式;
  • 退出房间:点击右上角“离开”按钮,离开直播房间;
  • 拷贝拉流地址:在直播中可点击“拷贝”按钮,拷贝拉流地址,使用 CDN 播放器(如 VLC),也可参考我以前一篇文章:直播测试拉流播放器和地址
5. 集成注意点
  1. 单主播模式与 PK 模式切换时一定要先停止原先的推流,再重新开始推流,否则会推流失败
  2. 观众一般需要感知主播模式的改变来更新UI,一般是通过信令通知观众(或者项目中其他消息IM机制)
  3. 由于信令和 CDN 视频流存在时间差(CDN 推流一般存在数秒的延迟),为了更好的用户体验,可以在切换模式时做一个延时动画,让用户忽略这个时间差。也可以通过 CDN 播放器的特有回调(如视频尺寸改变)来感知主播状态的变化
  4. 加入频道正式应用中一般采用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.
}
参考
  1. 这么多连麦方案,到底哪种适合你?
  2. 互动直播介绍
  3. PK 连麦
  4. Agora-Online-PK-Android 声网PK Github地址
  5. 到处都在说直播连麦技术,它们真的能连吗? 介绍了,CDN概念,短板,直播原理等