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 uma transmissão HTTP ao vivo (HLS) URL para a transmissão. 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 API operação.
Um stream de vídeo do Amazon Kinesis tem os seguintes requisitos para fornecer dados por meio de: HLS
-
A retenção de dados deve ser maior que 0.
-
A trilha de vídeo de cada fragmento deve conter dados privados do codec na Codificação Avançada de Vídeo (AVC) para o formato H.264 ou HEVC para o formato H.265 (especificação -4/ 14496-15). MPEG ISO IEC
Para obter informações sobre como adaptar dados de stream a um determinado formato, consulte Sinalizadores de NAL adaptação. -
A faixa de áudio (se presente) de cada fragmento deve conter dados privados do codec no AAC formato (AACespecificaçãoISO/IEC13818-7
).
As sessões do Kinesis HLS Video Streams contêm fragmentos no MPEG formato -4 fragmentado (também chamado de CMAF f ou) MPEG ou no formato -2 (também MP4 chamado de partes TS, que a especificação também suporta). HLS Para obter mais informações sobre os tipos HLS de fragmentos, consulte a HLSespecificação
O procedimento a seguir mostra como usar HLS com o Kinesis Video Streams:
-
Ligue
GetDataEndpoint
API para o para obter um endpoint. Em seguida, envie asGetHLSStreamingSessionURL
solicitações para esse endpoint usando o parâmetro --endpoint-url. -
Recupere o HLS URL uso
GetHLSStreamingSessionURL
. O Kinesis Video Streams HLS cria uma sessão de streaming para ser usada para acessar o conteúdo em um stream HLS usando o protocolo.GetHLSStreamingSessionURL
retorna uma lista autenticada URL (que inclui um token de sessão criptografado) para a playlist HLS principal da sessão (o recurso raiz necessário para streaming comHLS).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.
-
Forneça o URL (contendo o token de sessão criptografado) da playlist HLS principal a um reprodutor de mídia que suporte o HLS protocolo. O Kinesis Video Streams HLS disponibiliza a playlist de mídia, o fragmento de inicialização e os fragmentos de mídia por meio da playlist principal. URL 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. AAC
-
O reprodutor de mídia recebe o autenticado URL e solicita os metadados do stream e os dados de mídia normalmente. Quando o media player solicita dados, ele chama as seguintes ações:
-
G etHLSMaster Playlist: recupera uma playlist HLS principal, que contém uma URL para a
GetHLSMediaPlaylist
ação de cada faixa e metadados adicionais para o media player, incluindo taxa de bits e resolução estimadas. -
G etHLSMedia Playlist: recupera uma playlist de HLS mídia, que contém um URL para acessar o fragmento de MP4 inicialização com a
GetMP4InitFragment
ação e URLs para acessar os fragmentos de MP4 mídia com as ações.GetMP4MediaFragment
A playlist de HLS mídia também contém metadados sobre a transmissão que o player precisa para reproduzi-la, como sePlaybackMode
éLIVE
ouON_DEMAND
. A playlist de HLS mídia geralmente é estática para sessões com umPlaybackType
deON_DEMAND
. A playlist de HLS mídia é atualizada continuamente com novos fragmentos para sessões com umPlaybackType
de.LIVE
Há uma playlist de HLS mídia distinta para a faixa de vídeo e a faixa de áudio (se aplicável) que contém MP4 mídia URLs para a faixa específica. -
ObterMP4InitFragment: recupera o fragmento de MP4 inicialização. O media player normalmente carrega o fragmento de inicialização antes de carregar qualquer fragmento de mídia. Esse fragmento contém os átomos
fytp
"" e "moov
" e os MP4 á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.
-
ObterMP4MediaFragment: recupera fragmentos MP4 de mídia. Esses fragmentos contêm os átomos "
moof
" e "mdat
" e seus MP4 á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 paraMP4, CPD as alterações são suportadas durante uma sessão de streaming. Portanto, os fragmentos em uma sessão podem ter informações diferentes CPD sem interromper a reprodução. Para cada sessão de streaming, apenas 500 CPD alterações 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 AAC áudio 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 de MPEG TS contendo dados de inicialização e de mídia para todas as faixas no stream.
nota
Se
ContainerFormat
forMPEG_TS
, isso API será usado em vez deGetMP4InitFragment
eGetMP4MediaFragment
para recuperar a mídia de fluxo.Os dados recuperados com essa ação são faturáveis. Para obter mais informações, consulte os preços do Kinesis Video Streams
.
-
Uma sessão de streaming não URL deve ser compartilhada entre jogadores. O serviço pode limitar uma sessão se vários reprodutores de mídia a estiverem compartilhando. Para ver os limites de conexão, consulte as cotas 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
Veja os exemplos de reprodução de vídeo no guia de documentação: Use o AWS CLI para recuperar uma sessão de HLS streaming URL e. Exemplo: Uso HLS em HTML e JavaScript
Para obter mais informações sobreHLS, consulte Transmissão HTTP ao vivo
Importante
Se um erro for gerado após invocar uma API mídia arquivada do Kinesis Video Streams, além do código de status e HTTP do corpo da resposta, ele incluirá as seguintes informações:
-
x-amz-ErrorType
HTTPcabeçalho — contém um tipo de erro mais específico, além do que o código de HTTP status fornece. -
x-amz-RequestId
HTTPcabeçalho — 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 HTTP status 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
"
}
URIParâmetros de solicitação
A solicitação não usa nenhum URI parâmetro.
Corpo da Solicitação
A solicitação aceita os seguintes dados no JSON formato.
- 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 MP4 fragmentos (f MP4 ouCMAF). Essa é a embalagem recomendada porque a sobrecarga de embalagem é mínima. A outra opção de formato de contêiner éMPEG_TS
. HLStem suporte para partes do MPEG TS desde que foi lançado e às vezes é o único pacote compatível com players mais antigosHLS. MPEGO 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 f. MP4O 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 HLSFragmentSelector estiver definido como
SERVER_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 media player 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 media player redefina a linha do tempo, fazendo com que o próximo fragmento seja reproduzido 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. HLS É recomendável usar um valor deALWAYS
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 queNEVER
a linha do tempo do media player 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 paraON_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 eNEVER
quando está definido comoPRODUCER_TIMESTAMP
.SERVER_TIMESTAMP
Tipo: string
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. 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 HLS mídia, 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 timestamps serão os timestamps 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: string
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 para
GetHLSMasterPlaylist
,GetHLSMediaPlaylist
,GetMP4InitFragment
GetMP4MediaFragment
, ouGetTSFragment
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
forON_DEMAND
ouLIVE_REPLAY
. Esse parâmetro é opcional se PlaybackMode forLIVE
. SePlaybackMode
forLIVE
, oFragmentSelectorType
pode ser definido, mas o nãoTimestampRange
deve ser definido. SePlaybackMode
forON_DEMAND
ouLIVE_REPLAY
, ambosFragmentSelectorType
eTimestampRange
devem ser definidos.Tipo: objeto HLSFragmentSelector
Obrigatório: Não
- MaxMediaPlaylistFragmentResults
-
O número máximo de fragmentos retornados nas playlists de HLS mídia.
Quando o
PlaybackMode
éLIVE
, os fragmentos mais recentes são retornados até esse valor. Quando oPlaybackMode
é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 HLS mídia 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 HLS mídia ao vivo tenha no mínimo 3 fragmentos e no máximo 10 fragmentos.
O padrão é 5 fragmentos se
PlaybackMode
forLIVE
ouLIVE_REPLAY
e 1.000 sePlaybackMode
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 HLS mídia é 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 HLS mídia, 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 à playlist de HLS mídia se forem mais antigos do que o fragmento mais recente na playlist. 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 HLS mídia é atualizada da mesma forma que é atualizada para oLIVE
modo, exceto que ela começa 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 noON_DEMAND
modo. -
ON_DEMAND
: para sessões desse tipo, a playlist de HLS mídia contém todos os fragmentos da sessão, até o número especificado emMaxMediaPlaylistFragmentResults
. 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. 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 playlist de mídia. 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 playlist HLS URL principal.
Você deve especificar o
StreamName
ouStreamARN
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 a playlist HLS URL principal.
Você deve especificar o
StreamName
ouStreamARN
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 de 200.
Os dados a seguir são retornados em JSON formato pelo serviço.
- HLSStreamingSessionURL
-
O URL (contendo o token da sessão) que um media player pode usar para recuperar a playlist HLS principal.
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 Cotas do Kinesis Video Streams.
HTTPCódigo de status: 400
- InvalidArgumentException
-
Um parâmetro especificado excede suas restrições, não é suportado ou não pode ser usado.
HTTPCódigo de status: 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.
HTTPCódigo de status: 400
- MissingCodecPrivateDataException
-
Nenhum dado privado do codec foi encontrado em pelo menos uma das faixas do stream de vídeo.
HTTPCódigo de status: 400
- NoDataRetentionException
-
GetImages
foi solicitado para um fluxo que não retém dados (ou seja, tem umDataRetentionInHours
de 0).HTTPCódigo de status: 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.
HTTPCódigo de status: 401
- ResourceNotFoundException
-
GetImages
gerará esse erro quando o Kinesis Video Streams não conseguir encontrar o stream que você especificou.GetHLSStreamingSessionURL
eGetDASHStreamingSessionURL
gere esse erro se uma sessão com umPlaybackMode
deON_DEMAND
ouLIVE_REPLAY
for solicitada para um fluxo que não tem fragmentos dentro do intervalo de tempo solicitado, ou se uma sessão com umPlaybackMode
ofLIVE
for solicitada para um fluxo que não tem fragmentos nos últimos 30 segundos.HTTPCódigo de status: 404
- UnsupportedStreamMediaTypeException
-
O tipo da mídia (por exemplo, vídeo h.264 ou h.265 ou áudio G.711) não pôde ser determinado pelo codec das faixas no primeiro fragmento de uma sessão IDs de reprodução. AAC 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
HTTPCódigo de status: 400
Consulte também
Para obter mais informações sobre como usar isso API em um idioma específico AWS SDKs, consulte o seguinte: