

# SDK do Reprodutor do IVS: integração com Video.js
<a name="player-videojs"></a>

Este documento descreve as funções mais importantes disponíveis no player do Video.js do Amazon Interactive Video Service (IVS).

**Versão mais recente da integração do Reprodutor do Video.js:** 1.50.0 ([Notas da versão](https://docs.aws.amazon.com/ivs/latest/LowLatencyUserGuide/release-notes.html#mar19-26-player-web-ll))

## Conceitos básicos
<a name="videojs-getting-started"></a>

O suporte do Amazon IVS para Video.js é implementado por meio de uma [tecnologia](https://videojs.com/guides/tech/) do Video.js. Nós fornecemos suporte através de tags de script, bem como através de um módulo npm. O Amazon IVS é compatível com o Video.js 7.6.6 e as versões 7\$1 e 8\$1 posteriores.

Observe que ao instanciar o player, a [opção de fontes](https://videojs.com/guides/options/#sources) do Video.js não é compatível. Em vez disso, instancie o player normalmente e chame a função `src()` do Video.js. Se a reprodução automática estiver ativada, o stream vai começar a ser reproduzido; caso contrário, use `play()` para iniciar a reprodução.

### Demonstração
<a name="videojs-demo"></a>

A demonstração ao vivo a seguir mostra como usar a integração do Video.js com etiquetas de script de nossa rede de distribuição de conteúdo: [integração entre o Amazon IVS Player e Video.js](https://codepen.io/amazon-ivs/pen/NWqewZo/bdc01e977102051eae5fb85482f88276).

### Configurar com tag de script
<a name="videojs-script-tag-setup"></a>

Para configurar a tecnologia do Amazon IVS usando a tag `script`:

1. Inclua a seguinte tag (para a versão mais recente da integração do player).

   ```
   <script src="https://player.live-video.net/1.50.0/amazon-ivs-videojs-tech.min.js"></script>
   ```

1. Registre a tecnologia usando a função `registerIVSTech`:

   ```
   registerIVSTech(videojs);
   ```

   onde `videojs` é o objeto fornecido pelo Video.js.

1. Ao criar uma instância do player, adicione `AmazonIVS` como sua primeira tecnologia na opção `techOrder`.

Ao instanciar o player, a [opção de fontes](https://videojs.com/guides/options/#sources) do Video.js não é compatível. Em vez disso, para definir a origem, instancie o player normalmente e, em seguida, chame a função `src()` do Video.js nele. Se a reprodução automática estiver ativada, o stream vai começar a ser reproduzido; caso contrário, use `play()` para iniciar a reprodução.

### Código de exemplo
<a name="videojs-sample-code"></a>

Neste exemplo, `PLAYBACK_URL` é o stream de origem que você deseja carregar. O exemplo usa a versão mais recente do Player do Amazon IVS.

```
<!doctype html>
<html lang="en">
<head>
    <link href="https://cdnjs.cloudflare.com/ajax/libs/video.js/7.14.3/video-js.css" rel="stylesheet">
    <script src="https://cdnjs.cloudflare.com/ajax/libs/video.js/7.14.3/video.min.js"></script>
    <script src="https://player.live-video.net/1.50.0/amazon-ivs-videojs-tech.min.js"></script>
</head>

<body>
    <div class="video-container">
        <video id="amazon-ivs-videojs" class="video-js vjs-4-3 vjs-big-play-centered" controls autoplay playsinline></video>
    </div>
    <style>
        body {
            margin: 0;
        }

        .video-container {
            width: 640px;
            height: 480px;
            margin: 15px;
        }
    </style>
    <script>
        (function play() {
            // Get playback URL from Amazon IVS API
            var PLAYBACK_URL = '';
            
            // Register Amazon IVS as playback technology for Video.js
            registerIVSTech(videojs);

            // Initialize player
            var player = videojs('amazon-ivs-videojs', {
               techOrder: ["AmazonIVS"]
            }, () => {
               console.log('Player is ready to use!');
               // Play stream
               player.src(PLAYBACK_URL);
            });
        })();
    </script>
</body>
</html>
```

### Configurar com NPM
<a name="videojs-npm-setup"></a>

Para usar o Player do Amazon IVS através do npm: 

1. Instale o pacote npm do [video.js](https://www.npmjs.com/package/video.js/v/7.6.6) ou certifique-se de que seu projeto tem algum outro acesso à biblioteca do Video.js.

1.  Instale o pacote npm do `amazon-ivs-player`:

   ```
   npm install amazon-ivs-player
   ```

1. Quando estiver pronto para registrar a tecnologia do Amazon IVS, importe a função `registerIVSTech`:

   ```
   import { registerIVSTech } from 'amazon-ivs-player';
   ```

1. Registre a tecnologia usando a função `registerIVSTech`:

   ```
   registerIVSTech(videojs, options);
   ```

   em que:
   + `videojs` é o objeto fornecido pelo Video.js.
   + `options` são as opções para a camada de tecnologia do Amazon IVS. As opções com suporte são:
     + `wasmWorker`: URL onde o arquivo `amazon-ivs-wasmworker.min.js` está hospedado.
     + `wasmBinary`: URL onde o arquivo `amazon-ivs-wasmworker.min.wasm` está hospedado.

     Os arquivos de trabalho estão em sua pasta `node_modules/` em `amazon-ivs-player/dist/`. Você precisafazer o host deles, para usar o player do IVS.

1. Ao criar uma instância do player, adicione `AmazonIVS` como sua primeira tecnologia na opção `techOrder`:

   ```
   const player = videojs('videojs-player', {
       techOrder: ["AmazonIVS"]
   });
   ```

### TypeScript
<a name="videojs-typescript"></a>

Se você estiver usando TypeScript, nosso pacote npm inclui os seguintes tipos que podem ser importados e usados.
+ `VideoJSEvents`, que descreve a estrutura retornada de `getIVSEvents()`.
+ `VideoJSIVSTech`, que descreve a interface para uma instância do player que usa a tecnologia `AmazonIVS`. Isso pode ser [intersectado](https://www.typescriptlang.org/docs/handbook/advanced-types.html#intersection-types) com o tipo `VideoJsPlayer` exposto pelo pacote npm [@types/video.js](https://www.npmjs.com/package/@types/video.js).
+ `TechOptions`, que descreve a interface que define as opções de configuração que podem ser enviadas para `registerIVSTech()`.

Para obter mais informações sobre esses tipos, consulte [Amazon IVS Player SDK: Web Reference](https://aws.github.io/amazon-ivs-player-docs/1.50.0/web/) (SDK do Amazon IVS Player: referência para Web).

## Eventos
<a name="videojs-events"></a>

Para atender eventos padrão de Video.js, use a função [on](https://docs.videojs.com/docs/api/player.html#Methodson) do player do Video.js.

Para atender eventos específicos do Amazon IVS, adicione e remova listeners de eventos no player da Web do Amazon IVS:

```
player.getIVSPlayer().addEventListener(event, callback);
player.getIVSPlayer().removeEventListener(event, callback);
```

em que `callback` é um retorno de chamada que você define e `event` é um destes itens: `PlayerEventType` ou `PlayerState`. Para obter informações sobre eventos, consulte [Amazon IVS Player SDK: Web Reference](https://aws.github.io/amazon-ivs-player-docs/1.50.0/web/) (SDK do Amazon IVS Player: referência para Web).

## Erros
<a name="videojs-errors"></a>

Para erros gerais de Video.js, veja o evento `error` genérico no player:

```
player.on("error", callback);
```

Para erros específicos do Amazon IVS, veja no player do Amazon IVS seus próprios erros:

```
let playerEvent = player.getIVSEvents().PlayerEventType;
player.getIVSPlayer().addEventListener(playerEvent.ERROR, callback);
```

O retorno de chamada receberá um objeto com os seguintes campos:


| Campo | Descrição | 
| --- | --- | 
| `type` |  O tipo de erro. Corresponde a eventos `ErrorType`. Para obter mais informações, consulte [Amazon IVS Player SDK: Web Reference](https://aws.github.io/amazon-ivs-player-docs/1.50.0/web/) (SDK do Amazon IVS Player: referência para Web).  | 
| `code` | O código do erro. | 
| `source` | Origem do erro. | 
| `message` | Mensagem de erro legível por humanos. | 

## Plug-ins
<a name="videojs-plugins"></a>

Nós fornecemos um plug-in que cria uma alternância de interface do usuário para qualidades disponíveis. Para usar este plugin, ele deve ser carregado incluindo o arquivo `amazon-ivs-quality-plugin.min.js`, se você estiver usando nossa tecnologia através da seguinte tag `script` (para a versão mais recente do IVS Player): 

```
<script src="https://player.live-video.net/1.50.0/amazon-ivs-quality-plugin.min.js"></script>
```

Se você estiver usando o npm, importe o`registerIVSQualityPlugin` do módulo `amazon-ivs-player`:

```
import { registerIVSQualityPlugin } from 'amazon-ivs-player';
```

Em seguida, depois que você cria uma instância do seu player do Video.js, as seguintes chamadas são necessárias para se registrar e habilitá-la:

```
registerIVSQualityPlugin(videojs); // where videojs is the video.js variable
player.enableIVSQualityPlugin(); // where player is the instance of the videojs player
```

Isso vai criar um botão de menu de interface do usuário que permite selecionar uma qualidade para o stream.

### Plugins e TypeScript
<a name="videojs-plugins-typescript"></a>

Se você estiver usando TypeScript, nosso pacote npm inclui o tipo `VideoJSQualityPlugin` que pode ser importado e usado com o nosso plug-in. Os plug-ins são basicamente mixins, de modo que esta interface de tipo deve ser usada como um [tipo de interseção](https://www.typescriptlang.org/docs/handbook/advanced-types.html#intersection-types) com a Interface de typeScript `VideoJSIVSTech`.

## Política de segurança de conteúdo
<a name="videojs-content-security-policy"></a>

A API do Video.js do Amazon IVS está configurada para funcionar em páginas que usam a Política de segurança de conteúdo (CSP). Consulte a seção “Como trabalhar com a Política de segurança de conteúdo” em [SDK do reprodutor do IVS: guia para a Web](web-content-security-policy.md).

## Funções
<a name="videojs-functions"></a>

### Reprodução
<a name="videojs-functions-playback"></a>

A API do Video.js do Amazon IVS oferece suporte às interfaces necessárias para uso interno pelo framework do Video.js. É provável que a aplicação cliente precise usar esses métodos diretamente, pois o Video.js faz a integração necessária e apresenta uma interface padrão. No entanto, se necessário, uma maneira de acessar os métodos internos do player Video.js e do Amazon IVS é usar o objeto do player Video.js para obter o identificador de objeto necessário para a tecnologia.

Para acessar a API, recupere a instância do seu player de Video.js como faria normalmente:

```
let player = videojs("videoTagId"); //replace videoTagId with your <video> tag’s id
```

Em seguida, você pode chamar funções nessa instância.

Veja a seguir o subconjunto de funções de Video.js que a camada tecnológica do Amazon IVS substitui. Para obter a lista completa das funções do Video.js, consulte a [documentação da API do video.js](https://docs.videojs.com/player).


| Função | Descrição e informações específicas do Amazon IVS | 
| --- | --- | 
| `currentTime` |  Obtém ou define o tempo (em segundos desde o início). Amazon IVS: não recomendamos definir a hora atual para transmissões ao vivo.  | 
| `descartar` | Exclui a instância do player Amazon IVS: também exclui o backend tecnológico do Amazon IVS.  | 
| `duration` | Retorna a duração do vídeo, em segundos. Amazon IVS: para transmissões ao vivo, retorna `Infinity`.  | 
| `balanceamento` | Inicia o carregamento dos dados de `src()`. Amazon IVS: este é um não operacional.  | 
| `jogar` | Reproduz o stream que foi configurado por meio da chamada de `src`. Amazon IVS: se uma transmissão ao vivo foi pausada, isso reproduz a transmissão ao vivo dos quadros mais recentes, em vez de continuar de onde ela foi pausada.   | 
| `Taxa de reprodução` | Obtém ou define a taxa de reprodução de vídeo. 1.0 significa velocidade normal; 0,5, metade da velocidade normal; 2.0, duas vezes a velocidade normal; e assim por diante. Amazon IVS: em uma transmissão ao vivo, um get retorna 1, e um conjunto é ignorado.  | 
| `buscável` | Retorna o `TimeRanges` dos meios de comunicação que podem ser pesquisados. Amazon IVS: para transmissões ao vivo, chamar `end(0)` no valor de retorno (`TimeRange`) retorna infinito.  | 

### Específico do Amazon IVS
<a name="videojs-functions-ivs"></a>

A tecnologia Video.js do Amazon IVS tem funções adicionais para acessar comportamentos específicos dos recursos do Amazon IVS:


| Função | Descrição | 
| --- | --- | 
| `GetivsPlayer` |  Retorna a instância subjacente do player do Amazon IVS. A API da Web completa do player do Amazon IVS está disponível por meio dessa instância. Recomendamos usar a API básica de reprodução de Video.js tanto quanto possível e usar essa função apenas para acessar recursos específicos do Amazon IVS. As funções mais comuns que você provavelmente precisará acessar na instância do Player do Amazon IVS são `setQuality()` e `addEventListener()` / `removeEventListener()` .  | 
| `getIVSEvents` | Retorna um objeto que contém enums específicos do Amazon IVS. Isso é usado para tratar erros específicos do Amazon IVS. Para obter mais informações, consulte [Eventos](#videojs-events) e [Erros](#videojs-errors).  | 

## currentTime
<a name="videojs-currenttime"></a>

Obtém ou define o tempo (em segundos desde o início).

Amazon IVS: não recomendamos definir a hora atual para transmissões ao vivo.

### Assinaturas
<a name="videojs-currenttime-signatures"></a>

```
currentTime
currentTime(time)
```

### Parâmetro
<a name="videojs-currenttime-parameter"></a>


| Parâmetro | Tipo | Descrição | 
| --- | --- | --- | 
| `time` | número |  Se `time` estiver ausente, obtém a hora atual. Se `time` estiver presente, define a reprodução de vídeo para esse tempo.  | 

### Valor de retorno
<a name="videojs-currenttime-return"></a>


| Tipo | Descrição | 
| --- | --- | 
| número |  A hora atual, em segundos desde o início.  | 

## descartar
<a name="videojs-dispose"></a>

Exclui a instância do player.

Amazon IVS: também exclui o backend tecnológico do Amazon IVS.

### Signature
<a name="videojs-dispose-signatures"></a>

```
dispose()
```

### Parâmetros
<a name="videojs-dispose-parameter"></a>

Nenhum

### Valor de retorno
<a name="videojs-dispose-return"></a>

Nenhum

## duration
<a name="videojs-duration"></a>

Retorna a duração do vídeo, em segundos.

Amazon IVS: para transmissões ao vivo, retorna `Infinity`.

### Signature
<a name="videojs-duration-signatures"></a>

```
duration()
```

### Parâmetros
<a name="videojs-duration-parameter"></a>

Nenhum

### Valor de retorno
<a name="videojs-duration-return"></a>


| Tipo | Descrição | 
| --- | --- | 
| número |  A duração do temporizador, em segundos. Para streams ao vivo, esse valor é `Infinity`.  | 

## getIVSEvents
<a name="videojs-getivsevents"></a>

Retorna um objeto que contém enums específicos do Amazon IVS. É usado para tratar erros e eventos específicos do Amazon IVS. Para obter mais informações, consulte:
+ [Eventos](#videojs-events) e [Erros](#videojs-errors) neste documento.
+ [Amazon IVS Player SDK: Web Reference](https://aws.github.io/amazon-ivs-player-docs/1.50.0/web/) (SDK do Amazon IVS Player: referência para Web) para obter mais informações sobre eventos, tipos de erro e origens de erro.

### Signature
<a name="videojs-getivsevents-signatures"></a>

```
getIVSEvents()
```

### Parâmetros
<a name="videojs-getivsevents-parameter"></a>

Nenhum

### Valor de retorno
<a name="videojs-getgetivsevents-return"></a>


| Tipo | Descrição | 
| --- | --- | 
| `object` |  Um objeto com as chaves `PlayerEventType`,`PlayerState` e `ErrorType`, que são mapeadas para suas enumerações associadas.  | 

## GetivsPlayer
<a name="videojs-getivsplayer"></a>

Retorna a instância subjacente do player do Amazon IVS. A API da Web completa do player do Amazon IVS está disponível por meio dessa instância. Recomendamos usar a API básica de reprodução de Video.js tanto quanto possível e usar essa função apenas para acessar recursos específicos do Amazon IVS. As funções mais comuns que você provavelmente precisará acessar na instância do Player do Amazon IVS são `setQuality()` e `addEventListener()` / `removeEventListener()`.

### Signature
<a name="videojs-getivsplayer-signatures"></a>

```
getIVSPlayer()
```

### Parâmetros
<a name="videojs-getivsplayer-parameter"></a>

Nenhum

### Valor de retorno
<a name="videojs-getivsplayer-return"></a>


| Tipo | Descrição | 
| --- | --- | 
| `MediaPlayer` |  A instância criada do player.  | 

## balanceamento
<a name="videojs-load"></a>

Inicia o carregamento dos dados de `src()`.

Amazon IVS: este é um não operacional.

### Signature
<a name="videojs-load-signatures"></a>

```
load()
```

### Parâmetros
<a name="videojs-load-parameter"></a>

Nenhum

### Valor de retorno
<a name="videojs-load-return"></a>

Nenhum

## jogar
<a name="videojs-play"></a>

Reproduz o stream que foi configurado por meio da chamada de `src`.

Amazon IVS: se uma transmissão ao vivo foi pausada, isso reproduz a transmissão ao vivo dos quadros mais recentes, em vez de continuar de onde ela foi pausada.

### Signature
<a name="videojs-play-signatures"></a>

```
play()
```

### Parâmetros
<a name="videojs-play-parameter"></a>

Nenhum

### Valor de retorno
<a name="videojs-play-return"></a>

Nenhum

## Taxa de reprodução
<a name="videojs-playbackrate"></a>

Obtém ou define a taxa de reprodução de vídeo. 1.0 significa velocidade normal; 0,5, metade da velocidade normal; 2.0, duas vezes a velocidade normal; e assim por diante.

Amazon IVS: em uma transmissão ao vivo, um get retorna 1, e um conjunto é ignorado.

### Assinaturas
<a name="videojs-playbackrate-signatures"></a>

```
playbackRate
playbackRate(rate)
```

### Parâmetro
<a name="videojs-playbackrate-parameter"></a>


| Parâmetro | Tipo | Descrição | 
| --- | --- | --- | 
| `rate` | número |  A taxa de reprodução. Valores válidos: no intervalo [0,25, 2.0].  | 

### Valor de retorno
<a name="videojs-playbackrate-return"></a>


| Tipo | Descrição | 
| --- | --- | 
| número |  A taxa de reprodução.  | 

## buscável
<a name="videojs-seekable"></a>

Retorna o `TimeRanges` dos meios de comunicação que podem ser pesquisados.

Amazon IVS: para transmissões ao vivo, chamar `end(0)` no valor de retorno (`TimeRange`) retorna infinito.

### Signature
<a name="videojs-seekable-signatures"></a>

```
seekable()
```

### Parâmetro
<a name="videojs-seekable-parameter"></a>

Nenhum

### Valor de retorno
<a name="videojs-seekable-return"></a>


| Tipo | Descrição | 
| --- | --- | 
| `TimeRange` |  TimeRange da mídia que está disponível para busca.  | 