O time shifting permite que os espectadores reproduzam uma transmissão ao vivo desde o início até o momento atual. Este tópico descreve o funcionamento do time shifting e como enviar solicitações.
Casos de uso
Esse recurso possibilita o retrocesso da transmissão durante a reprodução. Durante uma transmissão esportiva ao vivo, por exemplo, os espectadores podem usar o time shifting para assistir novamente a trechos do evento.
Como funciona
O ApsaraVideo Live segmenta as transmissões em arquivos TS e os distribui aos espectadores via protocolo HLS. A solicitação de um espectador por uma playlist M3U8 contém uma lista de endereços de segmentos TS constantemente atualizada. Em transmissões ao vivo HLS padrão, os endereços dos segmentos TS e seus arquivos correspondentes não são salvos, o que impede o retrocesso da transmissão. Ao ativar o time shifting, o ApsaraVideo Live armazena as informações e os arquivos dos segmentos TS. Isso permite retroceder o vídeo desde o início da transmissão ao vivo até o momento atual.
Limitações
O time shifting suporta no máximo 100.000 espectadores simultâneos. Para atender a um número maior de espectadores, envie um ticket. Para mais informações, consulte Contact us.
Uso
A utilização do time shifting gera taxas específicas. A cobrança é baseada na quantidade de dados com time shifting gravados e nas especificações da reprodução. Para mais detalhes sobre as regras de faturamento, consulte Time shifting fees.
Para verificar as regiões que oferecem suporte ao time shifting, consulte Supported regions.
Para utilizar o time shifting, conclua as duas etapas a seguir:
-
Configure o recurso de time shifting.
NotaÉ necessário ativar esse recurso para salvar o conteúdo da transmissão ao vivo destinado ao time shifting.
Envie uma solicitação do cliente para usar o time shifting.
Configurar o time shifting
Solicitar reprodução com time shifting
Após a configuração do time shifting, o ApsaraVideo Live salva os arquivos de segmentos TS da transmissão ao vivo. O cliente pode então enviar uma solicitação de reprodução com time shifting para reproduzir segmentos gravados anteriormente.
O código a seguir apresenta um exemplo de solicitação de reprodução com time shifting:
http://<DomainName>/<AppName>/<StreamName.m3u8>?aliyunols=on&lhs_offset_unix_s_0=300&auth_key=3sdda******
Conforme mostrado no exemplo, a solicitação de time shifting é semelhante a uma URL de transmissão ao vivo para uma playlist M3U8, mas inclui dois parâmetros adicionais. aliyunols=on é um parâmetro obrigatório, e lhs_offset_unix_s_0=300 indica um retrocesso de 300 segundos.
Ao enviar uma solicitação de time shifting por meio de uma rede de distribuição de conteúdo (CDN), inclua o parâmetro
aliyunols=on.Atualmente, a reprodução com time shifting suporta apenas URLs de transmissão ao vivo no formato
M3U8.Utilize o ApsaraVideo Player para reproduzir conteúdo com time shifting. Para mais informações sobre como usar o ApsaraVideo Player, consulte Player SDK.
Neste exemplo, o conteúdo ao vivo retrocede 300 segundos. Durante a reprodução de conteúdo com time shifting, use o parâmetro lhs_offset_unix_s_0 para definir o tempo de reprodução. O formato do parâmetro é lhs_{type}_{format}_{unit}_{zone}.
A tabela a seguir descreve as variáveis do parâmetro.
|
Tipo |
Formato |
Unidade |
Zona |
|
Tipo de tempo. Valores válidos:
|
Formato de tempo para o time shifting. Valores válidos:
|
Unidade de tempo para o time shifting. Valores válidos:
|
Fuso horário. Valores válidos: 0 a 9, indicando UTC+*. 0 representa UTC e 8 indica China Standard Time. Nota
Se definir format como unix, defina zone como 0. |
Os exemplos a seguir mostram os parâmetros de time shifting:
lhs_start_human_s_8=20170809200010lhs_start_unix_s_0=1502280113lhs_end_human_s_8=20170809200010lhs_vodend_unix_s_0=1502280113lhs_offset_unix_ms_0=1800000(retrocesso de 30 minutos)
Especifique
lhs_startoulhs_offset. Se ambos forem especificados,lhs_startelhs_offset, o parâmetrolhs_offsetterá precedência.O parâmetro
lhs_end/lhs_vodendé opcional. Sem a especificação delhs_end/lhs_vodend, a reprodução continua no modo ao vivo até o fim da ingestão da transmissão.Ao especificar
lhs_end, a reprodução segue no modo ao vivo até o horário definido emlhs_end.Ao especificar
lhs_vodend, a reprodução segue no modo video-on-demand (VOD) até o horário definido emlhs_vodend. No modo VOD, todos os segmentos TS são retornados de uma vez, permitindo o uso da barra de progresso do player para avançar e retroceder.Se ambos
lhs_endelhs_vodendforem especificados,lhs_vodendterá precedência.
Caso não saiba os horários exatos de início e término, consulte a linha do tempo do time shifting para obtê-los.
O exemplo a seguir mostra como consultar a linha do tempo do time shifting:
// Replace the values in angle brackets (<>) with your actual values.
http://<DomainName>/openapi/timeline/query?aliyunols=on&app=<AppName>&stream=<StreamName>&format=ts&lhs_start_unix_s_0=<StartTime>&lhs_end_unix_s_0=<endTime>&auth_key=<auth_key>
A tabela a seguir descreve os parâmetros do exemplo.
|
Parâmetro |
Descrição |
|
Método de solicitação |
GET |
|
URL |
URL da solicitação. Exemplo: |
|
Parâmetros |
|
|
Tratamento de erros comuns |
|
O exemplo a seguir mostra uma resposta de amostra:
{
"retCode": 0,
"description": "success",
"content": {
"current": 1514269063,
"timeline": [
{
"start": 1514269054,
"end": 1514269058
}
]
}
}
|
Parâmetro |
Descrição |
|
current |
Hora atual do sistema. O player pode usar este campo para sincronizar o tempo. |
|
timeline |
Período válido de time shifting, incluindo os timestamps UNIX de início e fim. |
|
start |
Hora de início do segmento válido (timestamp UNIX). Unidade: segundos. |
|
end |
Hora de término do segmento válido (timestamp UNIX). Unidade: segundos. |
Geralmente, uma única ingestão de transmissão gera um objeto de linha do tempo. O horário de início corresponde ao começo da transmissão ao vivo, e o horário de término aproxima-se da hora atual ou do fim da transmissão. No entanto, fatores como interrupções, reingestão ou flutuações de rede podem gerar múltiplos objetos de linha do tempo.
Consulte o volume de dados de time shifting para um domínio específico no console. Para mais informações, consulte Query usage.
Uso avançado
Reprodução transcodificada com time shifting
Combine o time shifting com a transcodificação para reproduzir transmissões transcodificadas. Configure primeiro a transcodificação para habilitar essa funcionalidade. Para mais informações sobre como configurar a transcodificação, consulte Live stream transcoding.
Esta seção pressupõe que você já concluiu a configuração de transcodificação.
Ao configurar o time shifting, gere também dados de time shifting para as transmissões transcodificadas. O exemplo a seguir mostra o código de amostra:
// Specifies whether to ignore the corresponding transcoded stream when generating time-shifted data. Valid values: true and false. Default value: true.
openLiveShiftRequest.setIgnoreTranscode("<false>");
Para ativar a reprodução com time shifting, add the time-shifting parameters à URL da transmissão transcodificada.
O exemplo a seguir mostra uma URL de reprodução:
http://<DomainName>/<AppName>/<StreamName_TranscodingTemplateID.m3u8>?aliyunols=on&lhs_offset_unix_s_0=300&auth_key=3sdda******
Reingira a transmissão para reproduzir a transmissão transcodificada com time shifting.
Em configurações de transcodificação acionadas por pull de transmissão, a reprodução de uma transmissão transcodificada com time shifting não dispara a transcodificação. Reproduza a transmissão transcodificada ao vivo antecipadamente para acionar a transcodificação ou configure a transcodificação para ser acionada por ingestão de transmissão.
Atualmente, o recurso de time shifting não suporta transmissões transcodificadas com múltiplas taxas de bits.
Reprodução encapsulada com time shifting
Utilize o recurso Time Shifting.
O service de encapsulamento do ApsaraVideo Live reduz a latência utilizando protocolos modernos como Low-Latency HTTP Live Streaming (LL-HLS) e o formato de contêiner CMAF. O LL-HLS alcança latências de ponta a ponta de 3 a 5 segundos usando segmentos mais curtos (0,2 a 1 segundo) e carregamento de playlist em blocos. O formato CMAF oferece compatibilidade mais ampla com dispositivos e navegadores do que o TS tradicional e suporta codecs mais recentes como H.265.
Se não estiver familiarizado com o recurso de encapsulamento de transmissão ao vivo, consulte Live stream encapsulation.
Esta seção pressupõe que você já concluiu a configuração de encapsulamento de transmissão ao vivo.
Para reproduzir transmissões encapsuladas com time shifting, não é necessário modificar a configuração de time shifting. Basta adicionar os parâmetros de time shifting à URL da transmissão encapsulada.
O exemplo a seguir mostra uma URL de reprodução:
http://<DomainName>/<AppName>/<StreamName-EncapsulationFormat.m3u8>?aliyunols=on&lhs_offset_unix_s_0=300&auth_key=3sdda******
Reingira a transmissão para reproduzir a transmissão encapsulada com time shifting.
Para reproduzir uma transmissão encapsulada e transcodificada com time shifting, basta adicionar os parâmetros de time shifting à URL da transmissão encapsulada e transcodificada.
Referências
Para mais informações sobre as APIs de time shifting, consulte Time shifting.