Google Cast : concepts clés, protocole de streaming et SDK Cast

Auteur : IT Sectr Publié le : 2026-04-30 Temps de lecture : 10 min

Google Cast est une technologie de Google permettant de diffuser du contenu multimédia depuis des appareils mobiles vers des télévisions et des systèmes audio via le protocole Cast. Le SDK permet aux développeurs d’ajouter la prise en charge de Chromecast aux applications Android et iOS, en envoyant des vidéos, de l’audio et des images sur de grands écrans. Selon Google Cast Developer Documentation, 2025, plus de 100 millions d’appareils Chromecast ont été vendus dans le monde et le SDK Cast est utilisé dans plus de 40 000 applications.

Points clés

  • Google Cast — un protocole et SDK pour diffuser du contenu depuis des appareils mobiles vers des télévisions et des enceintes
  • Sender — l’application mobile qui envoie le contenu à un appareil Cast
  • Receiver — l’application sur le téléviseur (Chromecast) qui reçoit et lit le contenu
  • CAF SDK — Cast Application Framework, une API simplifiée pour l’intégration Cast (recommandée par Google)
  • Media Streams — streaming HLS, DASH et MP4 via Cast avec contrôle de la lecture

Qu’est-ce que Google Cast ?

Google Cast est un protocole de transmission de contenu multimédia sans fil développé par Google pour le streaming depuis des appareils mobiles, ordinateurs portables et tablettes vers des téléviseurs, enceintes et autres écrans. Contrairement à AirPlay (Apple) ou Miracast, Cast utilise le modèle «envoi d’URL» (send-to-device) : l’application mobile envoie une URL de contenu à Chromecast, et l’appareil lui-même charge et lit le flux sans solliciter le téléphone.

L’avantage clé de Google Cast par rapport au streaming direct (miroir d’écran) est l’efficacité énergétique. Après le début de la lecture, le téléphone agit uniquement comme une télécommande : l’utilisateur peut minimiser l’application, verrouiller l’écran ou passer à une autre application — la vidéo continue de se lire sur le téléviseur. Selon Google (2025), Cast consomme 80 % d’énergie en moins sur le téléphone par rapport aux solutions de miroir.

Google Cast prend en charge non seulement Chromecast, mais aussi les récepteurs Cast intégrés dans les téléviseurs de Sony, TCL, Philips, Hisense et d’autres fabricants avec Google TV ou Android TV. Cast est également pris en charge dans les systèmes audio (Nest Audio, Sonos avec Cast) et Chromecast Audio. Le protocole Cast fonctionne sur Wi-Fi (2,4/5 GHz) et nécessite que l’expéditeur et le récepteur soient sur le même réseau.

Architecture Cast : Sender, Receiver et protocoles

L’architecture Google Cast se compose de trois composants : Sender (application mobile), Receiver (application sur Chromecast/TV) et le protocole de transport. Le Sender utilise le SDK Cast pour découvrir les appareils sur le réseau, établir une connexion et envoyer des commandes de lecture. Le Receiver est une application web (HTML5 + CSS + JavaScript) fonctionnant dans le navigateur Chromecast qui charge et lit le contenu.

Le protocole Google Cast est basé sur DIAL (Discovery and Launch) pour la découverte d’appareils et un protocole propriétaire sur WebSocket pour le contrôle de la lecture. DIAL utilise SSDP (Simple Service Discovery Protocol) pour trouver les appareils Cast sur le réseau local. Après la découverte, le Sender établit une connexion WebSocket avec le Receiver sur le port 8008 ou 8009 et envoie des commandes au format JSON : LOAD, PLAY, PAUSE, STOP, SEEK.

ComposantPlateformeTechnologie
SenderAndroid / iOS / ChromeCast SDK (Java/Kotlin, Swift, JS)
Default ReceiverChromecast / Android TVIntégré (configuré via Google Cast Console)
Custom ReceiverChromecast / Android TVApplication web (HTML5, CAF Receiver JS)
ProtocoleRéseau Wi-Fi localWebSocket + JSON + DIAL/SSDP
Transport multimédiaInternetHLS, DASH, MP4 (chargement direct Chromecast)

