Google Cast: concepte cheie, protocol de streaming și Cast SDK

Autor: IT Sectr Publicat: 2026-04-30 Timp de citire: 10 min

Google Cast — este o tehnologie Google pentru streamingul conținutului multimedia de pe dispozitive mobile pe televizoare și sisteme audio prin protocolul Cast. SDK permite dezvoltatorilor să adauge suport Chromecast în aplicații Android și iOS, transmițând video, audio și imagini pe ecrane mari. Conform Google Cast Developer Documentation, 2025, peste 100 de milioane de dispozitive Chromecast au fost vândute în întreaga lume, iar Cast SDK este utilizat în peste 40.000 de aplicații.

Principalele

  • Google Cast — protocol și SDK pentru streamingul conținutului de pe dispozitive mobile pe televizoare și difuzoare
  • Expeditorul (Sender) — aplicația mobilă care trimite conținutul pe dispozitivul Cast
  • Receptorul (Receiver) — aplicația de pe televizor (Chromecast) care primește și redă conținutul
  • CAF SDK — Cast Application Framework, API simplificat pentru integrarea Cast (recomandat de Google)
  • Media Streams — streaming HLS, DASH și MP4 prin Cast cu control al redării

Ce este Google Cast?

Google Cast — este un protocol de transmisie fără fir a conținutului multimedia, dezvoltat de Google pentru streaming de pe dispozitive mobile, laptopuri și tablete pe televizoare, difuzoare și alte ecrane. Spre deosebire de AirPlay (Apple) sau Miracast, Cast utilizează modelul „trimite URL” (send-to-device): aplicația mobilă trimite Chromecast-ului URL-ul conținutului, iar dispozitivul încarcă și redă singur fluxul, fără a încărca telefonul.

Avantajul cheie al Google Cast față de streamingul direct (screen mirroring) — eficiența energetică. După ce redarea începe, telefonul acționează doar ca o telecomandă: utilizatorul poate minimiza aplicația, bloca ecranul sau trece la altă aplicație — videoul continuă să se redea pe televizor. Potrivit datelor Google (2025), Cast consumă cu 80% mai puțină energie pe telefon în comparație cu soluțiile de tip mirroring.

Google Cast suportă nu doar Chromecast, ci și receptoarele Cast integrate în televizoarele Sony, TCL, Philips, Hisense și ale altor producători cu Google TV sau Android TV. Cast este, de asemenea, suportat în sistemele audio (Nest Audio, Sonos cu Cast) și în Chromecast Audio. Protocolul Cast funcționează prin Wi-Fi (2,4/5 GHz) și necesită ca dispozitivul expeditor și receptorul să se afle în aceeași rețea.

Arhitectura Cast: Expeditor, Receptor și protocoale

Arhitectura Google Cast constă din trei componente: Expeditorul (aplicația mobilă), Receptorul (aplicația de pe Chromecast/televizor) și protocolul de transport. Expeditorul utilizează Cast SDK pentru detectarea dispozitivelor în rețea, stabilirea conexiunii și trimiterea comenzilor de redare. Receptorul este o aplicație web (HTML5 + CSS + JavaScript) care rulează în browserul Chromecast, care încarcă și redă conținutul.

Protocolul Google Cast se bazează pe DIAL (Discovery and Launch) pentru detectarea dispozitivelor și pe un protocol proprietar prin WebSocket pentru controlul redării. DIAL utilizează SSDP (Simple Service Discovery Protocol) pentru a căuta dispozitive Cast în rețeaua locală. După detectare, Expeditorul stabilește o conexiune WebSocket cu Receptorul prin portul 8008 sau 8009 și trimite comenzi în format JSON: LOAD, PLAY, PAUSE, STOP, SEEK.

ComponentăPlatformăTehnologie
Expeditorul (Sender)Android / iOS / ChromeCast SDK (Java/Kotlin, Swift, JS)
Receptorul implicit (Default Receiver)Chromecast / Android TVÎncorporat (configurare prin Google Cast Console)
Receptorul personalizat (Custom Receiver)Chromecast / Android TVAplicație web (HTML5, CAF Receiver JS)
ProtocolRețea locală Wi-FiWebSocket + JSON + DIAL/SSDP
Transport mediaInternetHLS, DASH, MP4 (încărcare directă de Chromecast)

Protocolul Cast v2 pentru controlul redării

Expeditorul trimite Receptorului nu conținutul propriu-zis, ci URL-ul (media URL) și metadatele (nume, imagine, subtitrări). Receptorul încarcă independent conținutul de la URL, ceea ce permite telefonului să nu consume baterie pentru transmiterea datelor. După începerea redării, Expeditorul poate trimite comenzi de pauză, derulare, reglare a volumului și poate primi starea redării prin Cast Protocol v2.

