Google Cast — a Google technológiája multimédiás tartalmak streamelésére mobileszközökről televíziókra és audiorendszerekre a Cast protokollon keresztül. Az SDK lehetővé teszi a fejlesztők számára, hogy Chromecast-támogatást adjanak Android és iOS alkalmazásokhoz, videókat, audiót és képeket nagy képernyőkre továbbítva. A Google Cast Developer Documentation, 2025 szerint világszerte több mint 100 millió Chromecast-eszközt adtak el, és a Cast SDK-t több mint 40.000 alkalmazásban használják.
Főbb pontok
Google Cast — egy vezeték nélküli multimédia-átviteli protokoll, amelyet a Google fejlesztett ki mobileszközökről, laptopokról és tabletekről televíziókra, hangszórókra és más képernyőkre történő streameléshez. Az AirPlay-től (Apple) vagy a Miracast-tól eltérően a Cast a „URL küldése” (send-to-device) modellt használja: a mobilalkalmazás elküldi a tartalom URL-jét a Chromecastnak, és az eszköz maga tölti be és játssza le a streame-t, nem terhelve a telefont.
A Google Cast fő előnye a közvetlen streameléssel (screen mirroring) szemben — az energiahatékonyság. A lejátszás megkezdése után a telefon csak távirányítóként működik: a felhasználó minimalizálhatja az alkalmazást, lezárhatja a képernyőt vagy átválthat egy másik alkalmazásba — a video tovább játszódik a televízión. A Google (2025) adatai szerint a Cast 80%-kal kevesebb energiát fogyaszt a telefonon a mirroring megoldásokhoz képest.
A Google Cast nem csak a Chromecastot támogatja, hanem a Sony, TCL, Philips, Hisense és más gyártók televízióiba épített Cast-veveőket is, amelyek Google TV-vel vagy Android TV-vel rendelkeznek. A Cast audiorendszerekben (Nest Audio, Cast-kompatibilis Sonos) és Chromecast Audio-ban is támogatott. A Cast protokoll Wi-Fi-n (2,4/5 GHz) keresztül működik, és megköveteli, hogy a küldő eszköz és a veveő ugyanabban a hálózatban legyen.
A Google Cast architektúra három komponensből áll: Feladó (mobilalkalmazás), Veveő (alkalmazás a Chromecaston/televízión) és szállítási protokoll. A Feladó a Cast SDK-t használja az eszközök hálózatban történő észlelésére, kapcsolat létesítésére és lejátszási parancsok küldésére. A Veveő egy webalkalmazás (HTML5 + CSS + JavaScript), amely a Chromecast böngészőjében fut, betölti és lejátssza a tartalmat.
A Google Cast protokoll a DIAL (Discovery and Launch) alapokra épül az eszközök észleléséhez és egy saját protokollra a WebSocketen keresztül a lejátszás vezérléséhez. A DIAL az SSDP-t (Simple Service Discovery Protocol) használja a Cast-eszközök kereséséhez a helyi hálózatban. Az észlelés után a Feladó WebSocket-kapcsolatot létesít a Veveővel a 8008-as vagy 8009-es porton keresztül, és JSON formátumban küld parancsokat: LOAD, PLAY, PAUSE, STOP, SEEK.
| Komponens | Platform | Technológia |
|---|---|---|
| Feladó (Sender) | Android / iOS / Chrome | Cast SDK (Java/Kotlin, Swift, JS) |
| Alapértelmezett Veveő (Default Receiver) | Chromecast / Android TV | Beépített (beállítás a Google Cast Console-on keresztül) |
| Egyéni Veveő (Custom Receiver) | Chromecast / Android TV | Webalkalmazás (HTML5, CAF Receiver JS) |
| Protokoll | Helyi Wi-Fi hálózat | WebSocket + JSON + DIAL/SSDP |
| Média szállítás | Internet | HLS, DASH, MP4 (közvetlen betöltés a Chromecast által) |
Feladó nem magát a tartalmat küldi a Veveőnek, hanem az URL-t (media URL) és a metaadatokat (név, kép, feliratok). A Veveő önállóan tölti be a tartalmat az URL-ről, ami lehetővé teszi, hogy a telefon ne pazarolja az akkumulátort az adatátvitelre. A lejátszás megkezdése után a Feladó szünet, visszatekerés, hangerőszabályzás parancsokat küldhet és lejátszási állapotot kaphat a Cast Protocol v2-n keresztül.
Cast Application Framework (CAF) — egy egyszerűsített API a Google-tól a Cast mobilalkalmazásokba történő integrálására, amelyet 2018-ban vezettek be. A CAF felváltja a régi Cast SDK-t (CastCompanionLibrary), és kész UI-komponenseket biztosít: Cast Button (eszközészlelés ikon), Mini Controller (mini lejátszó a képernyő alján) és Expanded Controller (teljes képernyős távirányító). A CAF támogatja az Androidot, iOS-t, Flutter-t és React Native-t.
A CAF használatához a fejlesztőnek nem kell saját Veveőt írnia — a Google biztosítja az Alapértelmezett Veveőt (Default Receiver), amely automatikusan betölti és lejátssza a tartalmat. Az Alapértelmezett Veveő támogatja a HLS, DASH, MP4, WebM, MP3, képek és feliratok formátumokat. A Veveő konfigurálása a Google Cast Console-ban történik — elegendő megadni a tartalom URL-jét, és az Alapértelmezett Veveő elvégzi a többit. Egyéni Veveő csak nem szabványos forgatókönyvek esetén szükséges: saját interfész a televízión, DRM-támogatás, lejátszási sorok.
// CAF Receiver opciók konfigurálása
val receiverOptions = CastReceiverOptions.Builder(context)
.setReceiverApplicationId(
CastMediaControlIntent.DEFAULT_MEDIA_RECEIVER_APPLICATION_ID
)
.build()
// Cast kontextus csatlakoztatása
val castContext = CastContext.getSharedInstance(context)
castContext.setReceiverOptions(receiverOptions)CAF automatikusan kezeli a kapcsolat életciklusát: eszközök észlelése a Cast Button-on keresztül, kapcsolat létesítése, média betöltése, szünet átmeneti kapcsolatvesztés esetén és újracsatlakozás. A CAF támogatja továbbá a lejátszási sorokat (media queues) lejátszási listákhoz és a „Cast” gombot a zárolási képernyőn és az értesítési központban (Android). Minimális verzió: Android 5.0 (API 21), iOS 14+.
Google Cast támogatja a főbb streame-lési formátumokat: HLS (HTTP Live Streaming) az Apple-től, DASH (Dynamic Adaptive Streaming over HTTP) és progresszív MP4. A Chromecast automatikusan kiválasztja az optimális videóminőséget az internetkapcsolat sebessége alapján (adaptív bitráta). HLS és DASH esetén a Chromecast valós időben vált a streame-k között a lejátszás megszakítása nélkül. A HLS a Chromecast firmware 1.28+ verziójától támogatott.
A Google Cast-on keresztüli streameléshez a tartalomnak nyilvános URL-en (HTTP/HTTPS) keresztül elérhetőnek kell lennie — a Chromecast közvetlenül a szerverről tölti be a tartalmat, nem a telefonról. DRM (Digital Rights Management) a Widevine-en keresztül támogatott: a Chromecast támogatja a Widevine L3-at (minden eszköz) és L1-et (egyes modellek, pl. Chromecast with Google TV). A DRM-hez Egyéni Veveőre van szükség Shaka Player vagy ExoPlayer integrációval. A Google szerint a Chromecast with Google TV támogatja a 4K HDR-t Widevine L1-gyel a Netflix, Disney+ és más szolgáltatások számára.
// Média betöltése Chromecastre CAF-on keresztül
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)Felirat formátumok: A Chromecast támogatja a TTML, WebVTT és CEA-608 formátumokat. A feliratok a MediaInfo részeként kerülnek továbbításra a MediaTrack-en keresztül. A Chromecast támogatja továbbá a képek aszinkron betöltését (fotók) a képek közötti lapozás lehetőségével a Cast Queue API-n keresztül. Audio esetén a Chromecast MP3, AAC, FLAC, WAV és OGG formátumokat támogat. Az audio streamelés a Google Cast-on keresztül Chromecast Audio-n és Cast hangszórókon támogatott.
Cast Button — a Google Cast SDK legfontosabb UI komponense, amely megjeleníti a Cast ikont és automatikusan változtatja az állapotát: inaktív (nincs eszköz), elérhető (eszközök találva), csatlakoztatva (aktív munkamenet). A Cast Button megnyomásakor megnyílik az eszközválasztó párbeszédablak. A komponens a MediaRouteActionProvider (Android) vagy a GCKUICastButton (iOS) segítségével érhető el. A Cast Button csak akkor látható, ha Cast-eszközök elérhetők a hálózatban — a CAF automatikusan elrejti a gombot, ha nincsenek eszközök.
Mini Controller — panel a képernyő alján, amely megjeleníti a tartalom nevét, borítóját, play/pause gombokat és a munkamenet bezárásának gombját. A Mini Controller automatikusan megjelenik, amikor a Cast-munkamenet aktív és a felhasználó a lejátszáshoz nem kapcsolódó képernyőn tartózkodik. A CAF kész MiniControllerFragment-et biztosít Androidhoz, amely beágyazható a layout-ba. Alapértelmezés szerint a Mini Controller a képernyő alján található, de bármilyen pozícióba konfigurálható.
// Mini Controller testreszabása stílusokkal
// styles.xml
// <style name="CastMiniControllerStyle"
// parent="Theme.GoogleCast">
// <item name="castMiniBackgroundColor">#FF0000</item>
// <item name="castShowImageThumbnail">true</item>
// </style>
// Mini Controller programozott vezérlése
val miniController = findViewById<MiniControllerFragment>(
R.id.miniController
)
miniController.setVisibility(
isCastSessionActive()
)Expanded Controller — teljes képernyős távirányító a televízión történő lejátszás vezérléséhez, amely a Mini Controller megnyomásakor nyílik meg. Az Expanded Controller megjeleníti: nevet, leírást, borítót, előrehaladási sávot visszatekerési lehetőséggel, play/pause/stop gombokat, számlistát (ha van sor), hangerőszabályzót és leválasztó gombot. A CAF kész ExpandedControllerActivity-t biztosít, amely automatikusan elindul. Ha egyéni interfészre van szükség — bővítse ki az alap ExpandedControllerActivity-t.
Egyéni Veveő (Custom Receiver) — egy webalkalmazás (HTML5 + CSS + JavaScript), amely a Chromecastra töltődik be a Cast-munkamenet indításakor. Az Alapértelmezett Veveővel ellentétben az egyéni veveő teljes mértékben lehetővé teszi a tartalom megjelenésének vezérlését a televízión: háttérképek, animációk, egyéni vezérlőelemek, márkalogó. Az Egyéni Veveő regisztrálása a Google Cast Console-ban történik, és egyedi Application ID-t kap.
Az Egyéni Veveő fejlesztése JavaScript-ben történik a Cast Receiver Framework (CAF Receiver) segítségével. A CAF Receiver API-t biztosít a Feladótól érkező üzenetek feldolgozásához, a média streamek kezeléséhez, a sorok feldolgozásához és a DRM-integrációhoz. A Veveő a Chromecast elkülönített böngésző környezetében (WebKit) működik, korlátozott DOM-hozzáféréssel. Minimális követelmények: HTML5, CSS3, JavaScript ES6. A Veveő HTTPS-szerveren van tárolva.
// Alap Egyéni Veveő CAF-on
const context = cast.framework.CastReceiverContext.getInstance()
const playerManager = context.getPlayerManager()
playerManager.setMessageInterceptor(
cast.framework.messages.MessageType.LOAD,
(loadData) => {
// Média betöltés egyéni feldolgozása
console.log("Loading media:", loadData.media.contentId)
return loadData
}
)
context.start()
// Egyéni üzenetek kezelése a Feladótól
context.addCustomMessageListener("urn:x-cast:custom", (event) => {
console.log("Custom data:", event.data)
})Az Egyéni Veveőt valódi eszközön kell tesztelni a Cast Developer Console segítségével. A Google az Alapértelmezett Veveő használatát ajánlja szabványos forgatókönyvekhez, az egyéni Veveőt pedig csak akkor, ha saját interfészre van szükség a televízión, DRM-támogatásra (Widevine) vagy egyéni logikával rendelkező lejátszási sorokra. Veveő nem fér hozzá a Feladó oldalának DOM-jához, és nem hajthatja végre a Feladó által küldött JavaScriptet (biztonság).
Teljes példa a Google Cast integrációra egy Android-alkalmazásban a CAF használatával. Az alkalmazás videót játszik le, és lehetővé teszi annak Chromecastra streamelését a Cast Button segítségével. A kód magában foglalja a CastOptions konfigurálását, a CastContext inicializálását, a kapcsolat kezelését és a média betöltését a Cast-eszközre.
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)
}
}A Google Cast teszteléséhez használjon virtuális Cast-eszközt a Chrome DevTools-on (Cast fül) vagy fizikai Chromecastot. A Google teszt Application ID-t biztosít — CC1AD845 (Default Media Receiver). A közzététel előtt regisztrálja alkalmazását a Google Cast Console-ban és szerezzen éles Application ID-t. A Cast SDK Google Play Services 21.0.0+ és Android 5.0+ verziót igényel.
Az első gyakori probléma — a Cast Button nem jelenik meg. Okok: az eszközök nincsenek ugyanabban a Wi-Fi hálózatban, a Chromecast nem támogatja a DIAL-t (régi firmware), vagy a Wi-Fi észlelés ki van kapcsolva a telefonon. Megoldás: ellenőrizze, hogy a telefon és a Chromecast ugyanahhoz a hálózathoz csatlakozik-e (2,4 GHz vagy 5 GHz). A Google Cast nem működik vendég Wi-Fi hálózatokon, VPN-en vagy ügyfél elkülönítéssel rendelkező vállalati hálózatokon. Használja a Cast Connect-et fizikai eszköz nélküli teszteléshez.
A második probléma — kapcsolat megszakadása lejátszás közben. A Chromecast elveszítheti a Wi-Fi kapcsolatot gyenge jel, csatorna túlterhelése vagy mikrohullámú sütőből származó interferencia (2,4 GHz) miatt. Megoldás: helyezze a Chromecastot közelebb a routerhez, használjon 5 GHz-et (ha támogatott), konfiguráljon QoS-t a Chromecast forgalmához. Az alkalmazásban kezelje a onRemoteMediaPlayerStatusUpdated callback-t IDLE állapottal és hibaokkal — kapcsolatvesztés esetén jelenítsen meg egy értesítést és ajánlja fel az újracsatlakozást.
A harmadik probléma — a tartalom nem játszódik le a Chromecaston. Ellenőrizze: a tartalom URL-je elérhető az internetről (a Chromecast közvetlenül tölti be a tartalmat, nem a telefonon keresztül), a formátumot támogatja a Chromecast, nincs CORS-blokkolás (.m3u8 és .mpd esetén). Ha az Alapértelmezett Veveőt használja, győződjön meg arról, hogy az Application ID helyes. Egyéni Veveő esetén ellenőrizze, hogy az alkalmazás HTTPS-en van tárolva. Használja a Cast SDK Loggert a hibakereséshez: CastContext.getSharedInstance().setCastLogger(...).
Gyakran Ismételt Kérdések
Google Cast a „URL küldése” modellt használja — a telefon egy linket küld a Chromecastnak a tartalomhoz, amely közvetlenül betöltődik. AirPlay (Apple) — hasonló protokoll az Apple ökoszisztémához. Miracast — közvetlen képernyőátvitel (screen mirroring), amely terheli a telefont. A Cast 80%-kal kevesebb telefonenergiát fogyaszt, és lehetővé teszi az alkalmazás minimalizálását a lejátszás megállítása nélkül.
Google Cast nem csak Chromecaston működik, hanem a beépített Google TV-vel, Android TV-vel rendelkező televíziókon, valamint Cast-támogatással rendelkező audiorendszereken (Nest Audio, Sonos) is. Fejlesztéshez és teszteléshez használhat virtuális Cast-eszközt a Chrome DevTools-on keresztül. A Cast alkalmazásba történő integrálásához fizikai eszköz nem szükséges — használja a Cast Connect-et emulációhoz.
Igen, a Chromecast with Google TV (2020) és újabb modellek támogatják a 4K HDR-t Dolby Vision, HDR10 és HDR10+ formátumokkal. A szabványos Chromecast (3. generáció) 1080p 60fps-t támogat. Chromecast Ultra — 4K HDR. A 4K streameléshez legalább 25 Mbps internetsebesség és Widevine L1 támogatás szükséges DRM-tartalomhoz (Netflix, Disney+).
A munkamenet leállításához hívja meg a CastSession.endSession(boolean stopCasting) metódust: true paraméterrel, ha le szeretné állítani a lejátszást a televízión, vagy false-szal, ha csak le szeretné választani a telefont. Használhatja a stop() metódust is a RemoteMediaClient-en. A felhasználó a Cast Button vagy a Mini Controller leválasztó gombjának megnyomásával is leállíthatja a munkamenetet.
Igen, egyedi üzenetek (custom messages) segítségével. A Feladó üzenetet küld egy namespace-en (pl. urn:x-cast:custom.namespace) keresztül tetszőleges JSON objektummal. A Veveő az addCustomMessageListener segítségével dolgozza fel az üzenetet. Az egyedi üzenetek csak Egyéni Veveővel támogatottak — az Alapértelmezett Veveő nem dolgoz fel egyedi namespace-eket. Maximális üzenetméret — 64 KB.
Összefoglalás
Kulcsrakész mobilalkalmazást fejlesztünk
Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.
Olvassa el is