Protocole Cast v2 pour le contrôle de la lecture

Le Sender envoie au Receiver non pas le contenu lui-même, mais une URL (URL média) et des métadonnées (titre, image, sous-titres). Le Receiver charge le contenu de manière indépendante depuis l’URL, ce qui économise la batterie du téléphone en évitant la transmission de données. Après le début de la lecture, le Sender peut envoyer des commandes de pause, de retour, de réglage du volume et recevoir l’état de la lecture via Cast Protocol v2.

Cast Application Framework (CAF) : intégration rapide

Cast Application Framework (CAF) est une API simplifiée de Google pour intégrer Cast dans les applications mobiles, présentée en 2018. CAF remplace l’ancien SDK Cast (CastCompanionLibrary) et fournit des composants d’interface prêts à l’emploi : Cast Button (icône de découverte d’appareils), Mini Controller (mini-lecteur en bas de l’écran) et Expanded Controller (télécommande plein écran). CAF prend en charge Android, iOS, Flutter et React Native.

Pour utiliser CAF, le développeur n’a pas besoin d’écrire son propre Receiver — Google fournit un Default Receiver qui charge et lit le contenu automatiquement. Le Default Receiver prend en charge HLS, DASH, MP4, WebM, MP3, les images et les sous-titres. La configuration du Receiver s’effectue dans Google Cast Console — il suffit de spécifier l’URL du contenu et le Default Receiver s’occupe du reste. Un Receiver personnalisé n’est nécessaire que pour les scénarios non standard : interface TV personnalisée, prise en charge DRM, files d’attente de lecture.

kotlin
// Configuration des options CAF Receiver
val receiverOptions = CastReceiverOptions.Builder(context)
    .setReceiverApplicationId(
        CastMediaControlIntent.DEFAULT_MEDIA_RECEIVER_APPLICATION_ID
    )
    .build()

// Connexion du Cast Context
val castContext = CastContext.getSharedInstance(context)
castContext.setReceiverOptions(receiverOptions)

Cast Connect : test sans appareil physique

CAF gère automatiquement le cycle de vie de la connexion : découverte d’appareils via Cast Button, établissement de la connexion, chargement des médias, pause en cas de perte temporaire de connexion et reconnexion. CAF prend également en charge les files d’attente de lecture (media queues) pour les listes de lecture et le bouton Cast sur l’écran de verrouillage et le centre de notifications (Android). Version minimale : Android 5.0 (API 21), iOS 14+.

Streaming multimédia : HLS, DASH et MP4 sur Chromecast

Google Cast prend en charge les principaux formats de streaming : HLS (HTTP Live Streaming) d’Apple, DASH (Dynamic Adaptive Streaming over HTTP) et MP4 progressif. Chromecast sélectionne automatiquement la qualité vidéo optimale en fonction de la vitesse de connexion Internet (débit adaptatif). Pour HLS et DASH, Chromecast change de flux en temps réel sans interrompre la lecture. HLS est pris en charge à partir de la version de firmware Chromecast 1.28+.

Pour le streaming via Google Cast, le contenu doit être accessible via une URL publique (HTTP/HTTPS) — Chromecast charge le contenu directement depuis le serveur, pas depuis le téléphone. DRM (Gestion des droits numériques) est pris en charge via Widevine : Chromecast prend en charge Widevine L3 (tous les appareils) et L1 (certains modèles, comme Chromecast with Google TV). Travailler avec DRM nécessite un Receiver personnalisé avec intégration Shaka Player ou ExoPlayer. Selon Google, Chromecast with Google TV prend en charge la 4K HDR avec Widevine L1 pour Netflix, Disney+ et d’autres services.

kotlin
// Chargement des médias sur Chromecast via CAF
val mediaInfo = MediaInfo.Builder(Uri.parse(videoUrl))
    .setStreamType(MediaInfo.STREAM_TYPE_BUFFERED)
    .setContentType("video/mp4")
    .setMetadata(MediaMetadata(MediaMetadata.MEDIA_TYPE_MOVIE)
        .putString(MediaMetadata.KEY_TITLE, title)
        .putString(MediaMetadata.KEY_SUBTITLE, subtitle))
    .build()