Cast Application Framework (CAF): integrare rapidă

Cast Application Framework (CAF) — este un API simplificat de la Google pentru integrarea Cast în aplicații mobile, introdus în 2018. CAF înlocuiește Cast SDK-ul vechi (CastCompanionLibrary) și oferă componente UI gata făcute: Cast Button (iconița de detectare a dispozitivelor), Mini Controller (mini player în partea de jos a ecranului) și Expanded Controller (telecomandă pe ecran complet). CAF suportă Android, iOS, Flutter și React Native.

Pentru a utiliza CAF, dezvoltatorul nu trebuie să scrie propriul Receptor — Google oferă Receptorul Implicit (Default Receiver), care încarcă și redă automat conținutul. Receptorul Implicit suportă HLS, DASH, MP4, WebM, MP3, imagini și subtitrări. Configurarea Receptorului se face în Google Cast Console — este suficient să specificați URL-ul conținutului, iar Receptorul Implicit se va ocupa de restul. Receptorul personalizat este necesar doar pentru scenarii non-standard: interfață proprie pe televizor, suport DRM, cozi de redare.

kotlin
// Configurarea opțiunilor CAF Receiver
val receiverOptions = CastReceiverOptions.Builder(context)
    .setReceiverApplicationId(
        CastMediaControlIntent.DEFAULT_MEDIA_RECEIVER_APPLICATION_ID
    )
    .build()

// Conectarea contextului Cast
val castContext = CastContext.getSharedInstance(context)
castContext.setReceiverOptions(receiverOptions)

Cast Connect: testare fără dispozitiv fizic

CAF gestionează automat ciclul de viață al conexiunii: detectarea dispozitivelor prin Cast Button, stabilirea conexiunii, încărcarea media, pauză la pierderea temporară a conexiunii și re-conectare. CAF suportă, de asemenea, cozi de redare (media queues) pentru playlisturi și butonul „Cast” pe ecranul de blocare și în centrul de notificări (Android). Versiunea minimă: Android 5.0 (API 21), iOS 14+.

Streaming media: HLS, DASH și MP4 pe Chromecast

Google Cast suportă formatele principale de streaming: HLS (HTTP Live Streaming) de la Apple, DASH (Dynamic Adaptive Streaming over HTTP) și MP4 progresiv. Chromecast selectează automat calitatea video optimă pe baza vitezei conexiunii la internet (bitrate adaptiv). Pentru HLS și DASH, Chromecast comută fluxurile în timp real fără a opri redarea. HLS este suportat încă de la versiunea de firmware Chromecast 1.28+.

Pentru streaming prin Google Cast, conținutul trebuie să fie accesibil la un URL public (HTTP/HTTPS) — Chromecast încarcă conținutul direct de pe server, nu de pe telefon. DRM (Digital Rights Management) este suportat prin Widevine: Chromecast suportă Widevine L3 (toate dispozitivele) și L1 (unele modele, de exemplu, Chromecast with Google TV). Pentru lucrul cu DRM este necesar un Receptor personalizat cu integrare Shaka Player sau ExoPlayer. Potrivit Google, Chromecast with Google TV suportă 4K HDR cu Widevine L1 pentru Netflix, Disney+ și alte servicii.

kotlin
// Încărcarea media pe Chromecast prin 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)

Formate de subtitrări: Chromecast suportă TTML, WebVTT și CEA-608. Subtitrările sunt transmise ca parte a MediaInfo prin MediaTrack. Chromecast suportă, de asemenea, încărcarea asincronă a imaginilor (fotografii) cu posibilitatea de a glisa între imagini prin Cast Queue API. Pentru audio, Chromecast suportă MP3, AAC, FLAC, WAV și OGG. Streamingul audio prin Google Cast este suportat pe Chromecast Audio și difuzoarele Cast.

Componente UI Cast: Cast Button și Mini Controller

Cast Button — componenta UI cheie a Google Cast SDK, care afișează pictograma Cast și își schimbă automat starea: inactiv (fără dispozitive), disponibil (dispozitive găsite), conectat (sesiune activă). La apăsarea Cast Button se deschide dialogul de selecție a dispozitivului. Componenta este disponibilă prin MediaRouteActionProvider (Android) sau GCKUICastButton (iOS). Cast Button ar trebui să fie vizibil doar când dispozitivele Cast sunt disponibile în rețea — CAF ascunde automat butonul când nu există dispozitive.

