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()
    }
相关推荐
shankss8 小时前
GetX 状态管理详解
android·flutter·ios
qq_3106585112 小时前
webrtc源码走读(五)核心引擎层——传输模块
服务器·网络·音视频·webrtc
shankss12 小时前
Flutter 项目启动全流程详解
android·flutter·ios
三十_14 小时前
WebRTC 入门:一分钟理解会议系统的三种架构(Mesh/SFU/MCU)
前端·后端·webrtc
qq_3106585115 小时前
webrtc源码走读(六)核心引擎层——安全模块
服务器·c++·音视频·webrtc
REDcker15 小时前
WebRTC-HTTP 出口协议 (WHEP) draft-murillo-whep-01 中文翻译
网络协议·http·webrtc
qq_3106585115 小时前
webrtc源码走读(七)核心引擎层——Qos模块
服务器·c++·音视频·webrtc
xiejiashu17 小时前
大小仅1M,WebRTC原生SDK(EasyRTC)即将发布,免费
webrtc·webrtc原生sdk·webrtc c sdk·webrtc c++ sdk·webrtc安卓sdk
__WanG1 天前
如何申请 Family Controls 权限
ios·swiftui·权限·应用时间管理
qq_310658512 天前
webrtc源码走读(八)系统接口层
服务器·c++·音视频·webrtc