CastSession.RemoteMediaClient
    ?.load(mediaInfo, autoPlay = true)

Formats de sous-titres : Chromecast prend en charge TTML, WebVTT et CEA-608. Les sous-titres sont transmis dans le cadre de MediaInfo via MediaTrack. Chromecast prend également en charge le chargement asynchrone d’images (photos) avec possibilité de balayer entre les images via Cast Queue API. Pour l’audio, Chromecast prend en charge MP3, AAC, FLAC, WAV et OGG. Le streaming audio via Google Cast est pris en charge sur Chromecast Audio et les enceintes Cast.

Composants UI Cast : Cast Button et Mini Controller

Cast Button est un composant d’interface clé du SDK Google Cast qui affiche l’icône Cast et change automatiquement d’état : inactif (aucun appareil), disponible (appareils trouvés), connecté (session active). En cliquant, Cast Button ouvre une boîte de dialogue de sélection d’appareil. Le composant est disponible via MediaRouteActionProvider (Android) ou GCKUICastButton (iOS). Le bouton Cast ne doit être visible que lorsque des appareils Cast sont disponibles sur le réseau — CAF masque automatiquement le bouton si aucun appareil n’est trouvé.

Mini Controller est un panneau en bas de l’écran affichant le titre du contenu, la couverture, les boutons lecture/pause et le bouton de fermeture de session. Le Mini Controller apparaît automatiquement lorsqu’une session Cast est active et que l’utilisateur se trouve sur un écran non lié à la lecture. CAF fournit un MiniControllerFragment prêt pour Android qui est intégré dans la mise en page. Par défaut, le Mini Controller se trouve en bas de l’écran mais peut être positionné n’importe où.

kotlin
// Personnalisation du Mini Controller via les styles
// styles.xml
// <style name="CastMiniControllerStyle"
//     parent="Theme.GoogleCast">
//     <item name="castMiniBackgroundColor">#FF0000</item>
//     <item name="castShowImageThumbnail">true</item>
// </style>

// Contrôle programmatique du Mini Controller
val miniController = findViewById<MiniControllerFragment>(
    R.id.miniController
)
miniController.setVisibility(
    isCastSessionActive()
)

Expanded Controller est un contrôle de lecture plein écran sur le téléviseur, ouvert en cliquant sur le Mini Controller. L’Expanded Controller affiche : titre, description, couverture, barre de progression avec possibilité de recherche, boutons lecture/pause/stop, liste des pistes (si en file d’attente), réglage du volume et bouton de déconnexion. CAF fournit une ExpandedControllerActivity prête qui se lance automatiquement. Si une interface personnalisée est nécessaire, étendez l’ExpandedControllerActivity de base.

Receiver personnalisé : votre propre interface sur le téléviseur

Un Receiver personnalisé est une application web (HTML5 + CSS + JavaScript) qui se charge sur Chromecast au début d’une session Cast. Contrairement au Default Receiver, un Receiver personnalisé permet un contrôle total de l’apparence du contenu sur le téléviseur : images de fond, animations, contrôles personnalisés, logo de la marque. Le Receiver personnalisé est enregistré dans Google Cast Console et reçoit un ID d’application unique.

Le développement d’un Receiver personnalisé se fait en JavaScript en utilisant le Cast Receiver Framework (CAF Receiver). CAF Receiver fournit une API pour traiter les messages entrants du Sender, gérer le flux multimédia, traiter les files d’attente et s’intégrer avec DRM. Le Receiver s’exécute dans un environnement navigateur isolé sur Chromecast (WebKit) avec un accès limité au DOM. Configuration minimale requise : HTML5, CSS3, JavaScript ES6. Le Receiver est hébergé sur un serveur HTTPS.

js
// Receiver personnalisé de base sur CAF
const context = cast.framework.CastReceiverContext.getInstance()
const playerManager = context.getPlayerManager()