Mini Controller — panoul din partea de jos a ecranului care afișează numele conținutului, coperta, butoanele play/pause și de închidere a sesiunii. Mini Controller apare automat când sesiunea Cast este activă și utilizatorul se află pe un ecran care nu este legat de redare. CAF oferă MiniControllerFragment gata făcut pentru Android, care se integrează în layout. În mod implicit, Mini Controller se află în partea de jos a ecranului, dar poate fi configurat în orice poziție.

kotlin
// Personalizarea Mini Controller prin stiluri
// styles.xml
// <style name="CastMiniControllerStyle"
//     parent="Theme.GoogleCast">
//     <item name="castMiniBackgroundColor">#FF0000</item>
//     <item name="castShowImageThumbnail">true</item>
// </style>

// Controlul programatic al Mini Controller
val miniController = findViewById<MiniControllerFragment>(
    R.id.miniController
)
miniController.setVisibility(
    isCastSessionActive()
)

Expanded Controller — telecomanda pe ecran complet pentru controlul redării pe televizor, care se deschide la apăsarea Mini Controller. Expanded Controller afișează: numele, descrierea, coperta, bara de progres cu posibilitatea de derulare, butoanele play/pause/stop, lista de piese (dacă există o coadă), regulatorul de volum și butonul de deconectare. CAF oferă ExpandedControllerActivity gata făcut, care pornește automat. Dacă aveți nevoie de o interfață personalizată, extindeți ExpandedControllerActivity de bază.

Receptor personalizat: interfață proprie pe televizor

Receptorul personalizat (Custom Receiver) — este o aplicație web (HTML5 + CSS + JavaScript) care se încarcă pe Chromecast la pornirea sesiunii Cast. Spre deosebire de Receptorul Implicit, cel personalizat permite controlul complet al aspectului conținutului pe televizor: imagini de fundal, animații, elemente de control personalizate, logo-ul mărcii. Receptorul personalizat este înregistrat în Google Cast Console și primește un Application ID unic.

Dezvoltarea Receptorului personalizat se face în JavaScript folosind Cast Receiver Framework (CAF Receiver). CAF Receiver oferă API pentru procesarea mesajelor primite de la Expeditor, gestionarea fluxului media, gestionarea cozilor și integrarea cu DRM. Receptorul funcționează în mediul izolat al browserului Chromecast (WebKit) cu acces limitat la DOM. Cerințe minime: HTML5, CSS3, JavaScript ES6. Receptorul este găzduit pe un server HTTPS.

js
// Receptor personalizat de bază pe CAF
const context = cast.framework.CastReceiverContext.getInstance()
const playerManager = context.getPlayerManager()

playerManager.setMessageInterceptor(
    cast.framework.messages.MessageType.LOAD,
    (loadData) => {
        // Procesarea personalizată a încărcării media
        console.log("Loading media:", loadData.media.contentId)
        return loadData
    }
)

context.start()

// Gestionarea mesajelor personalizate de la Sender
context.addCustomMessageListener("urn:x-cast:custom", (event) => {
    console.log("Custom data:", event.data)
})

Dezvoltarea și implementarea Receptorului personalizat

Receptorul personalizat trebuie testat pe un dispozitiv real prin Cast Developer Console. Google recomandă utilizarea Receptorului Implicit pentru scenarii standard și a celui personalizat doar atunci când este necesară o interfață proprie pe televizor, suport DRM (Widevine) sau cozi de redare cu logică proprie. Receptorul nu are acces la DOM-ul paginii Expeditorului și nu poate executa JavaScript trimis de Expeditor (securitate).

Exemplu de cod: integrarea Google Cast pe Android

Un exemplu complet de integrare Google Cast într-o aplicație Android folosind CAF. Aplicația redă video și permite transmiterea acestuia pe Chromecast prin Cast Button. Codul include configurarea CastOptions, inițializarea CastContext, gestionarea conexiunii și încărcarea media pe dispozitivul 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)
    }
}

Pentru testarea Google Cast, utilizați un dispozitiv Cast virtual prin Chrome DevTools (fila Cast) sau un Chromecast fizic. Google oferă un Application ID de test — CC1AD845 (Default Media Receiver). Înainte de publicare, înregistrați aplicația în Google Cast Console și obțineți un Application ID de producție. Cast SDK necesită Google Play Services 21.0.0+ și Android 5.0+.

Probleme tipice și depanarea Cast

Prima problemă frecventă — Cast Button nu se afișează. Cauze: dispozitivele nu sunt în aceeași rețea Wi-Fi, Chromecast nu suportă DIAL (firmware vechi) sau detectarea Wi-Fi este dezactivată pe telefon. Soluție: verificați că telefonul și Chromecastul sunt conectate la aceeași rețea (2,4 GHz sau 5 GHz). Google Cast nu funcționează prin rețele Wi-Fi pentru invitați, VPN sau rețele corporative cu izolarea clienților. Folosiți Cast Connect pentru testare fără dispozitiv fizic.

