Todos os produtos
Search
Central de documentação

ApsaraVideo Live:Time shifting

Última atualização: Jun 30, 2026

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

Nota
  • 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:

  1. Configure o recurso de time shifting.

    Nota

    Configure o recurso para salvar o conteúdo da transmissão ao vivo e habilitar o time shifting.

  2. Envie uma solicitação do cliente para utilizar o time shifting.

Configurar o recurso de time shifting

Configurar o time shifting no console

  1. Faça login no console do ApsaraVideo Live.

  2. No painel de navegação à esquerda, escolha Feature Management > Time Shifting para abrir a página Time Shifting.

  3. Selecione o domínio de streaming que deseja configurar.

  4. Clique em Add.

  5. Configure o time shifting.

    直播时移

    A tabela a seguir descreve os parâmetros da configuração de time shifting.

    Parâmetro

    Descrição

    AppName

    Nome do aplicativo. O AppName deve ser idêntico ao AppName usado na ingestão de stream para que a configuração tenha efeito. O nome pode ter até 255 caracteres e conter dígitos, letras maiúsculas, letras minúsculas, hifens (-) e sublinhados (_). Hifens e sublinhados não podem aparecer no início do nome. Para configurar o time shifting para todo o domínio, insira um asterisco (*).

    Stream Name

    Nome do stream.

    Time-shift Scope

    • Original Only: Apenas o stream original oferece suporte ao time shifting.

    • Original & Transcoded: Tanto o stream original quanto os streams transcodificados oferecem suporte ao time shifting.

    Retention Period

    O ApsaraVideo Live oferece as seguintes opções de duração para o time shifting:

    • 1 dia

    • 3 dias

    • 7 dias

    • 15 dias

    • 30 dias

    Nota
    • Após configurar o time shifting, reingira o stream para que as alterações tenham efeito. As novas definições não se aplicam a transmissões ao vivo em andamento.

    • Acesse diretamente o stream com time shifting usando a URL correspondente ao domínio de streaming. Para mais detalhes sobre as especificações de acesso via URL, consulte Regras de time shifting.

    • Se um domínio de streaming principal estiver associado a um subdomínio de streaming, ative o time shifting também para o subdomínio. Caso contrário, a configuração não terá efeito no subdomínio de streaming.

  6. Clique em OK.

Configurar o time shifting via API

// This file is auto-generated. Do not edit.
package com.aliyun.sample;

import com.aliyun.tea.*;

public class Sample {

    /**
     * description
Nota
  • Defina AppName como asterisco (*) para aplicar a configuração a todas as transmissões ao vivo do domínio especificado.

  • Defina StreamName como asterisco (*) para aplicar a configuração a todas as transmissões ao vivo do AppName especificado.

  • Após adicionar a configuração, chame a operação DescribeLiveShiftConfigs para consultar as configurações de time shifting de um domínio específico.

  • Para mais informações sobre o uso do SDK para Java, consulte Guia do usuário do SDK para Java.

  • Reingira o stream para que a configuração tenha efeito.

  • Para mais detalhes sobre os parâmetros, consulte OpenLiveShift.

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.

Nota
  • 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:

  • start: horário de início da reprodução.

  • end: horário de término da reprodução.

  • vodend: define o horário de término da reprodução no modo video-on-demand (VOD).

    Nota

    Definir vodend indica que a reprodução está no modo VOD. Isso retorna todos os segmentos TS dentro do intervalo de tempo especificado de uma só vez e inclui a tag endlist.

  • offset: tempo de deslocamento para retrocesso.

Formato de tempo para o time shifting. Valores válidos:

  • unix: timestamp UNIX.

  • human: formato AAAAMMDDHHMMSS. Exemplo: 20170809230130.

Unidade de tempo para o time shifting. Valores válidos:

  • s: segundo.

  • ms: milissegundo.

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=20170809200010

  • lhs_start_unix_s_0=1502280113

  • lhs_end_human_s_8=20170809200010

  • lhs_vodend_unix_s_0=1502280113

  • lhs_offset_unix_ms_0=1800000 (retrocesso de 30 minutos)

Importante
  • Especifique lhs_start ou lhs_offset. Se ambos forem especificados (lhs_start e lhs_offset), a reprodução com time shifting basear-se-á em lhs_offset.

  • lhs_end/lhs_vodend é um parâmetro opcional. Sem a especificação de lhs_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 em lhs_end.

  • Ao especificar lhs_vodend, a reprodução ocorre no modo VOD até o horário definido em lhs_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_end e lhs_vodend forem especificados simultaneamente, lhs_vodend terá 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: http://{domain}/openapi/timeline/query. Na URL, {domain} corresponde ao seu domínio de streaming.

Parâmetros

  • aliyunols (obrigatório): on (campo fixo).

  • app (obrigatório): Nome do aplicativo.

  • stream (obrigatório): Nome do stream.

  • format (obrigatório): ts (campo fixo).

    Nota

    Atualmente, a API suporta apenas a consulta de dados de time shifting no formato ts.

  • lhs_start_unix_s_0 (obrigatório): Timestamp UNIX do início do intervalo de tempo da consulta. Exemplo: 1724295706. Unidade: segundos.

  • lhs_end_unix_s_0 (obrigatório): Timestamp UNIX do fim do intervalo de tempo da consulta. Exemplo: 1724317306. Unidade: segundos.

  • auth_key: Chave de criptografia. Esta chave utiliza The Same algoritmo de criptografia da chave usada na URL de streaming. Se não estiver familiarizado com autenticação e criptografia, consulte o documento Exemplos de código de autenticação.

Tratamento de erros comuns

  • 403: Verifique se o processo de criptografia do valor auth_key está correto.

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.

Nota
  • 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******
Nota
  • 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.

Importante
  • 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.

Nota

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******
Nota
  • 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.