O Real-Time Streaming (RTS) é um recurso adicional do ApsaraVideo Live que oferece transmissão ao vivo com latência de milissegundos para milhões de usuários simultâneos. Ao reduzir a latência de 3 a 6 segundos das transmissões tradicionais, o RTS proporciona reprodução instantânea, fluida e de ultrabaixa latência por meio do ApsaraVideo Player SDK.
Para obter mais informações sobre recursos, documentação da API e perguntas frequentes, consulte Player Android.
Reprodução RTS
O ApsaraVideo Player SDK para Android integra o RTS SDK nativo para transmissões ao vivo de baixa latência. Para mais detalhes, consulte Implementar pull de stream RTS no Android.
Para ver um exemplo de código, acesse o módulo RTS ultra-low latency live playback (RtsLiveStream) em API-Example. Esse projeto de amostra baseado em Java demonstra como integrar os principais recursos do ApsaraVideo Player SDK para Android.
Troca de resolução RTS
Esse recurso aceita URLs de reprodução do ApsaraVideo Live e URLs de streams transcodificados, com suporte a transcodificação padrão e personalizada. Para saber mais sobre transcodificação de streams ao vivo, consulte Gerenciamento de transcodificação. Para obter detalhes sobre como gerar URLs de streaming, veja Gerar URLs de streaming.
A troca de resolução funciona em streams ao vivo que utilizam os protocolos RTS e HTTP-FLV.
O tamanho do grupo de imagens (GOP) do stream ingerido deve ser de 1 ou 2 segundos. Um GOP maior pode causar saltos na reprodução durante a troca de streams.
No domínio de streaming, ative as opções Output RTMP timestamps during FLV playback e Output RTMP timestamps after upstream interruption. Na configuração de transcodificação, ative source timestamp e source keyframe. Caso contrário, a troca de stream pode apresentar travamentos ou falhar. Para ativar essas opções, envie um ticket.
A troca falhará se a URL do stream de destino não atender a esses requisitos.
Alternar resoluções
Para trocar a resolução, chame o método switchStream e passe a URL da nova resolução.
// Start playback
aliPlayer.setUrlSource(oldUrl);
aliPlayer.prepare();
aliPlayer.start();
// Switch to another URL during playback
aliPlayer.switchStream(newUrl);
Notificações de troca de resolução
Os callbacks abaixo são acionados quando a troca de resolução tem sucesso ou falha.
aliPlayer.setOnStreamSwitchedListener(new IPlayer.OnStreamSwitchedListener() {
@Override
public void onSwitchedSuccess(String url) {
Log.i("SwitchStream", "switch success, url = " + url);
}
@Override
public void onSwitchedFail(String url, ErrorInfo errorInfo) {
Log.i("SwitchStream", "switch failed, url = " + url + ", error=" + errorInfo.getMsg());
}
});