

# IVS 播放器开发工具包
<a name="player"></a>

要使用 Amazon Interactive Video Service (IVS)，您必须使用 Amazon IVS Player 播放器。该播放器是一个跨平台的软件开发工具包套件，用于播放 Amazon IVS 视频流。旨在利用 Amazon IVS 基础设施，并针对 Amazon IVS 播放进行了优化。

我们唯一可以保证性能的播放器是 Amazon IVS 播放器。为实现低延迟，需使用 Amazon IVS 播放器。

Amazon IVS 播放器的主要功能包括：
+ **低延迟直播功能** – 低延迟是构建良好的交互式用户体验来丰富受众体验的关键组成部分。在播主和观众之间的传输路径中，延迟会逐渐增加，从而降低响应能力。

  端到端延迟是指从摄像机捕获实时流到在观众屏幕上显示出来之间的延迟。Amazon IVS 旨在提供低端到端延迟（5 秒内，具体取决于广播位置和广播者的设置）。*为了实现这种低延迟，需使用 Amazon IVS 播放器*。
+ **跨平台一致性** – 观众可在各种平台上观看广播。从移动设备到 Web 浏览器，Amazon IVS 播放器都为所有观众提供了类似的体验。每个平台都使用相同的播放器函数库，所以这种一致性是可能的。播放器库是 Amazon IVS 基础设施不可或缺的组成部分。使用一个视频堆栈可确保所有视频播放行为（包括低延迟模式、定时元数据、分析、错误跟踪、报告和日志记录）在所有受支持的平台上都能以一致的方式提供。
+ **自适应比特率流式处理 (ABR)** – Amazon IVS 播放器使用针对低延迟环境优化的 ABR 算法。播放器实时测量服务质量和带宽可用性，并调整视频质量和缓冲区级别，以提供不间断的播放。连接质量受到影响时，ABR 切换到较低的比特率；连接质量提高时，则会切换到较高的比特率。
+ **定时元数据** – Amazon IVS 播放器支持*定时元数据*，可用于构建交互式元素，如投票和测验。元数据是描述并提供有关其他数据的信息的一组数据。使用“定时”元数据，时间码会随附视频流的数据片段。在播放过程中，时间码作为基于数据触发操作的提示点，例如：
  + 发送体育赛事的球员统计数据
  + 发送商品详情以进行实时购物
  + 发送问题以进行实时测验
+ **强大的错误处理能力** – 很好地处理瞬态错误可避免观看体验中断。Amazon IVS Player 强大的错误处理能力可测许多潜在的流传输错误，自动切换到替代格式副本。观众可以不间断观看广播，而无需采取任何纠正措施。
+ **易于集成** – Amazon IVS 播放器 API 缩小了 Amazon IVS 客户应用程序和播放器库之间的差距。API 对所有支持的平台都有绑定，使用熟悉的编码环境和技术，播放器可以轻松地集成到应用程序中。通过完全控制 UI 元素，客户可以自定义其应用程序的品牌和呈现方式。

