

# IVS 回放器 SDK：JW 回放器集成
<a name="player-jwplayer"></a>

本文档介绍了 Amazon Interactive Video Service (IVS) JW 播放器集成中最重要的功能。

**JW 播放器集成的最新版本：**1.51.0（[发布说明](https://docs.aws.amazon.com/ivs/latest/LowLatencyUserGuide/release-notes.html#apr16-26-player-web-ll)）

## 开始使用
<a name="jwplayer-getting-started"></a>

Amazon IVS 对 JW 播放器的支持是通过提供商实施的。Amazon IVS 提供程序仅在 JW 播放器的 Web 播放器上受支持。提供程序是通过脚本标签加载的，任何需要 Amazon IVS 提供程序播放的流都必须使用播放列表中的 `type: 'ivs'` 进行标记。Amazon IVS 支持 JW 播放器版本 8.18.4 及更高版本。

### 设置
<a name="jwplayer-getting-started-setup"></a>

在这些说明中,`JW_PLAYER_DIV` 为 JW 播放器实例 `<div>` 的名称，`IVS_STREAM` 是您的 IVS 播放 URL。要设置 Amazon IVS 提供程序并启用播放，请执行以下操作：

1. 包括以下 `script` 标签（适用于播放器集成的最新版本；在本例中为 1.51.0）：

   ```
   <script src="https://player.live-video.net/1.51.0/amazon-ivs-jw-provider.min.js"></script>
   ```

1. 使用 `ivs` 类型来标记 IVS 播放列表项。将 `setup()` 中的 `cast` 值设置为 `null`（因为不支持 Chromecast）。

   ```
   jwplayer(JW_PLAYER_DIV).setup({
      playlist: [{
         file:IVS_STREAM,
         type: 'ivs',
      }]
   });
   ```

1. 如果您希望引用底层 Amazon IVS 播放器进行 Amazon IVS 播放器 API 调用，或者您想要引用 Amazon IVS 特定枚举以进行回调处理，请将侦听器添加到 `'providerPlayer'` 事件：

   ```
   jwplayer(JW_PLAYER_DIV).on('providerPlayer', function (player) {
      // player object has 'ivsPlayer' and 'ivsEvents' properties
      // ...callback code...
   });
   ```

### 示例代码
<a name="jwplayer-getting-started-code"></a>

在此示例中，`JW_PLAYER_LIB` 是指向您的 JW 播放器库脚本的 URL，`IVS_STREAM` 是您的 IVS 播放 URL。

```
<!DOCTYPE html>
<html lang="en">
<head>
   <script src=JW_PLAYER_LIB></script>
   <script src="https://player.live-video.net/1.51.0/amazon-ivs-jw-provider.min.js"></script>
</head>
<body>
   <div id='player'></div>
   <script>
      // set default values for ivsPlayer and ivsEvents
      var ivsPlayer = {};
      var ivsEvents = {};

      // define our player setup
      const ivsConfig = {
         playlist: [{
            file: IVS_STREAM,
            type: 'ivs',
         }]
      };

      jwplayer('player')
         .setup(ivsConfig)
         .on('providerPlayer', function (player) {
            console.log('Amazon IVS Player: ', player.ivsPlayer);
            console.log('Amazon IVS Player Events: ', player.ivsEvents);

            // store the reference to the Amazon IVS Player
            ivsPlayer = player.ivsPlayer;
            // store the reference to the Amazon IVS Player Events
            ivsEvents = player.ivsEvents;
         });
   </script>
</body>
</html>
```

## Events
<a name="jwplayer-events"></a>

要收听标准 JW 播放器事件，请使用 JW 播放器的[开启](https://docs.jwplayer.com/players/docs/jw8-reference#event-listening-with-the-jwp-api)功能。

要收听特定于 Amazon IVS 的事件，或者添加和删除 Amazon IVS Web 播放器上的事件侦听器，您必须收听 `'providerPlayer'` 事件来获取对 Amazon IVS 播放器的引用，然后添加侦听事件。例如：

```
// store a default value for ivsPlayer
var ivsPlayer = {};

// store references to the Amazon IVS Player and Amazon IVS Events:
jwplayer(JW_PLAYER_DIV).on('providerPlayer', function (player) {
   ivsPlayer = player.ivsPlayer;
});

// set up event listening
ivsPlayer.addEventListener(event, callback);
ivsPlayer.removeEventListener(event, callback);
```

其中 `callback` 是您定义的回调，`event` 为以下值之一：`PlayerEventType`、`PlayerState` 或 `ErrorType`。有关事件的更多信息，请参阅 [Amazon IVS 回放器开发工具包：Web 参考](https://aws.github.io/amazon-ivs-player-docs/1.51.0/web/)。

`'providerPlayer'` 事件由 JW 播放器发出，并且您注册的回调将收到一个包含以下字段的对象：


| 字段 | 描述 | 
| --- | --- | 
| `ivsPlayer` | 返回底层 Amazon IVS 播放器实例。完整的 Amazon IVS 播放器 Web API 可通过此实例获得。我们建议尽可能使用基本的 JW 播放器播放 API，并且仅使用此功能访问特定于 Amazon IVS 的功能。您可能需要在 Amazon IVS 播放器实例上访问的最常见函数是 `addEventListener()` 和 `removeEventListener()`。 | 
| `ivsEvents` | 返回带有 `PlayerEventType`、`PlayerState` 和 `ErrorType` 字段的对象，这些字段映射到其关联的 Amazon IVS 特定枚举。有关更多信息，请参阅 [Amazon IVS 回放器开发工具包：Web 参考](https://aws.github.io/amazon-ivs-player-docs/1.51.0/web/)。 | 

## 错误
<a name="jwplayer-errors"></a>

对于常规 JW 播放器错误，请使用 JW 播放器的[启用](https://docs.jwplayer.com/players/docs/jw8-reference#event-listening-with-the-jwp-api)功能来侦听错误事件。

对于特定于 Amazon IVS 的错误，请在 Amazon IVS 播放器上侦听其自身的错误：

```
// set default values for ivsPlayer and ivsEvents
var ivsPlayer = {};
var ivsEvents = {};

// store references to the Amazon IVS Player and Amazon IVS Events
jwplayer(JW_PLAYER_DIV).on('providerPlayer', function (player) {
   ivsPlayer = player.ivsPlayer;
   ivsEvents = player.ivsEvents;
});

// set up event listening:
let playerEvent = ivsEvents.PlayerEventType;
ivsPlayer.addEventListener(playerEvent.ERROR, callback);
```

回调将接收带有以下字段的对象：


| 字段 | 描述 | 
| --- | --- | 
| `type` | 错误类型。对应于 `ErrorType` 事件。有关更多信息，请参阅 [Amazon IVS 回放器 SDK：Web 参考](https://aws.github.io/amazon-ivs-player-docs/1.51.0/web/)。 | 
| `code` | 错误代码。 | 
| `source` | 错误源。 | 
| `message` | 人类可读的错误消息。 | 

## 内容安全策略
<a name="jwplayer-content-security-policy"></a>

Amazon IVS 提供程序 API 配置为在使用内容安全策略 (CSP) 的页面上工作。请参阅 [IVS 播放器 SDK：Web 指南](web-content-security-policy.md) 中的“使用内容安全策略”章节。

## 限制
<a name="jwplayer-limitations"></a>

此提供程序不支持转换。如果您在 JW 播放器控制面板中启用了转换功能，则可以在调用 `setup()` 时通过将 `cast` 设置为 `null` 禁用该功能。这隐藏了转换按钮。