playerManager.setMessageInterceptor(
    cast.framework.messages.MessageType.LOAD,
    (loadData) => {
        // Gestion personnalisée du chargement des médias
        console.log("Loading media:", loadData.media.contentId)
        return loadData
    }
)

context.start()

// Gestion des messages personnalisés du Sender
context.addCustomMessageListener("urn:x-cast:custom", (event) => {
    console.log("Custom data:", event.data)
})

Développement et déploiement d’un Receiver personnalisé

Un Receiver personnalisé doit être testé sur un appareil réel via la Cast Developer Console. Google recommande d’utiliser le Default Receiver pour les scénarios standard et un Receiver personnalisé uniquement lorsqu’une interface TV personnalisée, une prise en charge DRM (Widevine) ou des files d’attente de lecture avec logique personnalisée sont nécessaires. Le Receiver n’a pas accès au DOM de la page Sender et ne peut pas exécuter le JavaScript envoyé par le Sender (sécurité).

Exemple de code : intégration de Google Cast sur Android

Un exemple complet d’intégration de Google Cast dans une application Android utilisant CAF. L’application lit une vidéo et permet de la diffuser sur Chromecast via le bouton Cast. Le code comprend la configuration CastOptions, l’initialisation CastContext, la gestion de la connexion et le chargement des médias sur l’appareil Cast.

kotlin
class CastPlayerActivity : AppCompatActivity() {

    private lateinit var castContext: CastContext

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setupCast()
        setContentView(R.layout.activity_player)
    }

    private fun setupCast() {
        CastOptions.Builder()
            .setReceiverApplicationId(
                CastMediaControlIntent.DEFAULT_MEDIA_RECEIVER_APPLICATION_ID
            )
            .build()
            .let {
                castContext = CastContext.getSharedInstance(this)
            }
    }

    fun castVideo(videoUrl: String, title: String) {
        val mediaInfo = MediaInfo.Builder(Uri.parse(videoUrl))
            .setContentType("video/mp4")
            .setStreamType(MediaInfo.STREAM_TYPE_BUFFERED)
            .setMetadata(MediaMetadata(MediaMetadata.MEDIA_TYPE_MOVIE)
                .putString(MediaMetadata.KEY_TITLE, title))
            .build()

        castContext.sessionManager.getCurrentCastSession()
            ?.remoteMediaClient
            ?.load(mediaInfo)
    }
}

Pour tester Google Cast, utilisez un appareil Cast virtuel via Chrome DevTools (onglet Cast) ou un Chromecast physique. Google fournit un ID d’application de test — CC1AD845 (Default Media Receiver). Avant la publication, enregistrez votre application dans Google Cast Console et obtenez un ID d’application de production. Le SDK Cast nécessite Google Play Services 21.0.0+ et Android 5.0+.

Problèmes courants et débogage Cast

Le premier problème courant — Cast Button ne s’affiche pas. Causes : les appareils ne sont pas sur le même réseau Wi-Fi, Chromecast ne prend pas en charge DIAL (firmware obsolète), ou la découverte Wi-Fi est désactivée sur le téléphone. Solution : vérifiez que le téléphone et Chromecast sont connectés au même réseau (2,4 GHz ou 5 GHz). Google Cast ne fonctionne pas sur les réseaux Wi-Fi invités, les VPN ou les réseaux d’entreprise avec isolation des clients. Utilisez Cast Connect pour tester sans appareil physique.

Le deuxième problème — la connexion se coupe pendant la lecture. Chromecast peut perdre la connexion Wi-Fi en raison d’un signal faible, d’une congestion du canal ou d’interférences d’un micro-ondes (2,4 GHz). Solution : placez Chromecast plus près du routeur, utilisez le 5 GHz (si pris en charge), configurez QoS pour le trafic Chromecast. Dans l’application, traitez le callback onRemoteMediaPlayerStatusUpdated avec l’état IDLE et la raison d’erreur — en cas de perte de connexion, affichez une notification et proposez de vous reconnecter.

