Ajouter une compatibilité en direct à un récepteur Cast

1. Présentation

Logo Google Cast

Dans cet atelier de programmation, vous allez apprendre à créer une application Web Receiver personnalisée qui utilise l'API Cast Live Breaks.

Qu'est-ce que Google Cast ?

Google Cast permet aux utilisateurs de caster du contenu multimédia depuis un appareil mobile sur un téléviseur, et d'utiliser leur appareil mobile comme télécommande lors de la diffusion.

Le SDK Google Cast vous permet d'étendre les fonctionnalités de votre application afin de contrôler un téléviseur ou un système audio. Le SDK Cast vous permet d'ajouter les composants d'UI (interface utilisateur) requis, en fonction de la checklist de conception Google Cast.

La checklist de conception de Google Cast a été conçue pour garantir une expérience utilisateur simple et prévisible sur toutes les plates-formes compatibles.

Qu'allons-nous créer ?

À la fin de cet atelier de programmation, vous aurez créé un récepteur Cast qui exploite les API Live.

Points abordés

  • Gérer le contenu vidéo en direct dans Cast
  • Configurer les différents scénarios de streaming en direct compatibles avec Cast
  • Ajouter des données de programme à votre diffusion en direct

Prérequis

  • La dernière version du navigateur Google Chrome.
  • Un service d'hébergement HTTPS tel que Firebase Hosting ou ngrok.
  • Un appareil Google Cast, comme Chromecast ou Android TV, configuré pour accéder à Internet.
  • Un téléviseur ou un moniteur dotés d'une entrée HDMI, ou un Google Home Hub

Expérience

  • Vous devez avoir une connaissance préalable du développement Web.
  • Expérience dans la création d'applications Cast pour l'expéditeur et le récepteur.

Comment allez-vous utiliser ce tutoriel ?

Je vais le lire uniquement Je vais le lire et effectuer les exercices

Comment évalueriez-vous votre expérience de création d'applications Web ?

Débutant Intermédiaire Expert

2. Obtenir l'exemple de code

Vous pouvez télécharger tout l'exemple de code sur votre ordinateur…

puis décompresser le fichier ZIP téléchargé.

3. Déployer votre récepteur en local

Pour utiliser votre récepteur Web avec un appareil Cast, vous devez l'héberger à un emplacement auquel cet appareil a accès. Si vous disposez déjà d'un serveur compatible avec HTTPS, ignorez les instructions suivantes et notez l'URL, car vous en aurez besoin dans la section suivante.

Si vous ne disposez pas d'un serveur, vous pouvez utiliser Firebase Hosting ou ngrok.

Exécuter le serveur

Une fois le service de votre choix configuré, accédez à app-start et démarrez votre serveur.

Notez l'URL de votre récepteur hébergé. Vous en aurez besoin dans la section suivante.

4. Enregistrer une application dans la console développeur Cast

Vous devez enregistrer votre application pour pouvoir exécuter un récepteur personnalisé, tel qu'il est intégré dans cet atelier de programmation, sur des appareils Chromecast. Une fois votre application enregistrée, vous recevez un ID application que votre application émettrice doit utiliser pour effectuer des appels d'API (pour lancer une application réceptrice, par exemple).

Image de la console développeur du SDK Google Cast avec le bouton "Add New Application" (Ajouter une application) mis en évidence

Cliquez sur "Add new application" (Ajouter une application).

Image de l'écran "Nouvelle application réceptrice" avec l'option "Récepteur personnalisé" mise en évidence

Sélectionnez "Custom Receiver" (Récepteur personnalisé), c'est-à-dire ce que nous sommes en train de créer.

Image de l'écran "Nouveau récepteur personnalisé" montrant une URL qu'une personne est en train de saisir dans le champ "URL de l'application récepteur"

Saisissez les informations sur votre nouveau récepteur. Assurez-vous d'utiliser l'URL que vous avez obtenue

dans la dernière section. Prenez note de l'ID application attribué à votre nouveau récepteur.

