GetHLSStreamingSessionURL - Amazon Kinesis Video Streams

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á.

GetHLSStreamingSessionURL

Recupera um URL HTTP Live Streaming (HLS) para o stream. Em seguida, você pode abrir o URL em um navegador ou reprodutor de mídia para visualizar o conteúdo do stream.

Tanto os parâmetros StreamName quanto os StreamARN parâmetros são opcionais, mas você deve especificar o StreamName ou o StreamARN ao invocar essa operação de API.

Um stream de vídeo do Amazon Kinesis tem os seguintes requisitos para fornecer dados por meio do HLS:

As sessões HLS do Kinesis Video Streams contêm fragmentos no formato MPEG-4 fragmentado (também chamado de fMP4 ou CMAF) ou no formato MPEG-2 (também chamado de partes TS, que a especificação HLS também suporta). Para obter mais informações sobre os tipos de fragmentos HLS, consulte a especificação HLS.

O procedimento a seguir mostra como usar o HLS com o Kinesis Video Streams:

  1. Chame a GetDataEndpoint API para obter um endpoint. Em seguida, envie as GetHLSStreamingSessionURL solicitações para esse endpoint usando o parâmetro --endpoint-url.

  2. Recupere o URL do HLS usando. GetHLSStreamingSessionURL O Kinesis Video Streams cria uma sessão de streaming HLS para ser usada para acessar o conteúdo em um stream usando o protocolo HLS. GetHLSStreamingSessionURLretorna uma URL autenticada (que inclui um token de sessão criptografado) para a playlist principal do HLS da sessão (o recurso raiz necessário para streaming com HLS).

    nota

    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.

    A mídia disponibilizada por meio da playlist consiste somente no stream, no intervalo de tempo e no formato solicitados. Nenhum outro dado de mídia (como quadros fora da janela solicitada ou taxas de bits alternativas) é disponibilizado.

  3. Forneça o URL (contendo o token de sessão criptografado) da playlist principal do HLS para um reprodutor de mídia compatível com o protocolo HLS. O Kinesis Video Streams disponibiliza a playlist de mídia HLS, o fragmento de inicialização e os fragmentos de mídia por meio da URL principal da playlist. O fragmento de inicialização contém os dados privados do codec para o stream e outros dados necessários para configurar o decodificador e o renderizador de vídeo ou áudio. Os fragmentos de mídia contêm quadros de vídeo codificados em H.264 ou amostras de áudio codificadas em AAC.

  4. O reprodutor de mídia recebe o URL autenticado e solicita metadados de stream e dados de mídia normalmente. Quando o media player solicita dados, ele chama as seguintes ações:

    • GetHLSMasterPlaylist: recupera uma playlist principal do HLS, que contém um URL para a GetHLSMediaPlaylist ação de cada faixa e metadados adicionais para o reprodutor de mídia, incluindo taxa de bits e resolução estimadas.

    • GetHLSMediaPlaylist: recupera uma playlist de mídia HLS, que contém uma URL para acessar o fragmento de inicialização do MP4 com a GetMP4InitFragment ação e URLs para acessar os fragmentos de mídia MP4 com as ações. GetMP4MediaFragment A playlist de mídia do HLS também contém metadados sobre o stream que o player precisa para reproduzi-lo, como se PlaybackMode é LIVE ou. ON_DEMAND A playlist de mídia HLS geralmente é estática para sessões com um PlaybackType deON_DEMAND. A playlist de mídia do HLS é atualizada continuamente com novos fragmentos para sessões com um de. PlaybackType LIVE Há uma playlist de mídia HLS distinta para a faixa de vídeo e a faixa de áudio (se aplicável) que contém URLs de mídia MP4 para a faixa específica.

    • GetMP4InitFragment: recupera o fragmento de inicialização do MP4. Normalmente, o reprodutor de mídia carrega o fragmento de inicialização antes de carregar qualquer fragmento de mídia. Esse fragmento contém os átomos fytp "" e "moov" MP4 e os átomos secundários necessários para inicializar o decodificador do media player.

      O fragmento de inicialização não corresponde a um fragmento em um stream de vídeo do Kinesis. Ele contém apenas os dados privados do codec para o stream e a respectiva faixa, que o reprodutor de mídia precisa para decodificar os quadros de mídia.

    • GetMP4MediaFragment: recupera fragmentos de mídia MP4. Esses fragmentos contêm os átomos de MP4 moof "" e mdat "" seus átomos filhos, contendo os quadros de mídia do fragmento codificado e seus registros de data e hora.

      nota

      Os dados privados do codec (CPD) contidos em cada fragmento contêm informações de inicialização específicas do codec, como taxa de quadros, resolução e perfil de codificação, que são necessárias para decodificar adequadamente o fragmento. Tanto para TS quanto para MP4, as alterações de CPD são suportadas durante uma sessão de streaming. Portanto, os fragmentos em uma sessão podem ter informações diferentes no CPD sem interromper a reprodução. Para cada sessão de streaming, apenas 500 alterações de CPD são permitidas.

      Importante

      Não há suporte para alterações na faixa. As faixas devem permanecer consistentes em toda a mídia consultada. O streaming falhará se os fragmentos no stream mudarem de ter apenas vídeo para ter áudio e vídeo, ou se uma faixa de áudio AAC for alterada para uma faixa de áudio A-Law.

      Os dados recuperados com essa ação são faturáveis. Para obter mais informações, consulte Definição de preço do .

    • getTSFragment: recupera fragmentos MPEG TS contendo dados de inicialização e de mídia para todas as faixas no fluxo.

      nota

      Se ContainerFormat forMPEG_TS, essa API será usada em vez de GetMP4InitFragment e GetMP4MediaFragment para recuperar a mídia de stream.

      Os dados recuperados com essa ação são faturáveis. Para obter mais informações, consulte os preços do Kinesis Video Streams.