Amazon IVS 回放器不支持使用 Airplay 进行转换，但开发人员可将会话转换到 AVPlayer 来实现 Airplay。不过，AVPlayer 中的延迟要比 Amazon IVS 回放器 SDK 中的延迟高，因此转换不会是无缝的。[此处](https://github.com/aws-samples/sample-for-airplay-on-ivs)提供了如何完成此转换的示例。

使用默认的 Chromecast 接收器应用程序，可以在播放器外部使用 Chromecast 转换。但是，这些应用程序中的延迟要比 Amazon IVS 播放器开发工具包中的延迟高，因此转换不会是无缝的。另请参阅适用于[低延迟直播功能](broadcast.md)和适用于[实时直播功能](https://docs.aws.amazon.com//ivs/latest/RealTimeUserGuide/broadcast.html)的关于 Amazon IVS 广播 SDK 的文档。

## 浏览器和平台要求
<a name="player-browser-platform-requirements"></a>

有关各种浏览器的最新发布版本的详细信息，请参阅：
+ [Chrome 平台状态](https://chromestatus.com/roadmap)
+ [Firefox 版本](https://www.mozilla.org/en-US/firefox/releases/)
+ [Microsoft Edge 发布计划](https://learn.microsoft.com/en-us/deployedge/microsoft-edge-release-schedule)
+ [Safari 发布说明](https://developer.apple.com/documentation/safari-release-notes)

虽然 Amazon IVS 可能适用于某些旧版浏览器，但我们不会修复与旧版浏览器相关的错误。

类似浏览器的环境不支持 IVS 回放器 Web SDK（包括 Video.js 和 Player JW 集成）。这包括原生 WebViews 和支持 Web 应用程序的“10 英尺设备”（电视、游戏机、机顶盒）。如果您不确定下表之外的特定浏览器支持，请联系 IVS 技术支持。

### 桌面浏览器
<a name="player-browser-platform-requirements-desktop"></a>


| 桌面浏览器 | 支持的平台 | 受支持的版本 | 
| --- | --- | --- | 
| Chrome | Windows、macOS  | 两个主要版本（当前版本和最新版本）  | 
| Firefox | Windows、macOS | 两个主要版本（当前版本和最新版本） | 
| 边缘 | （Windows 8.1 和更高版本）  | 44.0 和更高版本<br />（在 [Microsoft Edge Legacy](https://support.microsoft.com/en-us/microsoft-edge/what-is-microsoft-edge-legacy-3e779e55-4c55-08e6-ecc8-2333768c0fb0) 自动质量模式下，仅支持正常延迟播放，而不支持低延迟播放。自动质量模式是指是否已启用 ABR。例如，在 Web 播放器上，请参阅 `setAutoQualityMode`。 | 
| Safari | macOS | 两个主要版本（当前版本和最新版本）<br />（在 Safari for macOS 14 及更高版本的自动质量模式下，IVS 回放器 1.3.0 及以上版本支持低延迟播放。对于 Safari 浏览器和 IVS 回放器的早期版本，仅支持正常延迟播放。请参阅上面的“自动质量模式”。） | 

### 移动浏览器
<a name="player-browser-platform-requirements-mobile"></a>


| 移动浏览器 | 受支持的版本 | 
| --- | --- | 
| iOS 版 Chrome、iOS 版 Safari | 两个主要版本（当前版本和最新版本）<br />（不支持低延迟播放。支持正常延迟播放。此限制条件适用于所有 iOS 浏览器。） <br />（仅播放器 1.3.0 和更高版本支持定时元数据。） | 
| Chrome for iPadOS，Safari for iPadOS | 两个主要版本（当前版本和最新版本）<br />（选择“请求移动网站”时：[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/ivs/latest/LowLatencyUserGuide/player.html) | 
| Android 版 Chrome | 两个主要版本（当前版本和最新版本） | 

### 本机平台
<a name="player-browser-platform-requirements-native"></a>


| 平台 | 受支持的版本 | 支持的设备 | 
| --- | --- | --- | 
| Android | 6.0 和更高版本 | 手机和平板电脑 | 
| iOS | 14\+ | 全部 | 

IVS 至少支持 4 个主要 iOS 版本和 6 个主要 Android 版本。我们当前版本的支持可能会超出这些最低限度。如果主要版本不再受支持，将至少提前 3 个月通过 SDK 发布说明通知客户。

## 减少第三方播放器的延迟
<a name="player-reducing-latency"></a>

**对于基本和标准通道类型**：为了尽可能减少延迟，您必须使用 Amazon IVS 播放器。在第三方播放器（包括 iOS Safari）中，您可以使用以下配置将延迟减少到大约 10 秒：
+ 将编码器（例如 OBS）的关键帧间隔设置为 2 秒或以下。
+ 将 `?keyframeInterval=2` 添加到 RTMP/RTMPS URL。例如：`rtmps://a1b2c3d4e5f6.global-contribute.live-video.net:443/app/sk_us-west-2_abcd1234efgh5678ijkl?keyframeInterval=2`

**注意**：作为 RTMP URL 一部分指定的关键帧间隔必须大于或等于在编码器中配置的值；否则，您可能会遇到播放问题。您可以将该值设置为 2 到 6 之间（含 2 和 6）的任意整数，但是 2 可以实现最低延迟。

**对于高级通道类型**：上述指南不适用。高级通道类型会自动生成关键帧间隔以提高编码效率，无论源编码关键帧间隔设置如何，关键帧之间的间隔最多为 2 秒。

### iOS Safari
<a name="player-reducing-latency-ios-safari"></a>

在 iOS Safari 中，您可以使用 IVS 播放器并将其配置为使用服务工作线程，从而将延迟减少到大约 6-8 秒。请参阅 *Player SDK：Web 指南*中的[设置服务工作线程](https://docs.aws.amazon.com//ivs/latest/LowLatencyUserGuide/web-getting-started.html#web-service-worker)，以了解实现细节和参考示例。

**注意**：要获得最低延迟，需要关键帧间隔设置为 2 秒的 IVS 流。

## 纯音频播放
<a name="player-audio-only-playback"></a>

所有 IVS 通道类型都支持纯音频格式副本。这对于移动应用程序尤为有价值。例如，在移动应用程序中，用户设置应用程序背景来节省带宽时，可以将回放器切换到纯音频格式副本。

对于 ADVANCED-SD 和 ADVANCED-HD 通道，纯音频格式副本会自动包含在多变体播放列表中。对于 BASIC 和 STANDARD 通道，必须将 `?allow_audio_only=true` 查询参数附加到播放 URL 才能启用纯音频格式副本。

注意：IVS 网络回放器 SDK 仅在 1.24.0 及更高版本中支持纯音频播放。

## 支持
<a name="player-support"></a>

如果您的视频流出现播放错误或其他播放问题，请通过播放器 API 确定唯一的播放会话标识符。


| 对于以下版本 Amazon IVS 播放器： | 使用： | 
| --- | --- | 
| Android | `sessionId` 函数 | 
| iOS | `IVSPlayer` 的属性 `sessionId` | 
| Web | `getSessionId` 函数 | 

与 Amazon Support 共享此播放会话标识符。利用它可获得有助于解决问题的信息。

**注意：**播放器在不断改进。请参阅 [Amazon IVS 发布说明](release-notes.md)了解可用版本和已修复问题。如果合适，请在联系支持部门之前更新您的播放器版本，看看这是否解决了您的问题。

### 版本控制
<a name="player-support-versioning"></a>

Amazon IVS 播放器软件开发工具包使用[语义化版本](https://semver.org/)。

在此讨论中，假设：
+ 最新版本是 4.1.3。
+ 先前主要版本的最新版本为 3.2.4。
+ 版本 1.x 最新版本是 1.5.6。

最新版本的次要版本已添加向后兼容的新功能。在本例中，版本 4.2.0 已添加新功能。

最新版本的补丁版本已添加向后兼容、次要错误修复。在这里，版本 4.1.4 已添加次要错误修复。

向后兼容、主要错误修复处理方式不同；将在以下几个版本中添加：
+ 最新版本补丁版本。在本例中是版本 4.1.4。
+ 先前次要版本的补丁版本。在本例中是版本 3.2.5。
+ 最新版本 1.x 版本的补丁版本。在本例中是版本 1.5.7。

主要错误修复由 Amazon IVS 产品团队定义。典型示例包括关键安全更新和客户所需的其他选定修复。

**注意：**在上面的例子中，发布的版本递增但不会跳过任何数字（例如，从 4.1.3 到 4.1.4）。实际上，一个或多个补丁编号可能保留在内部而不发布，因此发布版本可以从 4.1.3 增加到 4.1.6。