As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Reprodução de vídeo com HLS
O HTTP Live Streaming (HLS)
Você pode usar HLS para reprodução ao vivo. Normalmente, a latência é de 3 a 5 segundos, mas pode estar entre 1 e 10 segundos, dependendo do caso de uso, do player e das condições da rede. Você pode usar um player de terceiros (como Video.js
Para ver um stream de vídeo do Kinesis usando HLS, primeiro crie uma sessão de streaming usando. GetHLSStreamingSessionURL Essa ação retorna uma URL (contendo um token de sessão) para acessar a sessão HLS. Em seguida, você pode usar a URL em um player de mídia ou em um aplicativo autônomo para exibir o streaming.
Importante
Nem todas as mídias enviadas para o Kinesis Video Streams podem ser reproduzidas por meio do HLS. Consulte GetHLSStreamingSessionURL os requisitos específicos de upload.
Tópicos
Use o comando AWS CLI para recuperar um URL de sessão de streaming HLS
O procedimento a seguir demonstra como usar o AWS CLI para gerar uma URL de sessão de streaming HLS para um stream de vídeo do Kinesis.
Para obter instruções de instalação, consulte o Guia AWS Command Line Interface do usuário. Após a instalação, configure o AWS CLI com credenciais e região.
Como alternativa, abra o AWS CloudShell terminal, que tem o AWS CLI instalado e configurado. Consulte o Guia do usuário do AWS CloudShell para obter mais informações.
Recupere o endpoint de URL HLS para seu stream de vídeo do Kinesis.
Digite o seguinte no terminal:
aws kinesisvideo get-data-endpoint \ --api-name GET_HLS_STREAMING_SESSION_URL \ --stream-nameYourStreamNameVocê receberá uma resposta parecida com esta:
{ "DataEndpoint": "https://b-1234abcd.kinesisvideo.aws-region.amazonaws.com" }Faça a solicitação de URL da sessão de streaming HLS para esse endpoint retornado.
Você receberá uma resposta parecida com esta:
{ "HLSStreamingSessionURL": "https://b-1234abcd.kinesisvideo.aws-region.amazonaws.com/hls/v1/getHLSMasterPlaylist.m3u8?SessionToken=CiAz...DkRE6M~" }Importante
Não compartilhe nem armazene esse token onde uma entidade não autorizada possa acessá-lo. O token fornece acesso ao conteúdo do stream. Proteja o token com as mesmas medidas que você usaria com suas AWS credenciais.
Você pode usar esse URL e qualquer player HLS para visualizar o fluxo HLS.
Por exemplo, use o VLC media player.
Você também pode reproduzir o HLS Stream inserindo o URL da sessão de streaming HLS na barra de localização dos navegadores Apple Safari ou Microsoft Edge.
Exemplo: use HLS em HTML e JavaScript
O exemplo a seguir mostra como usar o AWS SDK para JavaScript v2 para recuperar uma sessão de streaming HLS para um stream de vídeo do Kinesis e reproduzi-la em uma página da web. O exemplo mostra como reproduzir vídeo nos seguintes players:
Veja o código de exemplo completo
Região da AWS: A região em que seu stream de vídeo do Kinesis está localizado
Nome do stream: o nome do seu stream de vídeo do Kinesis
Modo de reprodução: O modo de reprodução HLS (LIVE, LIVE_REPLAY ou ON_DEMAND)
Tipo de seletor de fragmento: o método usado para selecionar fragmentos (SERVER_TIMESTAMP ou PRODUCER_TIMESTAMP)
Número do fragmento: o número do fragmento inicial (quando aplicável)
Formato do contêiner: o formato do contêiner de mídia (FRAGMENTED_MP4 ou MPEG_TS)
O aplicativo recupera esses valores das caixas de entrada na página HTML e os usa para criar a solicitação de uma sessão de streaming HLS exibida na página.
Passo a passo de código por tópicos:
Importe o AWS SDK JavaScript para navegadores
Na página da web, inclua a tag de script a seguir para importar o AWS SDK para JavaScript v2 no projeto.
<script src="https://cdnjs.cloudflare.com/ajax/libs/aws-sdk/2.490.0/aws-sdk.min.js"></script>
Para obter mais informações, consulte o AWS SDK para obter a JavaScript documentação.
Configurar o cliente Kinesis Video Streams
Para acessar o streaming de vídeo com HLS, primeiro crie e configure o cliente Kinesis Video Streams. Consulte Definindo credenciais em um navegador da Web para outros métodos de autenticação.
const clientConfig = { accessKeyId: 'YourAccessKey', secretAccessKey: 'YourSecretKey', region: 'us-west-2' }; const kinesisVideoClient = new AWS.KinesisVideo(clientConfig);
O aplicativo recupera os valores necessários das caixas de entrada na página HTML.
Recupere o endpoint para reprodução em HLS
Use o cliente Kinesis Video Streams para invocar a GetDataEndpoint API para recuperar o endpoint.
const getDataEndpointOptions = { StreamName: 'YourStreamName', APIName: 'GET_HLS_STREAMING_SESSION_URL' }; const getDataEndpointResponse = await kinesisVideoClient .getDataEndpoint(getDataEndpointOptions) .promise(); const hlsDataEndpoint = getDataEndpointResponse.DataEndpoint;
Esse código armazena o endpoint na hlsDataEndpoint variável.
Configurar o cliente de mídia arquivada Kinesis Video Streams
Na configuração do cliente de mídia arquivada Kinesis Video Streams, especifique o endpoint que você obteve na etapa anterior.
const archivedMediaClientConfig = { accessKeyId: 'YourAccessKey', secretAccessKey: 'YourSecretKey', region: 'us-west-2', endpoint: hlsDataEndpoint }; const kinesisVideoArchivedMediaClient = new AWS.KinesisVideoArchivedMedia(archivedMediaClientConfig);
Recupere o URL da sessão de streaming HLS
Use o cliente de mídia arquivada Kinesis Video Streams para invocar a GetHLSStreamingSessionURL API e recuperar o URL de reprodução do HLS.
const getHLSStreamingSessionURLOptions = { StreamName: 'YourStreamName', PlaybackMode: 'LIVE' }; const getHLSStreamingSessionURLResponse = await kinesisVideoArchivedMediaClient .getHLSStreamingSessionURL(getHLSStreamingSessionURLOptions) .promise(); const hlsUrl = getHLSStreamingSessionURLResponse.HLSStreamingSessionURL;
Exibir o fluxo HLS na página da web
Quando tiver a URL da sessão de streaming HLS, forneça-a para o player de vídeo. O método para fornecer a URL ao player de vídeo é específico ao player usado.
Solução de problemas de HLS
Esta seção descreve os problemas que você pode encontrar ao usar HTTP Live Streaming (HLS) com o Kinesis Video Streams.
Problemas
A recuperação do URL da sessão de streaming HLS foi bem-sucedida, mas a reprodução no player de vídeo apresentou falha
Essa situação ocorre quando o URL de uma sessão de streaming HLS pode ser recuperada com êxito usando GetHLSStreamingSessionURL, mas a reprodução do vídeo falha quando o URL é fornecido a um player de vídeo.
Para solucionar essa situação, tente o seguinte:
-
Determine se o stream de vídeo é reproduzido no console Kinesis Video Streams. Considere qualquer erro que o console mostra.
-
Se a duração de fragmento for menor que um segundo, aumente-a para um segundo. Se a duração do fragmento for muito curta, o serviço poderá limitar o player porque ele está fazendo solicitações de fragmentos de vídeo com muita frequência.
-
Verifique se a URL de cada sessão de streaming HLS está sendo usada por apenas um player. Se mais de um player estiver usando um único URL de sessão de streaming HLS, o serviço poderá receber muitas solicitações e limitá-las.
-
Verifique se o seu player suporta todas as opções que você está especificando para a sessão de streaming HLS. Experimente diferentes combinações de valores para os seguintes parâmetros:
-
ContainerFormat -
PlaybackMode -
FragmentSelectorType -
DiscontinuityMode -
MaxMediaPlaylistFragmentResults
Alguns players de mídia (como HTML5 e players móveis) normalmente oferecem suporte apenas a HLS com o formato de contêiner fMP4. Outros reprodutores de mídia (como Flash e reprodutores personalizados) podem oferecer suporte apenas ao HLS com o formato de contêiner MPEG TS. Recomendamos experimentar o
ContainerFormatparâmetro para iniciar a solução de problemas. -
-
Verifique se cada fragmento tem um número consistente de trilhas. Verifique se os fragmentos no fluxo não estão mudando entre ter uma faixa de áudio e vídeo e somente uma faixa de vídeo. Verifique também se as configurações do codificador (resolução e taxa de quadros) não estão mudando entre os fragmentos em cada faixa.
Latência muito alta entre o produtor e o player
Essa situação ocorre quando a latência é muito alta em relação a quando o vídeo é capturado e quando é reproduzido no player de vídeo.
O vídeo é reproduzido por meio de HLS por fragmento. Portanto, a latência não pode ser menor que a duração do fragmento. A latência também inclui o tempo necessário para o armazenamento em buffer e a transferência de dados. Se a sua solução exigir latência menor que um segundo, considere usar a API GetMedia.
É possível ajustar os parâmetros a seguir para reduzir a latência geral, mas o ajuste desses parâmetros também pode reduzir a qualidade do vídeo ou aumentar a taxa de rearmazenamento em buffer.
-
Duração do fragmento — A duração do fragmento é a quantidade de vídeo entre as divisões no fluxo, controlada pela frequência dos quadros-chave gerados pelo codificador de vídeo. O valor recomendado é um segundo. Ter uma duração de fragmento mais curta significa que menos tempo é gasto aguardando que o fragmento seja concluído para transmitir os dados do vídeo para o serviço. Fragmentos mais curtos também são mais rápidos para o serviço processar. No entanto, se a duração de fragmento for muito curta, aumentará a probabilidade do player não ter conteúdo suficiente e precisar interromper e armazenar o conteúdo em buffer. Se a duração de fragmento for inferior a 500 milissegundos, o produtor poderá criar muitas solicitações, fazendo com que o serviço as limite.
-
Taxa de bits — Um stream de vídeo com uma taxa de bits menor leva menos tempo para ler, gravar e transmitir. No entanto, um streaming de vídeo com uma taxa de bits menor tem menor qualidade de vídeo.
-
Contagem de fragmentos em playlists de mídia — Um player sensível à latência só deve carregar os fragmentos mais recentes em uma playlist de mídia. Em vez disso, a maioria dos jogadores começa com o fragmento mais antigo. Ao reduzir o número de fragmentos na playlist, você reduz o tempo de separação entre os fragmentos anteriores e novos. Com um tamanho menor de playlist, é possível que um fragmento seja ignorado durante a reprodução se houver um atraso na adição de novos fragmentos à playlist ou se houver um atraso na atualização da playlist pelo player. Recomendamos usar de 3 a 5 fragmentos e usar um player configurado para carregar somente os fragmentos mais recentes de uma playlist.
-
Tamanho do buffer do player — A maioria dos reprodutores de vídeo tem uma duração mínima de buffer configurável, geralmente com um padrão de 10 segundos. Para a latência mais baixa, o valor pode ser definido como 0 segundos. No entanto, isso significa que o jogador rejeita se houver algum atraso na produção de fragmentos, pois o jogador não terá nenhum buffer para absorver o atraso.
-
“Atualização” do player — Os reprodutores de vídeo normalmente não capturam automaticamente a reprodução até a frente do buffer de vídeo se o buffer estiver cheio, como quando um fragmento atrasado causa a reprodução de um acúmulo de fragmentos. Um player personalizado pode evitar isso descartando quadros ou aumentando a velocidade de reprodução (por exemplo para 1.1x) para alcançar a frente do buffer. Isso faz com que a reprodução fique instável ou que a velocidade aumente conforme o player faz a correção, e o rearmazenamento em buffer pode ser mais frequente como o tamanho do buffer permanece curto.