Vous devez également enregistrer votre appareil Google Cast pour qu'il puisse accéder à votre application réceptrice avant sa publication. Une fois votre application réceptrice publiée, elle est accessible à tous les appareils Google Cast. Pour les besoins de cet atelier de programmation, il est conseillé d'utiliser une application réceptrice non publiée.

Image de la console développeur du SDK Google Cast avec le bouton "Add New Device" (Ajouter un appareil) mis en évidence

Cliquez sur "Add new Device" (Ajouter un nouvel appareil).

Image de la boîte de dialogue "Ajouter un appareil récepteur de cast"

Saisissez le numéro de série indiqué au dos de votre appareil Cast et attribuez-lui un nom descriptif. Pour connaître le numéro de série, vous pouvez également caster votre écran dans Chrome lorsque vous accédez à la console développeur du SDK Google Cast.

Veuillez patienter entre 5 et 15 minutes pour que le récepteur et l'appareil soient prêts à être testés. Une fois cette période écoulée, vous devez redémarrer votre appareil Cast.

5. Caster une diffusion en direct simple

Image d'un téléphone Android en train de lire une vidéo ; le message "Caster sur Salon" s'affiche en bas, juste au-dessus d'un ensemble de commandes du lecteur vidéoImage d'un écran de taille normale diffusant la même vidéo

Avant de commencer cet atelier de programmation, il peut être utile de consulter le guide du développeur pour les événements en direct, qui présente les API pour les événements en direct.

Pour notre émetteur, nous utiliserons Cactool pour lancer une session Cast. Le récepteur est conçu pour lancer automatiquement la lecture d'une diffusion en direct.

Le récepteur est composé de trois fichiers. Un fichier HTML de base appelé receiver.html, qui contient la structure principale de l'application. Vous n'aurez pas à modifier ce fichier. Il existe également un fichier nommé receiver.js, qui contient toute la logique du récepteur. Enfin, il existe également un metadata_service.js qui sera utilisé plus tard dans l'atelier de programmation pour simuler l'obtention des données du guide des programmes.

Pour commencer, ouvrez Cactool dans Chrome. Saisissez l'ID d'application du récepteur qui vous a été fourni dans la console développeur du SDK Cast, puis cliquez sur Définir.

Le framework Web Receiver Cast Application Framework (CAF) doit être informé que le contenu à lire est un flux en direct. Pour ce faire, modifiez l'application avec la ligne de code suivante. Ajoutez-le au corps principal de l'intercepteur de chargement dans receiver.js :

request.media.streamType = cast.framework.messages.StreamType.LIVE;

Si vous définissez le type de flux sur LIVE, l'UI en direct de CAF est activée. Le SDK Web Receiver passe automatiquement à la fin du flux. Les données du guide des programmes en direct n'ont pas encore été ajoutées. La barre de recherche représente donc la durée totale de la plage de recherche du flux.

Enregistrez vos modifications dans receiver.js, puis lancez une session Cast sur Cactool en cliquant sur le bouton Cast et en sélectionnant un appareil Cast cible. La diffusion en direct devrait commencer immédiatement.

6. Ajouter des données de guide des programmes

La prise en charge des contenus en direct par CAF inclut désormais l'affichage des données du guide des programmes dans les applications de récepteur et d'expéditeur. Nous encourageons vivement les fournisseurs de contenu à inclure des métadonnées de programmation dans leurs applications de récepteur pour améliorer l'expérience utilisateur, en particulier pour les diffusions en direct de longue durée comme les chaînes TV.

CAF permet de définir des métadonnées pour plusieurs programmes dans un même flux. En définissant des codes temporels de début et des durées sur les objets MediaMetadata, le récepteur met automatiquement à jour les métadonnées affichées sur les émetteurs et la superposition en fonction de la position actuelle du lecteur dans le flux. Vous trouverez ci-dessous un exemple d'API et de leur utilisation générale.

// A sample metadata object for a single tv show
const currentShow = new cast.framework.messages.TvShowMediaMetadata();
currentShow.episode = 15;
currentShow.seriesTitle = 'The Odyssey';
currentShow.title = 'Scylla and Charybdis';
currentShow.sectionStartAbsoluteTime = toUnixTimestamp('9:00 PM');
currentShow.sectionDuration = HOUR_IN_SECONDS;

