Google Cast: klíčové pojmy, protokol streamování a Cast SDK

Autor: IT Sectr Publikováno: 2026-04-30 Doba čtení: 10 min

Google Cast — je technologie od Googlu pro streamování multimediálního obsahu z mobilních zařízení na televizory a audio systémy přes protokol Cast. SDK umožňuje vývojářům přidat podporu Chromecastu do aplikací pro Android a iOS, přenášet video, audio a obrázky na velké obrazovky. Podle Google Cast Developer Documentation, 2025 se po celém světě prodalo více než 100 milionů zařízení Chromecast a Cast SDK se používá ve více než 40 000 aplikacích.

Hlavní

  • Google Cast — protokol a SDK pro streamování obsahu z mobilních zařízení na televizory a reproduktory
  • Odesílatel (Sender) — mobilní aplikace, která odesílá obsah na zařízení Cast
  • Přijímač (Receiver) — aplikace na televizoru (Chromecast), která přijímá a přehrává obsah
  • CAF SDK — Cast Application Framework, zjednodušené API pro integraci Cast (doporučováno Googlem)
  • Media Streams — streamování HLS, DASH a MP4 přes Cast s ovládáním přehrávání

Co je Google Cast?

Google Cast — je protokol pro bezdrátový přenos multimediálního obsahu vyvinutý společností Google pro streamování z mobilních zařízení, notebooků a tabletů na televizory, reproduktory a další obrazovky. Na rozdíl od AirPlay (Apple) nebo Miracast používá Cast model „odešli URL” (send-to-device): mobilní aplikace odešle Chromecastu URL obsahu a zařízení si samo načte a přehraje stream, aniž by zatěžovalo telefon.

Klíčovou výhodou Google Cast oproti přímému streamování (screen mirroring) — energetická účinnost. Po zahájení přehrávání telefon funguje pouze jako dálkové ovládání: uživatel může minimalizovat aplikaci, uzamknout obrazovku nebo přejít do jiné aplikace — video se stále přehrává na televizoru. Podle údajů Google (2025) spotřebovává Cast o 80 % méně energie na telefonu ve srovnání s mirroringovými řešeními.

Google Cast podporuje nejen Chromecast, ale také vestavěné přijímače Cast v televizorech Sony, TCL, Philips, Hisense a dalších výrobců s Google TV nebo Android TV. Cast je také podporován v audio systémech (Nest Audio, Sonos s Cast) a Chromecast Audio. Protokol Cast funguje přes Wi-Fi (2,4/5 GHz) a vyžaduje, aby se odesílající zařízení a přijímač nacházely ve stejné síti.

Architektura Cast: Odesílatel, Přijímač a protokoly

Architektura Google Cast se skládá ze tří komponent: Odesílatel (mobilní aplikace), Přijímač (aplikace na Chromecastu/televizoru) a transportní protokol. Odesílatel používá Cast SDK k detekci zařízení v síti, navázání spojení a odesílání příkazů k přehrávání. Přijímač je webová aplikace (HTML5 + CSS + JavaScript) běžící v prohlížeči Chromecastu, která načítá a přehrává obsah.

Protokol Google Cast je založen na DIAL (Discovery and Launch) pro detekci zařízení a proprietárním protokolu přes WebSocket pro ovládání přehrávání. DIAL používá SSDP (Simple Service Discovery Protocol) k vyhledávání zařízení Cast v lokální síti. Po detekci Odesílatel naváže WebSocket spojení s Přijímačem přes port 8008 nebo 8009 a odesílá příkazy ve formátu JSON: LOAD, PLAY, PAUSE, STOP, SEEK.

KomponentaPlatformaTechnologie
Odesílatel (Sender)Android / iOS / ChromeCast SDK (Java/Kotlin, Swift, JS)
Výchozí Přijímač (Default Receiver)Chromecast / Android TVVestavěný (konfigurace přes Google Cast Console)
Vlastní Přijímač (Custom Receiver)Chromecast / Android TVWebová aplikace (HTML5, CAF Receiver JS)
ProtokolLokální Wi-Fi síťWebSocket + JSON + DIAL/SSDP
Transport médiíInternetHLS, DASH, MP4 (přímé načítání Chromecastem)

Protokol Cast v2 pro ovládání přehrávání

Odesílatel odesílá Přijímači nikoli samotný obsah, ale URL (media URL) a metadata (název, obrázek, titulky). Přijímač si nezávisle načítá obsah z URL, což umožňuje telefonu neplýtvat baterií na přenos dat. Po zahájení přehrávání může Odesílatel odesílat příkazy pauzy, přetáčení, nastavení hlasitosti a přijímat stav přehrávání přes Cast Protocol v2.

Cast Application Framework (CAF): rychlá integrace

Cast Application Framework (CAF) — je zjednodušené API od Googlu pro integraci Cast do mobilních aplikací, představené v roce 2018. CAF nahrazuje zastaralé Cast SDK (CastCompanionLibrary) a poskytuje hotové komponenty UI: Cast Button (ikona detekce zařízení), Mini Controller (mini přehrávač ve spodní části obrazovky) a Expanded Controller (dálkové ovládání na celou obrazovku). CAF podporuje Android, iOS, Flutter a React Native.

Pro použití CAF nemusí vývojář psát vlastní Přijímač — Google poskytuje Výchozí Přijímač (Default Receiver), který automaticky načítá a přehrává obsah. Výchozí Přijímač podporuje HLS, DASH, MP4, WebM, MP3, obrázky a titulky. Konfigurace Přijímače se provádí v Google Cast Console — stačí zadat URL obsahu a Výchozí Přijímač se postará o zbytek. Vlastní Přijímač je vyžadován pouze pro nestandardní scénáře: vlastní rozhraní na televizoru, podpora DRM, fronty přehrávání.

kotlin
// Konfigurace možností CAF Receiver
val receiverOptions = CastReceiverOptions.Builder(context)
    .setReceiverApplicationId(
        CastMediaControlIntent.DEFAULT_MEDIA_RECEIVER_APPLICATION_ID
    )
    .build()

// Připojení kontextu Cast
val castContext = CastContext.getSharedInstance(context)
castContext.setReceiverOptions(receiverOptions)

Cast Connect: testování bez fyzického zařízení

CAF automaticky spravuje životní cyklus připojení: detekci zařízení přes Cast Button, navázání spojení, načítání médií, pauzu při dočasné ztrátě připojení a opětovné připojení. CAF také podporuje fronty přehrávání (media queues) pro playlists a tlačítko „Cast” na uzamčené obrazovce a v centru oznámení (Android). Minimální verze: Android 5.0 (API 21), iOS 14+.

Streamování médií: HLS, DASH a MP4 na Chromecastu

Google Cast podporuje hlavní formáty streamování: HLS (HTTP Live Streaming) od Apple, DASH (Dynamic Adaptive Streaming over HTTP) a progresivní MP4. Chromecast automaticky vybírá optimální kvalitu videa na základě rychlosti internetového připojení (adaptivní bitrate). Pro HLS a DASH Chromecast přepíná streamy v reálném čase bez zastavení přehrávání. HLS je podporován od verze firmwaru Chromecast 1.28+.

Pro streamování přes Google Cast musí být obsah přístupný na veřejné URL (HTTP/HTTPS) — Chromecast načítá obsah přímo ze serveru, nikoli z telefonu. DRM (Digital Rights Management) je podporováno přes Widevine: Chromecast podporuje Widevine L3 (všechna zařízení) a L1 (některé modely, např. Chromecast with Google TV). Pro práci s DRM je vyžadován Vlastní Přijímač s integrací Shaka Player nebo ExoPlayer. Podle Googlu podporuje Chromecast with Google TV 4K HDR s Widevine L1 pro Netflix, Disney+ a další služby.

kotlin
// Načtení médií na Chromecast přes 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)

Formáty titulků: Chromecast podporuje TTML, WebVTT a CEA-608. Titulky jsou přenášeny jako součást MediaInfo přes MediaTrack. Chromecast také podporuje asynchronní načítání obrázků (fotografií) s možností přejíždění mezi obrázky přes Cast Queue API. Pro audio Chromecast podporuje MP3, AAC, FLAC, WAV a OGG. Streamování audia přes Google Cast je podporováno na Chromecast Audio a Cast reproduktorech.

Komponenty UI Cast: Cast Button a Mini Controller

Cast Button — klíčová komponenta UI Google Cast SDK, která zobrazuje ikonu Cast a automaticky mění stav: neaktivní (žádná zařízení), dostupné (zařízení nalezena), připojeno (aktivní relace). Po stisknutí Cast Button se otevře dialog výběru zařízení. Komponenta je dostupná přes MediaRouteActionProvider (Android) nebo GCKUICastButton (iOS). Cast Button by měl být viditelný pouze tehdy, když jsou zařízení Cast v síti k dispozici — CAF automaticky skryje tlačítko, když žádná zařízení nejsou.

Mini Controller — panel ve spodní části obrazovky zobrazující název obsahu, obálku, tlačítka play/pause a zavření relace. Mini Controller se objeví automaticky, když je Cast relace aktivní a uživatel je na obrazovce, která nesouvisí s přehráváním. CAF poskytuje hotový MiniControllerFragment pro Android, který se vkládá do layoutu. Ve výchozím nastavení je Mini Controller ve spodní části obrazovky, ale může být nakonfigurován na libovolnou pozici.

kotlin
// Přizpůsobení Mini Controlleru pomocí stylů
// styles.xml
// <style name="CastMiniControllerStyle"
//     parent="Theme.GoogleCast">
//     <item name="castMiniBackgroundColor">#FF0000</item>
//     <item name="castShowImageThumbnail">true</item>
// </style>

// Programové ovládání Mini Controlleru
val miniController = findViewById<MiniControllerFragment>(
    R.id.miniController
)
miniController.setVisibility(
    isCastSessionActive()
)

Expanded Controller — dálkové ovládání na celou obrazovku pro ovládání přehrávání na televizoru, které se otevře po stisknutí Mini Controller. Expanded Controller zobrazuje: název, popis, obálku, průběhový pruh s možností přetáčení, tlačítka play/pause/stop, seznam skladeb (pokud existuje fronta), regulátor hlasitosti a tlačítko odpojení. CAF poskytuje hotový ExpandedControllerActivity, který se spouští automaticky. Pokud je potřeba vlastní rozhraní — rozšiřte základní ExpandedControllerActivity.

Vlastní Přijímač: vlastní rozhraní na televizoru

Vlastní Přijímač (Custom Receiver) — je webová aplikace (HTML5 + CSS + JavaScript), která se načte na Chromecast při spuštění Cast relace. Na rozdíl od Výchozího Přijímače umožňuje vlastní přijímač plnou kontrolu nad vzhledem obsahu na televizoru: obrázky na pozadí, animace, vlastní ovládací prvky, logo značky. Vlastní Přijímač se registruje v Google Cast Console a získává jedinečné Application ID.

Vývoj Vlastního Přijímače probíhá v JavaScriptu pomocí Cast Receiver Framework (CAF Receiver). CAF Receiver poskytuje API pro zpracování příchozích zpráv od Odesílatele, správu mediálního streamu, zpracování front a integraci s DRM. Přijímač pracuje v izolovaném prostředí prohlížeče Chromecastu (WebKit) s omezeným přístupem k DOM. Minimální požadavky: HTML5, CSS3, JavaScript ES6. Přijímač je hostován na HTTPS serveru.

js
// Základní Vlastní Přijímač na CAF
const context = cast.framework.CastReceiverContext.getInstance()
const playerManager = context.getPlayerManager()

playerManager.setMessageInterceptor(
    cast.framework.messages.MessageType.LOAD,
    (loadData) => {
        // Vlastní zpracování načítání médií
        console.log("Loading media:", loadData.media.contentId)
        return loadData
    }
)

context.start()

// Zpracování vlastních zpráv od Odesílatele
context.addCustomMessageListener("urn:x-cast:custom", (event) => {
    console.log("Custom data:", event.data)
})

Vývoj a nasazení Vlastního Přijímače

Vlastní Přijímač musí být otestován na skutečném zařízení přes Cast Developer Console. Google doporučuje používat Výchozí Přijímač pro standardní scénáře a vlastní pouze v případě potřeby vlastního rozhraní na televizoru, podpory DRM (Widevine) nebo front přehrávání s vlastní logikou. Přijímač nemá přístup k DOM stránky Odesílatele a nemůže spouštět JavaScript odeslaný Odesílatelem (bezpečnost).

Příklad kódu: integrace Google Cast na Androidu

Úplný příklad integrace Google Cast v aplikaci pro Android pomocí CAF. Aplikace přehrává video a umožňuje streamovat jej na Chromecast přes Cast Button. Kód zahrnuje konfiguraci CastOptions, inicializaci CastContext, správu připojení a načítání médií na zařízení 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)
    }
}

Pro testování Google Cast použijte virtuální zařízení Cast přes Chrome DevTools (karta Cast) nebo fyzický Chromecast. Google poskytuje testovací Application ID — CC1AD845 (Default Media Receiver). Před publikováním zaregistrujte svou aplikaci v Google Cast Console a získejte produkční Application ID. Cast SDK vyžaduje Google Play Services 21.0.0+ a Android 5.0+.

Typické problémy a ladění Cast

První častý problém — Cast Button se nezobrazuje. Příčiny: zařízení nejsou ve stejné Wi-Fi síti, Chromecast nepodporuje DIAL (starý firmware) nebo je detekce Wi-Fi na telefonu vypnutá. Řešení: zkontrolujte, že telefon a Chromecast jsou připojeny ke stejné síti (2,4 GHz nebo 5 GHz). Google Cast nefunguje přes hostující Wi-Fi sítě, VPN nebo firemní sítě s izolací klientů. Pro testování bez fyzického zařízení použijte Cast Connect.

