前言

anyRTC 提供互动连麦的场景,演示了如何通过 anyRTC云服务,并配合 anyRTC RTC SDK、anyRTC RTM SDK,快速实现连麦社交的场景。

方案选择:

  • RTC实时互动
  • 客户端推流到CDN
  • 服务端推流到CDN

场景实现

一、视频互动连麦

效果预览

App Store 体验

视频互动连麦

源码下载

点击跳转 Github

二、音频互动连麦

效果预览

App Store 体验

音频互动连麦

源码下载

点击跳转 Github

开发环境

  • 开发工具:Xcode12 真机运行

  • 开发语言:Swift

  • 实现:连麦互动,包含推拉流、连麦、聊天等。

核心代码

实例化 SDK 对象

    func initializeEngine() {// init ARtcEngineKitrtcKit = ARtcEngineKit.sharedEngine(withAppId: UserDefaults.string(forKey: .appid)!, delegate: self)rtcKit.setChannelProfile(.liveBroadcasting)rtcKit.enableVideo()if infoVideoModel.isBroadcaster {rtcKit.setClientRole(.broadcaster)let videoCanvas = ARtcVideoCanvas()videoCanvas.view = broadcasterVideo.renderViewrtcKit.setupLocalVideo(videoCanvas)view.insertSubview(broadcasterVideo, at: 0)videoArr.append(broadcasterVideo)// setUp videoConfiglet videoConfig = ARVideoEncoderConfiguration()videoConfig.dimensions = getVideoDimensions(index: infoVideoModel.dimensions)videoConfig.bitrate = 500videoConfig.frameRate = 15rtcKit.setVideoEncoderConfiguration(videoConfig)}// init ARtmKitrtmEngine = ARtmKit.init(appId: UserDefaults.string(forKey: .appid)!, delegate: self)rtmEngine.login(byToken: infoVideoModel.rtmToken, user: UserDefaults.string(forKey: .uid) ?? "0") { (errorCode) in}}

RTC实时互动

    //------------ RTC 实时互动 ------------------func joinChannel() {let uid = UserDefaults.string(forKey: .uid)rtcKit.joinChannel(byToken: infoVideoModel.rtcToken, channelId: infoVideoModel.roomId!, uid: uid) { (channel, uid, elapsed) in// join sucess}}func leaveChannel() {rtcKit.leaveChannel { (stats) inprint("leaveChannel")}}

客户端推流到CDN

    //------------ 客户端推流到 CDN ------------------func initializeStreamingKit() {streamKit = ARStreamingKit()streamKit?.setRtcEngine(rtcKit)streamKit?.setMode(.vidMix)let transCodingUser = ARLiveTranscodingUser()transCodingUser.uid = "0"transCodingUser.rect = broadcasterVideo.frameliveTranscoding.transcodingUsers = [transCodingUser]streamKit?.setLiveTranscoding(liveTranscoding)streamKit?.pushStream(infoVideoModel.pushUrl ?? "")}

服务端推流到CDN

   //------------ 服务端推流到 CDN ------------------func initializeAddPublishStreamUrl() {let transCodingUser = ARLiveTranscodingUser()transCodingUser.uid = UserDefaults.string(forKey: .uid) ?? "0"transCodingUser.rect = broadcasterVideo.frameliveTranscoding.transcodingUsers = [transCodingUser]rtcKit.setLiveTranscoding(liveTranscoding)rtcKit.addPublishStreamUrl(infoVideoModel.pushUrl ?? "", transcodingEnabled: true)}

媒体播放器组件

    //------------ 播放器 -- 游客 ------------------func initializeMediaPlayer() {broadcasterVideo.frame = view.boundsview.insertSubview(broadcasterVideo, at: 0)broadcasterVideo.placeholderView.isHidden = falsemediaPlayer = ARMediaPlayer(delegate: self)mediaPlayer?.setView(broadcasterVideo.renderView)mediaPlayer?.open(infoVideoModel.pullRtmpUrl!, startPos: 0)mediaPlayer?.play()videoLayout()}

SDK 集成方式

方式一:官网获取

https://docs.anyrtc.io/download

方式二:CocoaPods 获取

platform :ios, '9.0'
use_frameworks!target 'Your App' do#anyRTC 音视频库pod 'ARtcKit_iOS', '~> 4.2.2.2'#anyRTC 实时消息库pod 'ARtmKit_iOS', '~> 1.0.1.6'
end

结束语

连麦项目中还存在一些bug和待完善的功能点。仅供参考,欢迎大家fork。有不足之处欢迎大家指出issues。
最后再贴一下 Github开源下载地址 。

视频连麦互动 Github

语音连麦互动 Github

IOS技术分享| 互动连麦场景实现相关推荐

  1. IOS技术分享| anyRTC 互动白板场景实现

    前言 互动白板提供一整套完整的互动白板解决方案,客户端 SDK 覆盖 iOS.Android.Web 等主流平台,同时提供完整的服务端配套功能,可用于在线教育.在线会议.协作办公.在线互动娱乐等场景. ...

  2. ios技术分享| iOS 发布 framework 到 Cocoapods 以及常见问题

    前言 CocoaPods 是一个用来管理 Xcode 依赖库的项目,通过 CocoaPods,我们可以直观集中和 自动化地管理我们项目的第三方库. 本篇文章讲述如何将 framework 发布到 Co ...

  3. iOS技术周报-第28期

    iOS技术周报第28期 访问iOS wiki(www.ios-wiki.com)获得更多内容. 欢迎大家投递关于iOS的新闻.技术.代码等文章,@吴发伟Ted即可. 关注微信公众账号:iOS技术分享 ...

  4. 云信小课堂|5分钟快速实现iOS端PK连麦场景

    Vol. 4 2021年开年,音频社交风靡互联网,语音社交再成风口,直播连麦开启社交新赛道.在实时通信技术不断革新的现状下,直播平台需要不断探索新的方式以满足用户日益增长的需求,直播连麦就是在此背景下 ...

  5. iOS中 UISearchController 搜索栏 UI技术分享

    iOS中 UISearchController 搜索栏 UI技术分享 [objc] view plain copy <p style="margin-top: 0px; margin- ...

  6. 阿里技术分享:电商IM消息平台,在群聊、直播场景下的技术实践

    本文由淘宝消息业务团队李历岷(花名骨来)原创分享,首次发表于公众号"淘系技术",有修订和改动. 1.引言 本文来自淘宝消息业务团队的技术实践分享,分析了电商IM消息平台在非传统IM ...

  7. 腾讯技术分享:微信小程序音视频技术背后的故事

    1.引言 微信小程序自2017年1月9日正式对外公布以来,越来越受到关注和重视,小程序上的各种技术体验也越来越丰富.而音视频作为高速移动网络时代下增长最快的应用形式之一,在微信小程序中也当然不能错过. ...

  8. 淘宝技术分享:手淘亿级移动端接入层网关的技术演进之路

    本文由手机淘宝技术团队原创分享,吴志华(天施).洪海(孤星).陈虓将(仲升)等专家参与了本文创作,首次发表于公众号"淘系技术",收录整理时有修订和改动. 1.引言 移动端网络的优化 ...

  9. 阿里钉钉技术分享:企业级IM王者——钉钉在后端架构上的过人之处

    本文引用了唐小智发表于InfoQ公众号上的"钉钉企业级IM存储架构创新之道"一文的部分内容,收录时有改动,感谢原作者的无私分享. 1.引言 业界的 IM 产品在功能上同质化较高,而 ...

最新文章

  1. LVM逻辑卷轴管理和磁盘配额实验
  2. Android平台利用OpenCL框架实现并行开发初试
  3. StaggeredGridView 实现分析--首次填充过程(一)
  4. PHP基础知识--函数
  5. 编程之美 求数组中的最长递增子序列
  6. 如何创建自定义进度栏
  7. Sharepoin学习笔记—架构系列—07nSharepoint服务(Services)与服务应用程序框架(Service Application Framework) 2
  8. 爬虫python下载电影_python爬虫:抓取下载电影文件,合并ts文件为完整视频
  9. Bootstrap 可切换的标签导航
  10. 【树叶识别】基于matlab BP神经网络树叶类别【含Matlab源码 799期】
  11. 如何不下载百度网盘下载资源
  12. html控制萤石云摄像头转动,怎么控制云台转动 ?
  13. 论文阅读|目标检测之CE-FPN,将通道增强运用到上采样,减少信息丢失,同时添加了通道注意力机制
  14. 01-05.经典市场营销 Marketing公开课《科特勒营销管理》(一)
  15. 总结知识,提高认知--牛腩总结
  16. [LSTM]时间序列预测存在的问题--滑动窗口是一把双刃剑【持续更新】
  17. 本机php环境搭建教程:windows环境下wampserver的配置教程——超级详细
  18. WaaSMedicAgent是什么程序?又叫Windows更新医生服务
  19. 高一职上册计算机技能考试,职高数学高一基础模块上册
  20. cinder(cinderella怎么读英语)

热门文章

  1. ERP咨询顾问必备的7种公关能力
  2. Android OKHttp 可能你从来没用过的拦截器 【实用推荐】
  3. 数值计算与MATLAB微积分
  4. idea 配置文件中的中文与ASCII码互转
  5. APISpace 的 星座配对API
  6. 用python根据生日判断星座_星座生日配对测试爱情,用Python做输入生日,判
  7. 【FineReport企业日常问题 1.0】帆软决策服务端管理员密码忘记怎么办?
  8. 跑过的城市,走过的路
  9. 如何快速构建一套稳定、高效、可靠的网页无插件监控、直播、点播解决方案
  10. win7家庭版和旗舰版区别_Win7 ultimate是什么版本?ultimate是什么意思功能区别介绍!...