O URL de uma sessão de streaming não deve ser compartilhado entre jogadores. O serviço pode limitar uma sessão se vários reprodutores de mídia a estiverem compartilhando. Para saber os limites de conexão, consulte Limites do Kinesis Video Streams.

Você pode monitorar a quantidade de dados que o media player consome monitorando a CloudWatch métrica da GetMP4MediaFragment.OutgoingBytes Amazon. Para obter informações sobre como usar o Kinesis Video Streams CloudWatch para monitorar o Kinesis Video Streams, consulte Monitoramento do Kinesis Video Streams. Para obter informações sobre preços, consulte Preços e preços do Amazon Kinesis Video Streams AWS . Aplicam-se cobranças para sessões de HLS e AWS dados de saída.

Veja os exemplos de reprodução de vídeo no guia de documentação: Use o AWS CLI para recuperar um URL de sessão de streaming HLS e. Exemplo: Use HLS em HTML e JavaScript

Para obter mais informações sobre o HLS, consulte HTTP Live Streaming no site de desenvolvedores da Apple.

Importante

Se um erro for gerado após a invocação de uma API de mídia arquivada do Kinesis Video Streams, além do código de status HTTP e do corpo da resposta, ele incluirá as seguintes informações:

  • x-amz-ErrorTypeCabeçalho HTTP — contém um tipo de erro mais específico, além do que o código de status HTTP fornece.

  • x-amz-RequestIdCabeçalho HTTP — se você quiser relatar um problema AWS, a equipe de suporte poderá diagnosticar melhor o problema se receber o ID da solicitação.

Tanto o código de status HTTP quanto o ErrorType cabeçalho podem ser utilizados para tomar decisões programáticas sobre se os erros podem ser repetidos e sob quais condições, além de fornecer informações sobre quais ações o programador cliente pode precisar realizar para tentar novamente com sucesso.

Para obter mais informações, consulte a seção Erros na parte inferior deste tópico, bem como Erros comuns.

Sintaxe da Solicitação

POST /getHLSStreamingSessionURL HTTP/1.1 Content-type: application/json { "ContainerFormat": "string", "DiscontinuityMode": "string", "DisplayFragmentTimestamp": "string", "Expires": number, "HLSFragmentSelector": { "FragmentSelectorType": "string", "TimestampRange": { "EndTimestamp": number, "StartTimestamp": number } }, "MaxMediaPlaylistFragmentResults": number, "PlaybackMode": "string", "StreamARN": "string", "StreamName": "string" }

Parâmetros da solicitação de URI

A solicitação não usa nenhum parâmetro de URI.

Corpo da Solicitação

A solicitação aceita os dados a seguir no formato JSON.

ContainerFormat