Le troisième problème — le contenu ne se lit pas sur Chromecast. Vérifiez : l’URL du contenu est accessible depuis Internet (Chromecast charge le contenu directement, pas via le téléphone), le format est pris en charge par Chromecast et il n’y a pas de blocage CORS (pour .m3u8 et .mpd). Si vous utilisez le Default Receiver, assurez-vous que l’ID d’application est correct. Pour un Receiver personnalisé, vérifiez que l’application est hébergée sur HTTPS. Utilisez le Cast SDK Logger pour le débogage : CastContext.getSharedInstance().setCastLogger(...).

Foire aux questions

En quoi Google Cast diffère-t-il d’AirPlay et Miracast ?

Google Cast utilise le modèle «envoi d’URL» — le téléphone envoie à Chromecast un lien de contenu qui se charge directement. AirPlay (Apple) est un protocole similaire pour l’écosystème Apple. Miracast est un miroir d’écran direct qui sollicite le téléphone. Cast consomme 80 % de batterie en moins sur le téléphone et permet de minimiser l’application sans arrêter la lecture.

Ai-je besoin de Chromecast pour que Google Cast fonctionne ?

Google Cast fonctionne non seulement sur Chromecast, mais aussi sur les téléviseurs avec Google TV intégré, Android TV, ainsi que sur les systèmes audio avec prise en charge Cast (Nest Audio, Sonos). Pour le développement et les tests, vous pouvez utiliser un appareil Cast virtuel via Chrome DevTools. Pour l’intégration de Cast dans une application, un appareil physique n’est pas nécessaire — utilisez Cast Connect pour l’émulation.

Google Cast prend-il en charge la 4K et le HDR ?

Oui, Chromecast with Google TV (2020) et les modèles plus récents prennent en charge la 4K HDR avec Dolby Vision, HDR10 et HDR10+. Le Chromecast standard (3e génération) prend en charge 1080p 60fps. Chromecast Ultra — 4K HDR. Pour le streaming en 4K, une vitesse Internet d’au moins 25 Mbps et la prise en charge Widevine L1 pour le contenu DRM (Netflix, Disney+) sont nécessaires.

Comment arrêter une session Cast par programmation ?

Pour arrêter une session, appelez CastSession.endSession(boolean stopCasting) avec true si vous devez arrêter la lecture sur le téléviseur, ou false si vous souhaitez simplement déconnecter le téléphone. Vous pouvez également utiliser la méthode stop() sur RemoteMediaClient. L’utilisateur peut également arrêter la session via le bouton Cast ou Mini Controller en appuyant sur le bouton de déconnexion.

Puis-je envoyer des données personnalisées via Google Cast ?

Oui, via des messages personnalisés (custom messages). Le Sender envoie un message via un espace de noms (par exemple urn:x-cast:custom.namespace) avec un objet JSON arbitraire. Le Receiver traite le message via addCustomMessageListener. Les messages personnalisés ne sont pris en charge qu’avec un Receiver personnalisé — le Default Receiver ne traitre pas les espaces de noms personnalisés. La taille maximale du message est de 64 Ko.

Résumé

  • Google Cast — un protocole de streaming de contenu depuis des appareils mobiles vers les téléviseurs via Chromecast et Android TV
  • Architecture — le Sender (application) envoie une URL de contenu, le Receiver (Chromecast) charge et lit
  • CAF SDK — Cast Application Framework avec des composants prêts à l’emploi : Cast Button, Mini Controller et Expanded Controller
  • Formats — HLS, DASH, MP4, WebM, MP3, AAC, FLAC avec débit adaptatif et sous-titres
  • Default Receiver — le récepteur intégré de Google pour une intégration rapide sans code côté TV
  • Receiver personnalisé — une application web en HTML5/JS pour personnaliser l’interface et le DRM sur le téléviseur
  • Débogage — vérifiez le réseau Wi-Fi, l’URL du contenu et la prise en charge des formats ; utilisez Cast SDK Logger

Nous développerons une application mobile clé en main

IT Sectr crée des applications iOS et Android pour les startups et les entreprises depuis 2017. Nous vous conseillerons et vous proposerons la meilleure solution.

Discuter du projet

Lisez aussi