O recurso de time shifting permite reproduzir 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.
Cenários
O time shifting permite que os espectadores retrocedam a transmissão ao vivo durante a reprodução. Em uma transmissão esportiva ao vivo, por exemplo, é possível reassistir a trechos do evento, proporcionando uma experiência semelhante à de assistir a um filme ou programa de TV.
Funcionamento
O ApsaraVideo Live divide as transmissões em segmentos Transport Stream (TS) e as distribui aos espectadores pelo protocolo HTTP Live Streaming (HLS). A solicitação de playlist M3U8 do espectador contém uma lista de endereços de segmentos TS atualizada constantemente. Em transmissões 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 sistema armazena as informações e os arquivos dos segmentos TS, permitindo retroceder o vídeo desde o início da transmissão ao vivo até o momento atual.
Limites
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 sobre como enviar um ticket, consulte Fale conosco.
Como usar o recurso
O uso do time shifting gera taxas específicas. A cobrança baseia-se na quantidade de dados de time shifting gravados e nas especificações da reprodução com deslocamento temporal. Para mais detalhes sobre as regras de faturamento, consulte Taxas de time shifting.
Para verificar as regiões compatíveis com o time shifting, consulte Regiões suportadas.
Para utilizar o time shifting, conclua as duas etapas a seguir:
-
Configure o recurso de time shifting.
NotaConfigure o recurso para salvar o conteúdo da transmissão ao vivo e habilitar o time shifting.
Envie uma solicitação do cliente para utilizar o time shifting.
Configurar o recurso de time shifting
Utilizar o recurso de time shifting
Depois de configurar o 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 deslocamento temporal para assistir ao conteúdo ao vivo.
O exemplo abaixo mostra uma 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 ilustrado no exemplo, a solicitação de time shifting assemelha-se a uma URL de streaming ao vivo para um arquivo M3U8, mas inclui dois parâmetros adicionais. aliyunols=on é um campo fixo, enquanto lhs_offset_unix_s_0=300 indica um retrocesso de 300 segundos.
Ao enviar uma solicitação de time shifting pela CDN, inclua obrigatoriamente o parâmetro
aliyunols=on.Atualmente, a reprodução com time shifting aceita apenas URLs de streaming ao vivo no formato
M3U8.Use o ApsaraVideo Player para reproduzir conteúdo com time shifting. Para saber mais sobre o uso do ApsaraVideo Player, consulte SDK do Player.
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.
type | format | unit | zone |
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, representando UTC+*. 0 indica UTC e 8 indica o Horário Padrão da China. Nota Se você 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), a reprodução com time shifting basear-se-á emlhs_offset.lhs_end/lhs_vodendé um parâmetro opcional. Sem a especificação delhs_end/lhs_vodend, a reprodução continua no modo ao vivo até o fim da ingestão do stream.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 ocorre no modo VOD até o horário definido emlhs_vodend. No modo VOD, todos os segmentos TS são retornados simultaneamente, permitindo avançar e retroceder pela barra de progresso do player.Se
lhs_endelhs_vodendforem especificados simultaneamente,lhs_vodendterá precedência.
Caso não saiba os horários exatos de início e término para sua aplicação, consulte a linha do tempo do time shifting para obtê-los.
O exemplo a seguir demonstra 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>
Veja um exemplo abaixo:
Nome | 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 |
Horário de início do segmento válido (timestamp UNIX). Unidade: segundos. |
|
end |
Horário de término do segmento válido (timestamp UNIX). Unidade: segundos. |
Geralmente, uma única ingestão de stream gera um objeto de linha do tempo. O horário de início aproxima-se do 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. Contudo, múltiplos objetos de linha do tempo podem ser gerados devido a interrupções de stream, reingestão ou flutuações de rede.
Consulte o volume de dados de time shifting para um domínio específico diretamente no console. Para mais informações, veja Consultar uso.
Uso avançado
Reproduzir streams transcodificados com time shifting
Combine o time shifting com a transcodificação para reproduzir streams transcodificados. Configure primeiro a transcodificação antes de habilitar a reprodução com time shifting. Para instruções detalhadas sobre configuração de transcodificação, consulte Transcodificação de transmissão ao vivo.
Esta seção pressupõe que a configuração de transcodificação já foi concluída.
Ao configurar o time shifting, gere também dados de time shifting para os streams transcodificados. O exemplo abaixo 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 habilitar a reprodução com time shifting, Add Time-shifting Parameters à URL do stream transcodificado.
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 o stream para reproduzir o stream transcodificado com time shifting.
Em configurações de transcodificação acionadas por stream pulling, a reprodução de um stream transcodificado com time shifting não dispara a transcodificação. Reproduza previamente o stream transcodificado ao vivo para iniciar o processo ou configure a transcodificação para ser acionada por ingestão de stream.
Atualmente, o time shifting não suporta streams transcodificados com múltiplas taxas de bits.
Reproduzir streams encapsulados com time shifting
Para reproduzir streams encapsulados com time shifting, utilize o recurso Time Shifting em conjunto com o recurso Encapsulation.
O ApsaraVideo Live oferece o serviço de encapsulamento de transmissões ao vivo. Esse serviço suporta protocolos de reprodução como CMAF e Low-Latency HTTP Live Streaming (LL-HLS), reduzindo efetivamente a latência da transmissão. Após ativar o encapsulamento, o stream do ApsaraVideo Live é dividido em segmentos TS ou CMAF e distribuído aos espectadores via protocolo HLS ou LL-HLS especificado. A playlist M3U8 solicitada contém uma lista de endereços de segmentos atualizada constantemente. Comparado ao HLS, o LL-HLS divide os streams em partes menores, com duração entre 0,2 e 1 segundo, e suporta carregamento bloqueante para playlists e partes M3U8, alcançando latência ponta a ponta de apenas 3 a 5 segundos. Além disso, o formato de contêiner CMAF possui compatibilidade mais ampla com dispositivos e navegadores do que o formato TS, suportando codecs mais recentes como H.265.
Para detalhes sobre o recurso de encapsulamento de transmissões ao vivo, consulte Encapsulamento de transmissão ao vivo.
Esta seção pressupõe que a configuração de encapsulamento de transmissão ao vivo já foi concluída.
Não é necessário alterar a configuração de time shifting para reproduzir streams encapsulados. Basta adicionar os parâmetros de time shifting à URL do stream encapsulado.
O exemplo a seguir mostra uma URL de reprodução:
http://<DomainName>/<AppName>/<StreamName-ContainerFormat.m3u8>?aliyunols=on&lhs_offset_unix_s_0=300&auth_key=3sdda******
Reingira o stream para reproduzir o stream encapsulado com time shifting.
Para reproduzir um stream encapsulado e transcodificado com time shifting, basta adicionar os parâmetros de time shifting à URL do stream encapsulado e transcodificado.
Referências
Para mais informações sobre as APIs de time shifting, consulte Time shifting.