Especifica qual formato deve ser usado para empacotar a mídia. A especificação do formato do FRAGMENTED_MP4 contêiner empacota a mídia em fragmentos MP4 (fMP4 ou CMAF). Essa é a embalagem recomendada porque a sobrecarga de embalagem é mínima. A outra opção de formato de contêiner éMPEG_TS. O HLS oferece suporte a fragmentos MPEG TS desde que foi lançado e, às vezes, é o único pacote suportado em reprodutores HLS mais antigos. O MPEG TS normalmente tem uma sobrecarga de embalagem de 5 a 25%. Isso significa que o MPEG TS normalmente requer de 5 a 25% mais largura de banda e custo do que o FMP4.

O padrão é FRAGMENTED_MP4.

Tipo: String

Valores Válidos: FRAGMENTED_MP4 | MPEG_TS

Obrigatório: Não

DiscontinuityMode

Especifica quando os sinalizadores que marcam descontinuidades entre fragmentos são adicionados às playlists de mídia.

Os reprodutores de mídia geralmente criam uma linha do tempo do conteúdo de mídia a ser reproduzido, com base nos registros de data e hora de cada fragmento. Isso significa que, se houver alguma sobreposição ou lacuna entre os fragmentos (como é normal se estiver HLSFragmentSelector definido comoSERVER_TIMESTAMP), a linha do tempo do media player também terá pequenas lacunas entre os fragmentos em alguns lugares e substituirá os quadros em outros lugares. Lacunas na linha do tempo do reprodutor de mídia podem fazer com que a reprodução pare e as sobreposições podem fazer com que a reprodução fique instável. Quando há sinalizadores de descontinuidade entre os fragmentos, espera-se que o reprodutor de mídia redefina a linha do tempo, resultando na reprodução do próximo fragmento imediatamente após o fragmento anterior.

Os seguintes modos são suportados:

  • ALWAYS: um marcador de descontinuidade é colocado entre cada fragmento na playlist de mídia do HLS. É recomendável usar um valor de ALWAYS se os carimbos de data/hora do fragmento não forem precisos.

  • NEVER: nenhum marcador de descontinuidade é colocado em nenhum lugar. É recomendável usar um valor de para garantir que NEVER a linha do tempo do reprodutor de mídia seja mapeada com mais precisão para os carimbos de data/hora do produtor.

  • ON_DISCONTINUITY: um marcador de descontinuidade é colocado entre fragmentos que têm uma lacuna ou sobreposição de mais de 50 milissegundos. Para a maioria dos cenários de reprodução, é recomendável usar um valor de para ON_DISCONTINUITY que a linha do tempo do reprodutor de mídia seja redefinida somente quando houver um problema significativo com a linha do tempo da mídia (por exemplo, um fragmento ausente).

O padrão é ALWAYS quando HLSFragmentSelector está definido como e NEVER quando está definido comoPRODUCER_TIMESTAMP. SERVER_TIMESTAMP

Tipo: sequências

Valores Válidos: ALWAYS | NEVER | ON_DISCONTINUITY

Obrigatório: Não

DisplayFragmentTimestamp

Especifica quando os carimbos de data e hora de início do fragmento devem ser incluídos na playlist de mídia do HLS. Normalmente, os reprodutores de mídia relatam a posição do indicador de reprodução como um tempo em relação ao início do primeiro fragmento na sessão de reprodução. No entanto, quando os carimbos de data e hora de início são incluídos na lista de reprodução de mídia do HLS, alguns reprodutores de mídia podem relatar o indicador de reprodução atual como um horário absoluto com base nos carimbos de data/hora do fragmento. Isso pode ser útil para criar uma experiência de reprodução que mostre aos espectadores a hora do relógio de parede da mídia.

O padrão é NEVER. Quando HLSFragmentSelector forSERVER_TIMESTAMP, os carimbos de data/hora serão os carimbos de data e hora de início do servidor. Da mesma forma, quando HLSFragmentSelector forPRODUCER_TIMESTAMP, os carimbos de data/hora serão os carimbos de data e hora de início do produtor.

Tipo: sequências

Valores Válidos: ALWAYS | NEVER

Obrigatório: Não

Expires

O tempo em segundos até a sessão solicitada expirar. Esse valor pode estar entre 300 (5 minutos) e 43200 (12 horas).

Quando uma sessão expira, nenhuma nova chamada paraGetHLSMasterPlaylist,GetHLSMediaPlaylist, GetMP4InitFragmentGetMP4MediaFragment, ou GetTSFragment pode ser feita para essa sessão.

O padrão é 300 (5 minutos).

Tipo: número inteiro