Pour cet atelier de programmation, nous utiliserons un exemple de service de métadonnées pour fournir les métadonnées de notre diffusion en direct. Pour créer une liste de métadonnées de programme, créez un conteneur. ContainerMetadata contient une liste d'objets MediaMetadata pour un seul flux multimédia. Chaque objet MediaMetadata représente une section unique dans le conteneur. Lorsque la tête de lecture se trouve dans les limites d'une section donnée, ses métadonnées sont automatiquement copiées dans l'état du contenu multimédia. Ajoutez le code suivant au fichier receiver.js pour télécharger les exemples de métadonnées depuis notre service et fournir le conteneur à CAF.

/**
 *   Gets the current program guide data from the sample MetadataService. Once
 *   obtained, the guide information is added using QueueManager.
 */
async function loadGuideData() {
  const data = await MetadataService.fetchLiveMetadata();
  const containerMetadata = new cast.framework.messages.ContainerMetadata();
  containerMetadata.sections = data;

  playerManager.getQueueManager().setContainerMetadata(containerMetadata);
}

Ajoutez également un appel à la fonction de chargement des données du guide dans l'intercepteur de chargement :

loadGuideData();

Enregistrez le fichier receiver.js et lancez une session Cast. L'heure de début, l'heure de fin et le titre du programme doivent s'afficher à l'écran.

Un nouveau message d'état du contenu multimédia est envoyé du récepteur à tous les émetteurs lorsque la tête de lecture passe à une nouvelle section du conteneur, afin que les applications émettrices puissent mettre à jour leur UI. Nous recommandons aux applications réceptrices de mettre à jour les métadonnées du conteneur dans un intercepteur d'état du contenu multimédia pour continuer à fournir des informations sur le programme aux applications émettrices. Dans notre exemple de service, nous renvoyons les métadonnées du programme en cours, ainsi que celles des deux programmes suivants. Pour mettre à jour les métadonnées d'un flux, créez un conteneur et appelez setContainerMetadata comme dans l'exemple précédent.

7. Désactiver la recherche

La plupart des flux vidéo sont composés de segments contenant une série d'images vidéo. Sauf indication contraire, le CAF permettra aux utilisateurs de rechercher des contenus dans ces segments. Le Web Receiver peut le spécifier en appelant quelques API disponibles.

Dans l'intercepteur de chargement, supprimez la commande multimédia SEEK compatible. Cela désactive la recherche sur toutes les interfaces tactiles et d'envoi mobile. Ajoutez le code suivant après les définitions des variables d'instance du SDK dans receiver.js.

// Disable seeking
playerManager.removeSupportedMediaCommands(
    cast.framework.messages.Command.SEEK, true);

Pour désactiver les commandes vocales de recherche optimisées par l'Assistant, comme Ok Google, reviens en arrière de 60 secondes, l'intercepteur de recherche doit être utilisé. Cet intercepteur est appelé chaque fois qu'une requête de recherche est effectuée. Si la commande multimédia SEEK prise en charge est désactivée, l'intercepteur rejettera la requête de recherche. Ajoutez l'extrait de code suivant au fichier receiver.js :

/**
 * A seek interceptor is called whenever CAF receives a request to seek to
 * a different location in media. This interceptor can be used to modify that
 * seek request or disable seeking completely.
 */
playerManager.setMessageInterceptor(
    cast.framework.messages.MessageType.SEEK, (seekRequestData) => {
      // if the SEEK supported media command is disabled, block seeking
      if (!(playerManager.getSupportedMediaCommands() &
            cast.framework.messages.Command.SEEK)) {
        castDebugLogger.info(TAG, 'Seek blocked.');
        return null;
      }

      return seekRequestData;
    });

Enregistrez le fichier receiver.js et lancez une session Cast. Vous ne devriez plus pouvoir parcourir la diffusion en direct.

8. Félicitations

Vous savez maintenant comment créer une application réceptrice personnalisée à l'aide de la dernière version du SDK Récepteur Cast.

Pour en savoir plus, consultez le guide du développeur Live Streaming.