Druhý problém — přerušení připojení během přehrávání. Chromecast může ztratit Wi-Fi připojení kvůli slabému signálu, přetížení kanálu nebo interferencím z mikrovlnné trouby (2,4 GHz). Řešení: umístěte Chromecast blíže k routeru, použijte 5 GHz (pokud je podporováno), nakonfigurujte QoS pro provoz Chromecastu. V aplikaci zpracovávejte callback onRemoteMediaPlayerStatusUpdated se stavem IDLE a důvodem chyby — při ztrátě připojení zobrazte oznámení a nabídněte opětovné připojení.

Třetí problém — obsah se na Chromecastu nepřehrává. Zkontrolujte: URL obsahu je přístupná z internetu (Chromecast načítá obsah přímo, ne přes telefon), formát je podporován Chromecastem, neexistuje blokování CORS (pro .m3u8 a .mpd). Pokud používáte Výchozí Přijímač, ujistěte se, že Application ID je správné. Pro Vlastní Přijímač zkontrolujte, že aplikace je hostována na HTTPS. Pro ladění použijte Cast SDK Logger: CastContext.getSharedInstance().setCastLogger(...).

Často kladené otázky

Čím se liší Google Cast od AirPlay a Miracast?

Google Cast používá model „odešli URL” — telefon pošle Chromecastu odkaz na obsah, který se načte přímo. AirPlay (Apple) — podobný protokol pro ekosystém Apple. Miracast — přímý přenos obrazovky (screen mirroring), který zatěžuje telefon. Cast spotřebovává o 80 % méně energie telefonu a umožňuje minimalizovat aplikaci bez zastavení přehrávání.

Je pro fungování Google Cast potřeba Chromecast?

Google Cast funguje nejen na Chromecastu, ale také na televizorech s vestavěným Google TV, Android TV a na audio systémech s podporou Cast (Nest Audio, Sonos). Pro vývoj a testování můžete použít virtuální zařízení Cast přes Chrome DevTools. Pro integraci Cast do aplikace není fyzické zařízení vyžadováno — použijte Cast Connect pro emulaci.

Podporuje Google Cast 4K a HDR?

Ano, Chromecast with Google TV (2020) a novější modely podporují 4K HDR s Dolby Vision, HDR10 a HDR10+. Standardní Chromecast (3. generace) podporuje 1080p 60fps. Chromecast Ultra — 4K HDR. Pro streamování 4K je vyžadována rychlost internetu alespoň 25 Mbps a podpora Widevine L1 pro DRM obsah (Netflix, Disney+).

Jak programově zastavit Cast relaci?

Pro zastavení relace zavolejte CastSession.endSession(boolean stopCasting) s parametrem true, pokud chcete zastavit přehrávání na televizoru, nebo false, pokud chcete pouze odpojit telefon. Můžete také použít metodu stop() na RemoteMediaClient. Uživatel může také zastavit relaci přes Cast Button nebo Mini Controller stisknutím tlačítka odpojení.

Lze přenášet vlastní data přes Google Cast?

Ano, pomocí vlastních zpráv (custom messages). Odesílatel odešle zprávu přes namespace (např. urn:x-cast:custom.namespace) s libovolným objektem JSON. Přijímač zpracuje zprávu přes addCustomMessageListener. Vlastní zprávy jsou podporovány pouze s Vlastním Přijímačem — Výchozí Přijímač nezpracovává vlastní namespace. Maximální velikost zprávy — 64 KB.

Shrnutí

  • Google Cast — protokol pro streamování obsahu z mobilních zařízení na televizory přes Chromecast a Android TV
  • Architektura — Odesílatel (aplikace) odešle URL obsahu, Přijímač (Chromecast) načte a přehraje
  • CAF SDK — Cast Application Framework s hotovými Cast Button, Mini Controller a Expanded Controller
  • Formáty — HLS, DASH, MP4, WebM, MP3, AAC, FLAC s adaptivním bitratem a titulky
  • Výchozí Přijímač — vestavěný přijímač Google pro rychlou integraci bez psaní kódu na televizoru
  • Vlastní Přijímač — webová aplikace HTML5/JS pro přizpůsobení rozhraní a DRM na televizoru
  • Ladění — zkontrolujte Wi-Fi síť, URL obsahu a podporu formátů; použijte Cast SDK Logger

Vyvineme mobilní aplikaci na klíč

IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.

Prodiskutovat projekt

Přečtěte si také