Intervalo válido: valor mínimo de 300. Valor máximo de 43200.

Obrigatório: Não

HLSFragmentSelector

O intervalo de tempo do fragmento solicitado e a origem dos carimbos de data/hora.

Esse parâmetro é necessário se PlaybackMode for ON_DEMAND ouLIVE_REPLAY. Esse parâmetro é opcional se PlaybackMode for LIVE. Se PlaybackMode forLIVE, o FragmentSelectorType pode ser definido, mas o não TimestampRange deve ser definido. Se PlaybackMode for ON_DEMAND ouLIVE_REPLAY, ambos FragmentSelectorType e TimestampRange devem ser definidos.

Tipo: objeto HLSFragmentSelector

Obrigatório: Não

MaxMediaPlaylistFragmentResults

O número máximo de fragmentos que são retornados nas playlists de mídia do HLS.

Quando o PlaybackMode éLIVE, os fragmentos mais recentes são retornados até esse valor. Quando o PlaybackMode éON_DEMAND, os fragmentos mais antigos são retornados, até esse número máximo.

Quando há um número maior de fragmentos disponíveis em uma playlist de mídia HLS ao vivo, os reprodutores de vídeo geralmente armazenam o conteúdo em buffer antes de iniciar a reprodução. Aumentar o tamanho do buffer aumenta a latência da reprodução, mas diminui a probabilidade de que o rebuffer ocorra durante a reprodução. Recomendamos que uma playlist de mídia HLS ao vivo tenha no mínimo 3 fragmentos e no máximo 10 fragmentos.

O padrão é 5 fragmentos se PlaybackMode for LIVE ou LIVE_REPLAY e 1.000 se PlaybackMode forON_DEMAND.

O valor máximo de 5.000 fragmentos corresponde a mais de 80 minutos de vídeo em streams com fragmentos de 1 segundo e mais de 13 horas de vídeo em streams com fragmentos de 10 segundos.

Tipo: longo

Faixa válida: valor mínimo de 1. Valor máximo de 5000.

Obrigatório: Não

PlaybackMode

Seja para recuperar dados ao vivo, reproduzidos ao vivo ou arquivados sob demanda.

Os recursos dos três tipos de sessões incluem o seguinte:

  • LIVE: para sessões desse tipo, a playlist de mídia do HLS é atualizada continuamente com os fragmentos mais recentes à medida que são disponibilizados. Recomendamos que o reprodutor de mídia recupere uma nova playlist em um intervalo de um segundo. Quando esse tipo de sessão é reproduzido em um reprodutor de mídia, a interface do usuário normalmente exibe uma notificação “ao vivo”, sem controle manual para escolher a posição na janela de reprodução a ser exibida.

    nota

    No LIVE modo, os fragmentos mais recentes disponíveis são incluídos em uma playlist de mídia HLS, mesmo que haja uma lacuna entre os fragmentos (ou seja, se um fragmento estiver ausente). Uma lacuna como essa pode fazer com que um reprodutor de mídia pare ou cause um salto na reprodução. Nesse modo, os fragmentos não são adicionados à lista de reprodução de mídia do HLS se forem mais antigos que o fragmento mais recente na lista de reprodução. Se o fragmento ausente ficar disponível após a adição de um fragmento subsequente à playlist, o fragmento mais antigo não será adicionado e a lacuna não será preenchida.

  • LIVE_REPLAY: para sessões desse tipo, a playlist de mídia do HLS é atualizada da mesma forma que é atualizada para o LIVE modo, exceto pelo fato de começar com a inclusão de fragmentos de um determinado horário de início. Em vez de fragmentos serem adicionados à medida que são ingeridos, os fragmentos são adicionados à medida que a duração do próximo fragmento decorre. Por exemplo, se os fragmentos da sessão durarem dois segundos, um novo fragmento será adicionado à playlist de mídia a cada dois segundos. Esse modo é útil para poder iniciar a reprodução a partir da detecção de um evento e continuar transmitindo ao vivo a mídia que ainda não foi ingerida no momento da criação da sessão. Esse modo também é útil para transmitir mídia previamente arquivada sem ser limitado pelo limite de 1.000 fragmentos no ON_DEMAND modo.

  • ON_DEMAND: para sessões desse tipo, a playlist de mídia HLS contém todos os fragmentos da sessão, até o número especificado em. MaxMediaPlaylistFragmentResults A playlist deve ser recuperada somente uma vez para cada sessão. Quando esse tipo de sessão é reproduzido em um reprodutor de mídia, a interface do usuário normalmente exibe um controle de depuração para escolher a posição na janela de reprodução a ser exibida.

