iOS swift5 AWS直播 WebRTC SDK for iOS Kinesis Video Streams

文章目录

1.官方文档

WebRTC SDK for iOS - AWS

2.github地址

Amazon Kinesis Video iOS WebRTC Sample - github

3.具体操作(本人已调试成功,并成功集成到项目里)

3.1 下载官方demo,并且按官方文档的步骤来,跑通demo,在demo中可以正常直播

  • 注意
  • demo需要注册,登录,登录成功后再点击直播

3.2 看懂demo里的代码后,将demo里的代码移植到自己的项目里

  • 如下,可以将demo里的Podfile文件直接拷贝到自己项目的Podfile文件里
swift 复制代码
# Uncomment the next line to define a global platform for your project
 platform :ios, '13.0'

target 'XXX' do
  # Comment the next line if you don't want to use dynamic frameworks
  use_frameworks!

    # Pods for XXX
    pod 'SnapKit'
    pod 'Moya'
    pod 'IQKeyboardManagerSwift'
    pod 'SmartCodable'
    # pod 'XHToastSwift'
  # AWS
    pod 'AWSCognitoIdentityProvider'
    pod 'AWSMobileClient'
    pod 'CommonCryptoModule'
    pod 'AWSKinesisVideo'
    pod 'AWSKinesisVideoSignaling'
    pod 'GoogleWebRTC', '~> 1.1'
    pod 'Starscream', '~> 3.0'

end

# AWS
post_install do |installer|
    installer.generated_projects.each do |project|
        project.targets.each do |target|
            target.build_configurations.each do |config|
                config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '13.0'
            end
        end
    end
    installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
            config.build_settings["ONLY_ACTIVE_ARCH"] = "NO"
        end
    end
    installer.pods_project.build_configurations.each do |config|
        config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64"
        config.build_settings["ONLY_ACTIVE_ARCH"] = "YES"
        config.build_settings["IPHONEOS_DEPLOYMENT_TARGET"] = $iOSVersion
    end
end
  • 如下,是demo能正常直播时的打印log,我选的是Connect as Viewer
swift 复制代码
经过:signalClientDidConnect(_:)
经过:present(self.vc
经过:Generated local candidate
经过:Generated local candidate
经过:Generated local candidate
经过:Generated local candidate
经过:Generated local candidate
经过:Generated local candidate
经过:Generated local candidate
经过:Generated local candidate
经过:Generated local candidate
经过:Generated local candidate
经过:Generated local candidate
经过:Generated local candidate
经过:Generated local candidate
经过:Generated local candidate
经过:Generated local candidate
经过:Received remote candidate from []
经过:Received remote sdp from []
经过:WebRTC checking state
经过:Generated local candidate
经过:Generated local candidate
经过:Setting remote sdp and sending answer.
经过:Received remote candidate from []
经过:Generated local candidate
经过:Generated local candidate
经过:Generated local candidate
经过:Generated local candidate
经过:WebRTC connected/completed state
  • 需要signalClientDidConnect后再加载直播界面,所以下面的代码中要等2秒
swift 复制代码
        // Create the video view
        let seconds = 2.0
        DispatchQueue.main.asyncAfter(deadline: .now() + seconds) {
            self.updateConnectionLabel()
            self.vc = VideoViewController(webRTCClient: self.webRTCClient!, signalingClient: self.signalingClient!, localSenderClientID: self.localSenderId, isMaster: self.isMaster, mediaServerEndPoint: endpoints["WEBRTC"] ?? nil)
            print("经过:present(self.vc")
            self.present(self.vc!, animated: true, completion: nil)
        }
swift 复制代码
extension ChannelConfigurationViewController: SignalClientDelegate {
    func signalClientDidConnect(_: SignalingClient) {
        signalingConnected = true
        print("经过:\(#function)")
    }
  • 在我自己的项目里我没有等2秒,直接连上后再加载直播界面
swift 复制代码
extension VideoVC: SignalClientDelegate {
    func signalClientDidConnect(_: SignalingClient) {
        MyPrint("经过:\(#function)")
        signalingConnected = true
        //必须要连接上后再加载视频
        loadVideoView()
    }
相关推荐
换个昵称都难9 小时前
webrtc QOS-RemoteBitrateEstimator接收端带宽估计(1)
webrtc
Digitally10 小时前
如何高效地将文件从电脑传输到 iPad:6 种简单方法
ios·电脑·ipad
换个昵称都难10 小时前
webrtc QOS-RemoteBitrateEstimator接收端带宽估计-四个实例(2)
webrtc
萤萤七悬14 小时前
【Python笔记】AI帮封装Airtest IOS-WDA touch操作时的factor坐标转换
笔记·python·ios
都在酒里15 小时前
【极致低延时】香橙派部署 MediaMTX 实现 WebRTC 推流,延时仅 500-800ms,比局域网 ffmpeg 拉流快近 10 倍!(附踩坑全记录)
linux·arm开发·ffmpeg·webrtc·orangepi·嵌入式软件
库奇噜啦呼15 小时前
【iOS】源码学习-锁的原理
学习·ios·cocoa
换个昵称都难15 小时前
WebRTC QoS 实战:从原理到弱网优化
开发语言·php·webrtc
小哈机器人16 小时前
Phantom Bridge:一个基于WebRTC的ROS2远程可视化与遥操作工具
机器人·webrtc·数据可视化
Digitally16 小时前
如何通过蓝牙将 iPhone 文件传输到电脑?5 种替代方案
ios·电脑·iphone