Cómo iniciar transmisiones en vivo de YouTube en dispositivos Android

El vínculo directo de YouTube para dispositivos móviles Live permite que las aplicaciones para Android inicien una transmisión en vivo de YouTube directamente desde un dispositivo móvil. Una app solo necesita proporcionar un punto de entrada, como un botón en el que el usuario pueda hacer clic, que inicie el flujo de Mobile Live a través del mecanismo de intents de Android.

Ejemplo

En este flujo, se muestra la experiencia del usuario de una app que vincula directamente a la aplicación de YouTube, en la que el usuario llega a la pantalla de configuración de la transmisión en vivo para dispositivos móviles.

  1. Primero, el usuario configura la transmisión, establece el título, el modo de privacidad y otras opciones de la transmisión.
  2. Luego, el usuario navega a la pantalla de la foto en miniatura para establecer una imagen en miniatura para la transmisión.
  3. Por último, el usuario inicia la transmisión en vivo y transmite la vista desde la cámara frontal o posterior.

Requisitos del dispositivo

Los dispositivos Android deben cumplir con los siguientes requisitos para admitir correctamente las transmisiones en vivo de YouTube y el vínculo directo de Mobile Live:

  • Versión de Android: Marshmallow (API 23) o versiones posteriores
  • Cámara: Al menos una cámara capaz de grabar a 720 p y, al menos, a 30 Hz
  • Micrófono: Micrófono integrado
  • Codificador de audio: Codificador de audio acelerado por hardware capaz de codificar audio mono PCM de 8 bits a AAC a 44.1 kHz o superior
  • Codificador de video: Codificador de video acelerado por hardware capaz de codificar video sin procesar de 720 p a H.264/AVC a 30 Hz o más
  • App de YouTube instalada: Versión 13.02 o posterior

Especificación de la intención de transmisión en vivo desde dispositivos móviles

Para vincularte al flujo de transmisión en vivo de YouTube para dispositivos móviles, tu app para Android inicia un Intent. El Intent inicia el proceso de transmisión en vivo con el inicio de una Activity en la aplicación de YouTube.

Formato del intent

El intent de transmisión en vivo para dispositivos móviles usa una cadena Action personalizada para navegar a la actividad de creación en vivo dentro de la app de YouTube. También especifica el nombre del paquete de la app de YouTube para dispositivos móviles.

  • Acción: “com.google.android.youtube.intent.action.CREATE_LIVE_STREAM”
  • Paquete: "com.google.android.youtube"

Extras de intención

El flujo de configuración de la aplicación de YouTube controla la configuración de la transmisión. Los siguientes parámetros adicionales de Intent establecen parámetros asociados con la transmisión en vivo:

Params
Intent.EXTRA_REFERRER Obligatorio. Este parámetro especifica un URI que representa la aplicación que inicia la actividad de transmisión en vivo. Este valor debe seguir el formato android-app: scheme con un nombre de paquete. El valor permite una atribución y una contabilización precisas.
Intent.EXTRA_SUBJECT Opcional. Este parámetro proporciona una descripción de texto de la transmisión en vivo. Se coloca en el paquete de extras del Intent como un String. El valor se puede usar para anotar la transmisión con un mensaje de marca, como "Transmitido en vivo desde DISPOSITIVO".

Cómo iniciar el flujo de transmisión en vivo

Paso 1: Verifica la compatibilidad

Primero, tu cliente debe confirmar que se puede iniciar la intención de transmisión en vivo para dispositivos móviles. Para ello, debe verificar que la app de YouTube esté instalada en el dispositivo y que la versión de la app de YouTube admita la transmisión en vivo. En la siguiente muestra de código, se definen dos métodos para hacerlo:

  • El método canResolveMobileLiveIntent verifica que el dispositivo admita la intención de transmisión en vivo desde dispositivos móviles.
  • El validateMobileLiveIntent llama al método canResolveMobileLiveIntent en el contexto de una instrucción if-else.
    • Si el dispositivo admite el intent, podría iniciar el flujo de transmisión en vivo.
    • Si el dispositivo no admite el intent, podría pedirle al usuario que instale o actualice la app de 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
  }
}

Las apps que se segmentan para Android 11 (nivel de API 30) o versiones posteriores deben declarar los requisitos de visibilidad de paquetes en el archivo AndroidManifest.xml para que PackageManager pueda consultar la aplicación de YouTube:

<queries>
  <package android:name="com.google.android.youtube" />
  <intent>
    <action android:name="com.google.android.youtube.intent.action.CREATE_LIVE_STREAM" />
  </intent>
</queries>

Paso 2: Inicia la actividad de transmisión en vivo

Para iniciar el flujo de transmisión en vivo, tu app cliente crea y lanza un Intent, como se muestra en la siguiente muestra de código:

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);
}