Em todos os modos de reprodução, se FragmentSelectorType houverPRODUCER_TIMESTAMP, e se houver vários fragmentos com o mesmo carimbo de data e hora de início, o fragmento que tiver o maior número de fragmentos (ou seja, o fragmento mais novo) será incluído na playlist de mídia do HLS. Os outros fragmentos não estão incluídos. Fragmentos com registros de data e hora diferentes, mas com durações sobrepostas, ainda estão incluídos na lista de reprodução de mídia do HLS. Isso pode levar a um comportamento inesperado no media player.

O padrão é LIVE.

Tipo: String

Valores Válidos: LIVE | LIVE_REPLAY | ON_DEMAND

Obrigatório: Não

StreamARN

O Amazon Resource Name (ARN) do stream para o qual recuperar a URL da playlist principal do HLS.

Você deve especificar o StreamName ou StreamARN o.

Tipo: string

Restrições de tamanho: tamanho mínimo 1. Tamanho máximo de 1.024.

Padrão: arn:[a-z\d-]+:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+

Obrigatório: Não

StreamName

O nome do stream para o qual recuperar o URL da playlist principal do HLS.

Você deve especificar o StreamName ou StreamARN o.

Tipo: string

Restrições de tamanho: tamanho mínimo 1. Tamanho máximo de 256.

Padrão: [a-zA-Z0-9_.-]+

Obrigatório: Não

Sintaxe da Resposta

HTTP/1.1 200 Content-type: application/json { "HLSStreamingSessionURL": "string" }

Elementos de Resposta

Se a ação for bem-sucedida, o serviço retornará uma resposta HTTP 200.

Os dados a seguir são retornados no formato JSON pelo serviço.

HLSStreamingSessionURL

O URL (contendo o token da sessão) que um reprodutor de mídia pode usar para recuperar a playlist principal do HLS.

Tipo: string

Erros

Para obter informações sobre os erros comuns retornados pelas ações, consulte Erros comuns.

ClientLimitExceededException

O Kinesis Video Streams limitou a solicitação porque você excedeu um limite. Tente fazer a ligação mais tarde. Para obter informações sobre limites, consulte Limites do Kinesis Video Streams.

Código de Status HTTP: 400

InvalidArgumentException

Um parâmetro especificado excede suas restrições, não é suportado ou não pode ser usado.

Código de Status HTTP: 400

InvalidCodecPrivateDataException

Os dados privados do codec em pelo menos uma das faixas do stream de vídeo não são válidos para essa operação.

Código de Status HTTP: 400

MissingCodecPrivateDataException

Nenhum dado privado do codec foi encontrado em pelo menos uma das faixas do stream de vídeo.

Código de Status HTTP: 400

NoDataRetentionException

GetImagesfoi solicitado para um fluxo que não retém dados (ou seja, tem um DataRetentionInHours de 0).

Código de Status HTTP: 400

NotAuthorizedException

Código de status: 403, O chamador não está autorizado a realizar uma operação no stream fornecido ou o token expirou.

Código de status HTTP: 401

ResourceNotFoundException

GetImagesgerará esse erro quando o Kinesis Video Streams não conseguir encontrar o stream que você especificou.

GetHLSStreamingSessionURLe GetDASHStreamingSessionURL gere esse erro se uma sessão com um PlaybackMode de ON_DEMAND ou LIVE_REPLAY for solicitada para um fluxo que não tem fragmentos dentro do intervalo de tempo solicitado, ou se uma sessão com um PlaybackMode of LIVE for solicitada para um fluxo que não tem fragmentos nos últimos 30 segundos.

Código de Status HTTP: 404

UnsupportedStreamMediaTypeException

O tipo da mídia (por exemplo, vídeo h.264 ou h.265 ou áudio AAC ou G.711) não pôde ser determinado a partir dos IDs de codec das faixas no primeiro fragmento de uma sessão de reprodução. O ID do codec para a faixa 1 deve ser V_MPEG/ISO/AVC e, opcionalmente, o ID do codec para a faixa 2 deve ser. A_AAC

Código de Status HTTP: 400

Consulte Também

Para obter mais informações sobre como usar essa API em um dos AWS SDKs específicos da linguagem, consulte o seguinte: