Lancement de diffusions en direct YouTube sur les appareils Android

Le lien profond YouTube pour mobile Live permet aux applications Android de lancer une diffusion en direct YouTube directement depuis un appareil mobile. Une application n'a besoin de fournir qu'un point d'entrée, tel qu'un bouton sur lequel l'utilisateur peut cliquer, qui démarre le flux Mobile Live à l'aide du mécanisme d'intent Android.

Exemple

Ce flux montre l'expérience utilisateur d'une application avec lien profond vers l'application YouTube, où l'utilisateur accède à l'écran de configuration de la diffusion en direct sur mobile.

  1. Tout d'abord, l'utilisateur configure la diffusion en définissant le titre, le mode de confidentialité et d'autres options de diffusion.
  2. L'utilisateur accède ensuite à l'écran "Photo miniature" pour définir une image miniature pour le flux.
  3. Enfin, l'utilisateur lance la diffusion en direct et diffuse la vue de la caméra avant ou arrière.

Écran de configuration de la diffusion en direct sur mobile Écran de la vignette de la photo Écran de diffusion en direct sur mobile

Configuration d'appareil requise

Les appareils Android doivent répondre aux exigences suivantes pour prendre en charge correctement la diffusion en direct sur YouTube et le lien profond Mobile Live :

  • Version d'Android : Marshmallow (API 23) ou version ultérieure
  • Caméra : au moins une caméra capable d'enregistrer en 720p à au moins 30 Hz
  • Micro : micro intégré
  • Encodeur audio : encodeur audio à accélération matérielle capable d'encoder du contenu audio mono PCM 8 bits au format AAC à 44,1 kHz ou plus
  • Encodeur vidéo : encodeur vidéo avec accélération matérielle capable d'encoder une vidéo brute 720p en H.264/AVC à 30 Hz ou plus
  • Application YouTube installée : version 13.02 ou ultérieure

Spécification de l'intention de diffusion en direct sur mobile

Pour créer un lien vers le flux de streaming en direct YouTube sur mobile, votre application Android lance un intent. L'intent lance le processus de diffusion en direct en démarrant une activité dans l'application YouTube.

Format d'intent

L'intent de diffusion en direct sur mobile utilise une chaîne Action personnalisée pour accéder à l'activité de création de diffusion en direct dans l'application YouTube pour mobile. Il spécifie également le nom du package de l'application YouTube pour mobile.

  • Action : "com.google.android.youtube.intent.action.CREATE_LIVE_STREAM"
  • Package : "com.google.android.youtube"

Extras d'intent

Le flux de configuration de l'application YouTube gère la configuration du flux. Les extras d'intent suivants définissent les paramètres associés à la diffusion en direct :

Paramètres
Intent.EXTRA_REFERRER Obligatoire. Ce paramètre spécifie un URI qui représente l'application lançant l'activité de diffusion en direct. Cette valeur doit respecter le format android-app: scheme avec un nom de package. Cette valeur permet d'assurer une attribution et une comptabilisation précises.
Intent.EXTRA_SUBJECT Facultatif. Ce paramètre fournit une description textuelle de la diffusion en direct. Il est placé dans le bundle d'extras de l'intent en tant que String. Cette valeur peut être utilisée pour annoter le flux avec un message de marque, tel que "Diffusé en direct depuis APPAREIL".

Lancement du flux de streaming en direct

Suivez les deux étapes ci-dessous pour vérifier la compatibilité de l'appareil et démarrer l'activité en direct sur mobile depuis votre application Android.

Étape 1 : Vérifiez la compatibilité

Votre client doit d'abord confirmer que l'intent de diffusion en direct sur mobile peut être lancé en vérifiant que l'application YouTube est installée sur l'appareil et que la version de l'application YouTube est compatible avec la diffusion en direct. L'exemple de code suivant définit deux méthodes pour ce faire :

  • La méthode canResolveMobileLiveIntent vérifie que l'appareil est compatible avec l'intent Mobile Live.

  • validateMobileLiveIntent appelle la méthode canResolveMobileLiveIntent dans le contexte d'une instruction if-else.

    • Si l'appareil est compatible avec l'intent, il peut lancer le flux de diffusion en direct.
    • Si l'appareil n'est pas compatible avec l'intent, il peut inviter l'utilisateur à installer ou à mettre à jour l'application 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> resolveInfo =
    pm.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
  return resolveInfo != null && !resolveInfo.isEmpty();
}


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

Les applications ciblant Android 11 (niveau d'API 30) ou version ultérieure doivent déclarer les exigences de visibilité du package dans le fichier AndroidManifest.xml afin que PackageManager puisse interroger l'application YouTube :

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

Étape 2 : Lancez l'activité de diffusion en direct

Pour démarrer le flux de streaming en direct, votre application cliente crée et lance un intent, comme illustré dans l'exemple de code suivant :

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