Iniciar transmissões ao vivo do YouTube em dispositivos Android

O link direto do YouTube para dispositivos móveis permite que os aplicativos Android iniciem uma transmissão ao vivo do YouTube diretamente de um dispositivo móvel. Um app só precisa fornecer um ponto de entrada, como um botão que o usuário pode clicar, que inicia o fluxo de transmissão ao vivo para dispositivos móveis pelo mecanismo de intenção do Android.

Exemplo

Este fluxo mostra a experiência do usuário em um app com links diretos para o app YouTube, em que o usuário acessa a tela "Configuração da transmissão ao vivo de dispositivo móvel".

  1. Primeiro, o usuário configura a transmissão, definindo o título, o modo de privacidade e outras opções de transmissão.
  2. Em seguida, o usuário navega até a tela "Thumbnail Photo" para definir uma imagem de miniatura para o stream.
  3. Por fim, o usuário inicia a transmissão ao vivo e transmite a visualização da câmera frontal ou traseira.

Requisitos do dispositivo

Os dispositivos Android precisam atender aos seguintes requisitos para oferecer suporte adequado ao YouTube ao vivo e ao link direto para transmissões ao vivo em dispositivos móveis:

  • Versão do Android:Marshmallow (API 23) ou mais recente
  • Câmera:pelo menos uma câmera capaz de gravar 720p a pelo menos 30 Hz
  • Microfone:microfone integrado
  • Codificador de áudio:codificador de áudio com aceleração de hardware capaz de codificar áudio PCM mono de 8 bits em AAC a 44,1 kHz ou superior
  • Codificador de vídeo:codificador de vídeo com aceleração de hardware capaz de codificar vídeo bruto 720P em H.264/AVC a 30 Hz ou mais.
  • App YouTube instalado: versão 13.02 ou mais recente

Especificação da intent de transmissão ao vivo de dispositivos móveis

Para vincular o fluxo de transmissão ao vivo do YouTube para dispositivos móveis, o app Android inicia uma intent. A intent inicia o processo de transmissão ao vivo iniciando uma Activity no aplicativo do YouTube.

Formato da intent

A intent de transmissão ao vivo para dispositivos móveis usa uma string Action personalizada para navegar até a atividade de criação de transmissão ao vivo no app YouTube. Ela também especifica o nome do pacote para o app YouTube para dispositivos móveis.

  • Ação: "com.google.android.youtube.intent.action.CREATE_LIVE_STREAM"
  • Pacote: "com.google.android.youtube"

Extras de intent

O fluxo de configuração do aplicativo do YouTube processa a configuração do stream. Os extras de intent a seguir definem parâmetros associados à transmissão ao vivo:

Parâmetros
Intent.EXTRA_REFERRER Obrigatório. Este parâmetro especifica um URI que representa o aplicativo que está iniciando a atividade de transmissão ao vivo. Esse valor precisa seguir o formato android-app: scheme com um nome de pacote. O valor permite atribuição e contabilidade precisas.
Intent.EXTRA_SUBJECT Opcional. Esse parâmetro fornece uma descrição em texto da transmissão ao vivo. Ele é colocado no pacote de extras de intent como uma String. O valor pode ser usado para anotar o stream com uma mensagem de marca, como "Transmitido ao vivo do DISPOSITIVO".

Como iniciar o fluxo de transmissão ao vivo

Etapa 1: verificar se há suporte

Primeiro, seu cliente precisa confirmar que a intent de transmissão ao vivo para dispositivos móveis pode ser iniciada verificando se o app YouTube está instalado no dispositivo e se a versão do app YouTube oferece suporte a transmissões ao vivo. O exemplo de código a seguir define dois métodos para fazer isso:

  • O método canResolveMobileLiveIntent verifica se o dispositivo oferece suporte à intent de transmissão ao vivo de dispositivo móvel.
  • O validateMobileLiveIntent chama o método canResolveMobileLiveIntent no contexto de uma instrução if-else.
    • Se o dispositivo oferecer suporte à Intent, ele poderá iniciar o fluxo de transmissão ao vivo.
    • Se o dispositivo não oferecer suporte à intenção, poderá solicitar que o usuário instale ou faça upgrade do app YouTube.
private boolean canResolveMobileLiveIntent(Context context) {
  Intent intent = new Intent("com.google.android.youtube.intent.action.CREATE_LIVE_STREAM")
    .setPackage("com.google.android.youtube");
  PackageManager pm = context.getPackageManager();
  List resolveInfo = 
    pm.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
  return resolveInfo != null && !resolveInfo.isEmpty();
}


private void validateMobileLiveIntent(Context context) {
  if (canResolveMobileLiveIntent(context)) {
    // Launch the live stream Activity
  } else {
    // Prompt user to install or upgrade the YouTube app
  }
}

Etapa 2: iniciar a atividade de transmissão ao vivo

Para iniciar o fluxo de transmissão ao vivo, seu app cliente cria e inicia uma intent, conforme mostrado no exemplo de código a seguir:

private Intent createMobileLiveIntent(Context context, String description) {
  Intent intent = new Intent("com.google.android.youtube.intent.action.CREATE_LIVE_STREAM")
      .setPackage("com.google.android.youtube");
  Uri referrer = new Uri.Builder()
      .scheme("android-app")
      .appendPath(context.getPackageName())
      .build();

  intent.putExtra(Intent.EXTRA_REFERRER, referrer);
  if (!TextUtils.isEmpty(description)) {
    intent.putExtra(Intent.EXTRA_SUBJECT, description);
  }
  return intent;
}


private void startMobileLive(Context context) {
  Intent mobileLiveIntent = createMobileLiveIntent(context, "Streaming via ...");
  startActivity(mobileLiveIntent);
}