适用于 iOS 的 WebRTC 开发工具包 - Kinesis Video Streams

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

适用于 iOS 的 WebRTC 开发工具包

以下 step-by-step 说明描述了如何在 iOS 中下载、构建和运行 Kinesis Video Streams WebRTC SDK 及其相应示例。

在 iOS 中下载 WebRTC 开发工具包

要在 iOS 中下载 WebRTC 开发工具包,请运行以下命令:

$ git clone https://github.com/awslabs/amazon-kinesis-video-streams-webrtc-sdk-ios.git

在 iOS 中构建 WebRTC 开发工具包

完成以下步骤:

  1. 通过KinesisVideoWebRTCDemoApp.xcworkspace打开(路径 amazon-kinesis-video-streams:-/Swift/ .xcworkspace),将 iOS WebRTC SDK 导入 iOS 电脑上的 xCode 集成开发环境 (IDEwebrtc-sdk-ios)。AWSKinesisVideoWebRTCDemoApp

  2. 如果您第一次打开该项目,它会自动构建。如果没有,则开始构建。

    您可能会看到以下错误:

    error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.

    如果您看到此错误,请执行以下操作:

    1. 将当前工作目录更改为 amazon-kinesis-video-streams-webrtc-sdk-ios/Swift 并在命令行中运行以下命令:

      pod cache clean --all pod install
    2. 将当前工作目录更改为 amazon-kinesis-video-streams-webrtc-sdk-ios 并在命令行中运行以下命令:

      $ git checkout Swift/Pods/AWSCore/AWSCore/Service/AWSService.m
    3. Build

  3. 配置 Amazon Cognito(用户池和身份池)设置。有关详细步骤,请参阅为 iOS WebRTC 开发工具包配置 Amazon Cognito。这会生成构建 iOS WebRTC 开发工具包所需的身份验证和授权设置。

  4. 在 IDE 中,打开 awsconfiguration.json 文件(来自 /Swift/KVSiOSApp)。此文件如下所示:

    { "Version": "1.0", "CredentialsProvider": { "CognitoIdentity": { "Default": { "PoolId": "REPLACEME", "Region": "REPLACEME" } } }, "IdentityManager": { "Default": {} }, "CognitoUserPool": { "Default": { "AppClientSecret": "REPLACEME", "AppClientId": "REPLACEME", "PoolId": "REPLACEME", "Region": "REPLACEME" } } }

    使用通过运行为 Android WebRTC 开发工具包配置 Amazon Cognito中的步骤生成的值更新 awsconfiguration.json

  5. 在 IDE 中,打开 Constants.swift 文件(来自 /Swift/KVSiOSApp)。此文件如下所示:

    import Foundation import AWSCognitoIdentityProvider let CognitoIdentityUserPoolRegion = AWSRegionType.USWest2 let CognitoIdentityUserPoolId = "REPLACEME" let CognitoIdentityUserPoolAppClientId = "REPLACEME" let CognitoIdentityUserPoolAppClientSecret = "REPLACEME" let AWSCognitoUserPoolsSignInProviderKey = "UserPool" let CognitoIdentityPoolID = "REPLACEME" let AWSKinesisVideoEndpoint = "https://kinesisvideo.us-west-2.amazonaws.com" let AWSKinesisVideoKey = "kinesisvideo" let VideoProtocols = ["WSS", "HTTPS"] let ConnectAsMaster = "connect-as-master" let ConnectAsViewer = "connect-as-viewer" let MasterRole = "MASTER" let ViewerRole = "VIEWER" let ClientID = "ConsumerViewer"

    使用通过运行为 Android WebRTC 开发工具包配置 Amazon Cognito中的步骤生成的值更新 Constants.swift

  6. 确保您的 iOS 设备已连接到运行 XCode 的 Mac 计算机。在 XCode 中,选择连接的设备,然后构建并运行 WebRTC iOS 开发工具包。

    此步骤将在 iOS 设备上安装名为 AWSKinesisVideoWebRTCDemoApp 的应用程序。使用此应用程序,您可以验证移动、网络和 IoT 设备客户端之间的实时 WebRTC 音频/视频流式传输。

运行 iOS 示例应用程序

完成以下步骤:

  1. 在您的 iOS 设备上,使用新的(先创建)或现有的 Amazon Cognito 账户打开AWSKinesisVideoWebRTCDemoApp并登录。

  2. 在中 AWSKinesisVideoWebRTCDemoApp,导航到 “信道配置” 页面,然后创建新的信令信道或选择现有信令信道。

    注意

    目前,使用此 SDK 中的示例应用程序,您只能在中AWSKinesisVideoWebRTCDemoApp运行一个信令通道。

  3. (可选)如果您想以查看器身份连接到此通道,请选择唯一的 Client Id (客户端 ID)。仅当多个查看器连接到一个通道时,才需要客户端 ID。这有助于通道的主设备识别各自的查看器。

  4. 选择 AWS 区域 区域,然后选择您是要发送音频数据、视频数据,还是发送两者。

  5. 要验证 peer-to-peer 直播,请执行以下任一操作:

    注意

    确保您在本演示中使用的所有客户端上指定相同的信令通道名称、AWS 区域、查看器 ID 和 AWS 账户 ID。

    • P 在两台 iOS 设备之间进行eer-to-peer 直播:主设备和查看器

      • 使用上述步骤,在两个 iOS 设备上下载、构建和运行 iOS WebRTC 开发工具包。

      • 在一AWSKinesisVideoWebRTCDemoApp台 iOS 设备上以主模式打开(选择启动主模式),开始新会话(信令信道)。

        注意

        目前,任何给定信令通道只能有一个主设备。

      • 在第二台 iOS 设备AWSKinesisVideoWebRTCDemoApp上以查看器模式打开,连接上面步骤中启动的信令频道(会话)(选择 “启动查看器”)。

        验证查看器是否可以看到主设备的音频/视频数据。

    • P 在嵌入式 SDK 主设备和 iOS 设备查看器之间进行eer-to-peer 流式传输

      • 在摄像头设备上,下载、构建 C 中适用于嵌入式设备的 WebRTC 开发工具包 并以主设备模式运行它。

      • 使用上述步骤,在一个 iOS 设备上下载、构建和运行 iOS WebRTC 开发工具包。在此 iOS 设备AWSKinesisVideoWebRTCDemoApp上以查看器模式打开,并确认 iOS 查看器可以看到嵌入式 SDK 主服务器的音频/视频数据。

    • P 在作为主设备的 iOS 设备和作为查看器的网络浏览器之间进行eer-to-peer 流式传输

      • 使用上述步骤,在一个 iOS 设备上下载、构建和运行 iOS WebRTC 开发工具包。在此 iOS 设备AWSKinesisVideoWebRTCDemoApp上以主模式打开(选择启动主模式),开始新会话(信令信道)。

      • 下载、构建并以查看者带有 WebRTC SDK 的 Kinesis Video Streams 适用于网络应用程序 JavaScript 身份运行,并验证查看者是否可以看到 Android 主服务器的音频/视频。 JavaScript

为 iOS WebRTC 开发工具包配置 Amazon Cognito

先决条件

  • 我们建议使用 XCode 来检查、编辑和运行应用程序代码。我们推荐最新版本。

  • 在示例代码中,您需要提供亚马逊 Cognito 凭证。

按照以下步骤设置 Amazon Cognito 用户池和身份池。

设置用户池

设置用户池
  1. 登录 Amazon Cognito 控制台并验证区域是否正确。

  2. 在左侧导航栏中,选择 “用户池”。

  3. 用户池部分,选择创建用户池

  4. 完成以下各节:

    1. 第 1 步:配置登录体验-在 Cognito 用户池登录选项部分,选择相应的选项。

      选择下一步

    2. 步骤 2:配置安全要求-选择相应的选项。

      选择下一步

    3. 第 3 步:配置注册体验-选择相应的选项。

      选择下一步

    4. 步骤 4:配置消息传送-选择相应的选项。

      IAM 角色选择字段中,选择现有角色或创建新角色。

      选择下一步

    5. 第 5 步:集成您的应用程序-选择相应的选项。

      在 “初始应用程序客户端” 字段中,选择 “机密客户端”。

      选择下一步

    6. 步骤 6:查看并创建-查看您在前面部分中的选择,然后选择创建用户池

  5. 用户池页面上,选择您刚刚创建的池。

    复制用户池 ID 并记下来以备后用。在awsconfiguration.json文件中,这是CognitoUserPool.Default.PoolId

  6. 选择 “应用程序集成” 选项卡,然后转到页面底部。

  7. 应用程序客户端列表部分,选择您刚刚创建的应用程序客户端名称

    复制客户端 ID 并记下来以备后用。在awsconfiguration.json文件中,这是CognitoUserPool.Default.AppClientId

  8. 出示客户机密并记下来以备后用。在awsconfiguration.json文件中,这是CognitoUserPool.Default.AppClientSecret

设置身份池

设置身份池
  1. 登录 Amazon Cognito 控制台并验证区域是否正确。

  2. 在左侧导航栏中,选择身份池

  3. 选择创建身份池

  4. 配置身份池。

    1. 步骤 1:配置身份池信任-完成以下部分:

      • 用户访问权限-选择经过身份验证的访问权限

      • 经过身份验证的身份源-选择 Amazon Cognito 用户池

      选择下一步

    2. 步骤 2:配置权限-在 “经过身份验证的角色” 部分,填写以下字段:

      • IAM 角色-选择创建新的 IAM 角色

      • IAM 角色名称-输入名称并记下来供后续步骤使用。

      选择下一步

    3. 步骤 3:Connect 身份提供商-在 “用户池详情” 部分填写以下字段:

      • 用户池 ID-选择您之前创建的用户池。

      • 应用程序客户端 ID-选择您之前创建的应用程序客户端 ID。

      选择下一步

    4. 步骤 4:配置属性-在身份池名称字段中键入名称

      选择下一步

    5. 第 5 步:查看并创建-查看您在每个部分中的选择,然后选择创建身份池

  5. 身份池页面上,选择您的新身份池。

    复制身份池 ID 并记下来以备后用。在awsconfiguration.json文件中,这是CredentialsProvider.CognitoIdentity.Default.PoolId

  6. 更新 IAM 角色的权限。

    1. 登录 AWS Management Console,然后使用以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

    2. 在左侧导航栏中,选择 “角色”。

    3. 找到并选择您在上面创建的角色。

      注意

      如果需要,请使用搜索栏。

    4. 选择附加的权限策略。

      选择编辑

    5. 选择 JSON 选项卡,然后将策略替换为以下内容:

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cognito-identity:*", "kinesisvideo:*" ], "Resource": [ "*" ] } ] }

      选择下一步

    6. 如果尚未选中 “将此新版本设为默认版本” 旁边的复选框。

      选择保存更改