A doua problemă — pierderea conexiunii în timpul redării. Chromecast poate pierde conexiunea Wi-Fi din cauza semnalului slab, supraîncărcării canalului sau interferențelor de la cuptorul cu microunde (2,4 GHz). Soluție: plasați Chromecastul mai aproape de router, utilizați 5 GHz (dacă este suportat), configurați QoS pentru traficul Chromecast. În aplicație, gestionați callback-ul onRemoteMediaPlayerStatusUpdated cu starea IDLE și motivul erorii — la pierderea conexiunii, afișați o notificare și propuneți reconectarea.

A treia problemă — conținutul nu se redă pe Chromecast. Verificați: URL-ul conținutului este accesibil din internet (Chromecast încarcă conținutul direct, nu prin telefon), formatul este suportat de Chromecast, nu există blocare CORS (pentru .m3u8 și .mpd). Dacă utilizați Receptorul Implicit, asigurați-vă că Application ID este corect. Pentru Receptorul personalizat, verificați că aplicația este găzduită pe HTTPS. Folosiți Cast SDK Logger pentru depanare: CastContext.getSharedInstance().setCastLogger(...).

Întrebări frecvente

Cu ce se deosebește Google Cast de AirPlay și Miracast?

Google Cast utilizează modelul „trimite URL” — telefonul trimite Chromecast-ului un link către conținut, care se încarcă direct. AirPlay (Apple) — un protocol similar pentru ecosistemul Apple. Miracast — transmisia directă a ecranului (screen mirroring), care încarcă telefonul. Cast consumă cu 80% mai puțină energie a telefonului și permite minimizarea aplicației fără a opri redarea.

Este necesar Chromecast pentru funcționarea Google Cast?

Google Cast funcționează nu doar pe Chromecast, ci și pe televizoarele cu Google TV încorporat, Android TV, precum și pe sistemele audio cu suport Cast (Nest Audio, Sonos). Pentru dezvoltare și testare, puteți utiliza un dispozitiv Cast virtual prin Chrome DevTools. Pentru integrarea Cast în aplicație, un dispozitiv fizic nu este obligatoriu — utilizați Cast Connect pentru emulare.

Suportă Google Cast 4K și HDR?

Da, Chromecast with Google TV (2020) și modelele mai noi suportă 4K HDR cu Dolby Vision, HDR10 și HDR10+. Chromecastul standard (generația a 3-a) suportă 1080p 60fps. Chromecast Ultra — 4K HDR. Pentru streaming 4K, este necesară o viteză a internetului de cel puțin 25 Mbps și suport Widevine L1 pentru conținut DRM (Netflix, Disney+).

Cum să opriți o sesiune Cast programatic?

Pentru a opri sesiunea, apelați CastSession.endSession(boolean stopCasting) cu parametrul true dacă doriți să opriți redarea pe televizor, sau false dacă doriți doar să deconectați telefonul. De asemenea, puteți utiliza metoda stop() pe RemoteMediaClient. Utilizatorul poate, de asemenea, să oprească sesiunea prin Cast Button sau Mini Controller, apăsând butonul de deconectare.

Pot transmite date personalizate prin Google Cast?

Da, prin mesaje personalizate (custom messages). Expeditorul trimite un mesaj printr-un namespace (de exemplu, urn:x-cast:custom.namespace) cu un obiect JSON arbitrar. Receptorul procesează mesajul prin addCustomMessageListener. Mesajele personalizate sunt suportate doar cu un Receptor personalizat — Receptorul Implicit nu procesează namespace-uri personalizate. Dimensiunea maximă a mesajului — 64 KB.

Rezumat

  • Google Cast — protocol de streaming a conținutului de pe dispozitive mobile pe televizoare prin Chromecast și Android TV
  • Arhitectură — Expeditorul (aplicația) trimite URL-ul conținutului, Receptorul (Chromecast) încarcă și redă
  • CAF SDK — Cast Application Framework cu componente gata făcute Cast Button, Mini Controller și Expanded Controller
  • Formate — HLS, DASH, MP4, WebM, MP3, AAC, FLAC cu bitrate adaptiv și subtitrări
  • Receptorul Implicit — receptorul Google încorporat pentru integrare rapidă fără a scrie cod pe televizor
  • Receptorul personalizat — aplicație web HTML5/JS pentru personalizarea interfeței și DRM pe televizor
  • Depanare — verificați rețeaua Wi-Fi, URL-ul conținutului și suportul formatelor; utilizați Cast SDK Logger

Vom dezvolta o aplicație mobilă la cheie

IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.

Discutați proiectul

Citiți și