Tutorial de arquivamento no iOS (Objective-C)

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, é 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).

Deploy

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 seguir este tutorial:

  1. Clonar o OpenTok Aplicativos de exemplo para iOS repositório no GitHub:

    git clone https://github.com/opentok/opentok-ios-sdk-samples.git
    
  2. No terminal, cd no subdiretório “Archiving” do projeto e, em seguida, execute pod install.

  3. Abra seu projeto no Xcode clicando duas vezes no novo arquivo Archiving.xcworkspace, localizado no diretório Archiving.

  4. Abra o arquivo Config.h e defina o SAMPLE_SERVER_BASE_URL string à URL base do servidor que implementa o aprendendo-opentok-php projeto. Este servidor fornece o ID da sessão e os tokens do OpenTok ao aplicativo de exemplo para iOS. Para obter mais informações, consulte Configurando o servidor.

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 exemplo de arquivamento se baseia no Bate-papo por vídeo básico em Objective-C, mas também há um tutorial básico sobre bate-papo por vídeo em Swift.

O exemplo de arquivamento adiciona as seguintes funcionalidades:

  • Toque no Iniciar gravação botão.

    Isso inicia a gravação dos fluxos de áudio e vídeo no OpenTok Media Server.

  • Toque no Parar a gravação botão para interromper a gravação.

  • Toque no Assistir à gravação botão para visualizar a gravação no navegador da web.

No arquivo Config.h, defina a seguinte constante como a URL base do serviço web que o aplicativo acessa para iniciar a gravação do arquivo, interromper a gravação e reproduzir o vídeo gravado:

#define SAMPLE_SERVER_BASE_URL

Se você não definir essa string, os botões “Iniciar gravação”, “Parar gravação” e “Visualizar arquivo” não estarão disponíveis no aplicativo.

Quando o usuário clica nos botões “Iniciar gravação” e “Parar gravação”, o aplicativo chama a função [self startArchive:] e [self stopArchive:] métodos. Esses métodos chamam serviços da Web que, por sua vez, chamam código do lado do servidor para iniciar e interromper gravações de arquivo.

Quando a gravação de arquivo é iniciada, a implementação do [OTSessionDelegate session:archiveStartedWithId:name:] o método é chamado:

- (void)     session:(OTSession*)session
archiveStartedWithId:(NSString *)archiveId
                name:(NSString *)name
{
    NSLog(@"session archiving started with id:%@ name:%@", archiveId, name);
    _archiveId = archiveId;
    _archiveIndicatorImg.hidden = NO;
    if (SAMPLE_SERVER_BASE_URL) {
        _archiveControlBtn.hidden = NO;
        [_archiveControlBtn setTitle: @"Stop recording" forState:UIControlStateNormal];
        _archiveControlBtn.hidden = NO;
        [_archiveControlBtn removeTarget:self
                                  action:NULL
                        forControlEvents:UIControlEventTouchUpInside];
        [_archiveControlBtn addTarget:self
                               action:@selector(stopArchive)
                     forControlEvents:UIControlEventTouchUpInside];
    }
}

Isso faz com que o _archivingIndicatorImg imagem (definida no storyboard principal) a ser exibida. O método armazena o ID do arquivo (que identifica o arquivo) em um archiveId propriedade. O método também altera o texto do botão de controle de arquivamento para “Interromper gravação”.

Quando o usuário clica no botão “Parar gravação”, o aplicativo envia o ID do arquivo ao serviço web, que interrompe a gravação desse arquivo.

Quando a gravação de arquivo é interrompida, a implementação do [OTSessionDelegate session:archiveStoppedWithId:] o método é chamado:

- (void)     session:(OTSession*)session
archiveStoppedWithId:(NSString *)archiveId
{
    NSLog(@"session archiving stopped with id:%@", archiveId);
    _archiveIndicatorImg.hidden = YES;
    if (SAMPLE_SERVER_BASE_URL) {
        _archiveControlBtn.hidden = NO;
        [_archiveControlBtn setTitle: @"View recording" forState:UIControlStateNormal];
        [_archiveControlBtn removeTarget:self
                                  action:NULL
                        forControlEvents:UIControlEventTouchUpInside];
        [_archiveControlBtn addTarget:self
                               action:@selector(loadArchivePlaybackInBrowser)
                     forControlEvents:UIControlEventTouchUpInside];
    }
}

Isso faz com que o _archivingIndicatorImg imagem (definida no storyboard principal) a ser exibida. Além disso, altera o texto do botão de controle de arquivamento para “Visualizar arquivo”. Quando o usuário clica nesse botão, o [self loadArchivePlaybackInBrowser:] O método abre uma página da web (no Safari) que exibe a gravação do arquivo.

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 iOS.
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: