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()
    }
相关推荐
2501_916008896 小时前
iOS应用开发工具全面解析:如何选择与优化开发效率
ide·vscode·ios·objective-c·个人开发·swift·敏捷流程
a4493153627 小时前
iPhone Face ID 故障的分层诊断——原深感系统与主板加密配对机制
macos·ios·电脑·cocoa·iphone
白玉cfc7 小时前
【iOS】内存五大分区
macos·ios·cocoa
二流小码农11 小时前
鸿蒙开发:以登录案例了解代码架构MVVM
android·ios·harmonyos
GitLqr12 小时前
别在 Flutter 的 main() 里乱锁屏幕方向,小心 iPad 分屏功能被你搞没了
android·flutter·ios
a44931536216 小时前
iPhone 基带故障诊断——无服务/搜索不到网络的芯片级维修实录
网络·macos·ios·电脑·iphone
Geek-Chow16 小时前
ALB SSL policy conflict (AWS Load Balancer Controller)
网络协议·ssl·aws
某林21217 小时前
ROS2 + WebRTC + MQTT 异构系统架构
架构·系统架构·机器人·硬件架构·webrtc·ros2
Summer-Bright18 小时前
消费者 AI 变现竞争:从“一家独大“到“iOS vs Android“,谁在为 AI 买单?
android·人工智能·ios·ai·自然语言处理·agi