Tutorial sobre arquivamento (Android)
Visão geral
A API de arquivamento da OpenTok permite gravar fluxos de áudio e vídeo de uma sessão em arquivos MP4. Você usa código do lado do servidor para iniciar e interromper as gravações de arquivamento.
Configurando o servidor
Para arquivar sessões do OpenTok (para salvar gravações das sessões), é necessário ter um servidor Configuração. Existem várias maneiras de implementar o arquivamento com um servidor, mas, para este tutorial, vamos configurar rapidamente um servidor PHP simples.
Para iniciar o servidor, basta clicar no botão do Heroku abaixo; em seguida, você será redirecionado ao site do Heroku e solicitado a inserir sua chave de API e seu segredo de API do OpenTok — você pode obter esses valores na página do seu projeto em seu Account da Video API. Se você não tiver um Account no Heroku, precisará se cadastrar (é grátis).
Quer dar uma olhada no código? O botão acima executa o código do servidor a partir do aprendendo-opentok-php Repositório do GitHub. Acesse o repositório para revisar o código e consultar a documentação adicional — você pode até mesmo criar um fork do repositório e fazer alterações antes da implantação.
Configurando seu projeto
Para acompanhar este tutorial, clone o repositório do OpenTok Aplicativo de exemplo para Android repositório no GitHub:
git clone https://github.com/Vonage/vonage-video-android-sdk-samples.git
Em seguida, abra o Arquivamento - Java projeto no Android Studio.
Observação: Este tutorial aborda a versão em Java do aplicativo de exemplo do Android. Para uma versão em Kotlin com documentação, consulte o Repositório de aplicativos de exemplo para Android.
Importante: Você só pode arquivar sessões que utilizam o Roteador de mídia OpenTok (sessões com o modo de mídia configurado como “roteado”). O padrão aprendendo-opentok-php O código utilizado por este aplicativo tutorial utiliza sessões roteadas.
Explorando o código
Observação: O aplicativo de exemplo de compactação para Android se baseia no Bate-papo por vídeo básico app.
No ServerConfig arquivo, você define o CHAT_SERVER_URL propriedade na URL base:
public static final String CHAT_SERVER_URL = "https://YOURAPPNAME.herokuapp.com";
Os endpoints do serviço web que o aplicativo chama para iniciar a gravação do arquivo, interromper a gravação e reproduzir o vídeo gravado estão definidos no APIService interface:
public interface APIService {
@GET("session")
Call getSession();
@POST("archive/start")
@Headers("Content-Type: application/json")
Call startArchive(@Body StartArchiveRequest startArchiveRequest);
@POST("archive/{archiveId}/stop")
Call stopArchive(@Path("archiveId") String archiveId);
}
Quando o usuário seleciona o start archive, stop archive, e play archive itens do menu da barra de ações ou do menu de opções, o aplicativo chama a startArchive() e stopArchive(), e playArchive() métodos. Esses métodos chamam internamente os serviços web definidos acima:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle app bar item clicks here. The app bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
switch (item.getItemId()) {
case R.id.action_settings:
return true;
case R.id.action_start_archive:
startArchive();
return true;
case R.id.action_stop_archive:
stopArchive();
return true;
case R.id.action_play_archive:
playArchive();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
O MainActivity A classe inclui um archiveListener propriedade que implementa a Session.ArchiveListener interface que fornece callbacks para o tratamento de eventos relacionados a arquivos: onArchiveStarted e onArchiveStopped.
Quando o usuário clica no start archive botão, o aplicativo chama archive/start ponto final por meio do startArchive() método. Quando a gravação de arquivo começa, o onArchiveStarted() a função de retorno é acionada:
@Override
public void onArchiveStarted(Session session, String archiveId, String archiveName) {
currentArchiveId = archiveId;
setStopArchiveEnabled(true);
archivingIndicatorView.setVisibility(View.VISIBLE);
}
O onArchiveStarted() O método armazena o identificador do arquivo em um currentArchiveId propriedade. O método também chama setStopArchiveEnabled(true), o que faz com que o stop recording item do menu a ser exibido. E isso faz com que archivingIndicatorView a ser exibido (um ponto vermelho no vídeo).
Quando o usuário clica no stop archive botão, o aplicativo chama archive/stop ponto final por meio do stopArchive() método. Quando a gravação de arquivo é interrompida, o onArchiveStopped() a função de retorno é acionada:
@Override
public void onArchiveStopped(Session session, String archiveId) {
playableArchiveId = archiveId;
currentArchiveId = null;
setPlayArchiveEnabled(true);
setStartArchiveEnabled(true);
archivingIndicatorView.setVisibility(View.INVISIBLE);
}
O onArchiveStopped() O método armazena o identificador do arquivo em um playableArchiveId propriedade e conjuntos currentArchiveId para null. O método também chama setPlayArchiveEnabled(false), o que desativa o item de menu “Reproduzir arquivo” e chama setStartArchiveEnabled(true) para ativar o item de menu “Iniciar Arquivo”. E isso faz com que o archivingIndicatorView para ficar oculto.
Quando o usuário clica no play archive botão, o playArchive() O método abre uma página da web (no navegador do dispositivo), que exibe a gravação arquivada.
Notas:
-
Na maioria das aplicações, o controle sobre o registro de arquivo não seria concedido a cada usuário final.
-
É possível ter sessões arquivadas automaticamente, que são gravadas sempre que um cliente começa a transmitir um stream.
-
É recomendável configurar um destino no Amazon S3 ou no Microsoft Azure para armazenar suas gravações de arquivo.
Para obter mais informações sobre arquivamento, consulte o Guia do desenvolvedor sobre arquivamento do OpenTok.
Parabéns! Você concluiu o tutorial sobre arquivamento para Android.
Você pode continuar experimentando e ajustando o código que desenvolveu aqui, ou conferir o Próximos passos abaixo.
Próximos passos
Quando terminar esta seção, continue desenvolvendo e aprimorando seu aplicativo OpenTok com estes recursos úteis:
- Noções básicas sobre a Video API — Se ainda não o fez, reserve alguns minutos para aprender exatamente como o OpenTok funciona
- Exemplos de código — uma coleção de aplicativos de exemplo que exploram diversos recursos e casos de uso do OpenTok
- Guias para desenvolvedores — documentação detalhada sobre todos os recursos e funcionalidades do OpenTok
- Tutoriais adicionais — guias passo a passo para a implementação de outros recursos e casos de uso do OpenTok
- Referência do SDK do Android — explore os métodos e eventos associados ao SDK do OpenTok para Android