Google Cast: mahahalagang konsepto, streaming protocol at Cast SDK

May-akda: IT Sectr Nai-publish: 2026-04-30 Oras ng pagbabasa: 10 min

Google Cast — ay isang teknolohiya mula sa Google para sa streaming ng multimedia content mula sa mga mobile device patungo sa mga telebisyon at audio system sa pamamagitan ng Cast protocol. Pinapayagan ng SDK ang mga developer na magdagdag ng suporta sa Chromecast sa mga application para sa Android at iOS, nagpapadala ng video, audio at mga larawan sa malalaking screen. Ayon sa Google Cast Developer Documentation, 2025, mahigit 100 milyong Chromecast device ang naibenta sa buong mundo, at ang Cast SDK ay ginagamit sa 40,000+ na mga application.

Mga Pangunahing

  • Google Cast — protocol at SDK para sa streaming ng content mula sa mga mobile device patungo sa mga telebisyon at speaker
  • Nagpadala (Sender) — mobile application na nagpapadala ng content sa Cast device
  • Tatanggap (Receiver) — application sa telebisyon (Chromecast) na tumatanggap at nagpe-play ng content
  • CAF SDK — Cast Application Framework, pinasimpleng API para sa integrasyon ng Cast (inirerekomenda ng Google)
  • Media Streams — HLS, DASH at MP4 streaming sa pamamagitan ng Cast na may kontrol sa pag-playback

Ano ang Google Cast?

Google Cast — ay isang wireless multimedia transmission protocol na binuo ng Google para sa streaming mula sa mga mobile device, laptop at tablet patungo sa mga telebisyon, speaker at iba pang mga screen. Hindi tulad ng AirPlay (Apple) o Miracast, ginagamit ng Cast ang modelong “magpadala ng URL” (send-to-device): ang mobile application ay nagpapadala ng URL ng content sa Chromecast at ang device mismo ang nag-load at nagpe-play ng stream, hindi nito binibigyang-load ang telepono.

Ang pangunahing bentahe ng Google Cast kumpara sa direktang streaming (screen mirroring) — kahusayan sa enerhiya. Pagkatapos magsimula ang pag-playback, ang telepono ay gumaganap lamang bilang remote control: ang user ay maaaring i-minimize ang application, i-lock ang screen o lumipat sa ibang application — ang video ay patuloy na nagpe-play sa telebisyon. Ayon sa datos ng Google (2025), ang Cast ay kumokonsumo ng 80% mas kaunting enerhiya sa telepono kumpara sa mga mirroring solution.

Sinusuportahan ng Google Cast hindi lamang ang Chromecast, kundi pati na rin ang mga built-in na Cast receiver sa mga telebisyon ng Sony, TCL, Philips, Hisense at iba pang mga manufacturer na may Google TV o Android TV. Ang Cast ay sinusuportahan din sa mga audio system (Nest Audio, Sonos na may Cast) at sa Chromecast Audio. Gumagana ang Cast protocol sa pamamagitan ng Wi-Fi (2.4/5 GHz) at nangangailangan na ang nagpapadalang device at tatanggap ay nasa parehong network.

Arkitektura ng Cast: Nagpadala, Tatanggap at mga protocol

Ang arkitektura ng Google Cast ay binubuo ng tatlong component: Nagpadala (mobile application), Tatanggap (application sa Chromecast/telebisyon) at transport protocol. Ginagamit ng Nagpadala ang Cast SDK para sa pag-detect ng mga device sa network, pagtatatag ng koneksyon at pagpapadala ng mga playback command. Ang Tatanggap ay isang web application (HTML5 + CSS + JavaScript) na tumatakbo sa browser ng Chromecast, na naglo-load at nagpe-play ng content.

Ang Google Cast protocol ay batay sa DIAL (Discovery and Launch) para sa pag-detect ng device at proprietary protocol sa pamamagitan ng WebSocket para sa kontrol ng pag-playback. Gumagamit ang DIAL ng SSDP (Simple Service Discovery Protocol) para maghanap ng mga Cast device sa lokal na network. Pagkatapos ng detection, ang Nagpadala ay nagtatatag ng WebSocket connection sa Tatanggap sa pamamagitan ng port 8008 o 8009 at nagpapadala ng mga command sa JSON format: LOAD, PLAY, PAUSE, STOP, SEEK.

ComponentPlatformTeknolohiya
Nagpadala (Sender)Android / iOS / ChromeCast SDK (Java/Kotlin, Swift, JS)
Default na Tatanggap (Default Receiver)Chromecast / Android TVBuilt-in (configuration sa pamamagitan ng Google Cast Console)
Custom na Tatanggap (Custom Receiver)Chromecast / Android TVWeb application (HTML5, CAF Receiver JS)
ProtocolLokal na Wi-Fi networkWebSocket + JSON + DIAL/SSDP
Transport ng mediaInternetHLS, DASH, MP4 (direktang pag-load ng Chromecast)

Cast v2 protocol para sa kontrol ng pag-playback

Nagpadala ay nagpapadala sa Tatanggap hindi ang mismong content, kundi ang URL (media URL) at metadata (pangalan, larawan, subtitle). Ang Tatanggap ay independiyenteng naglo-load ng content mula sa URL, na nagpapahintulot sa telepono na huwag gumamit ng baterya para sa pagpapadala ng data. Pagkatapos magsimula ang pag-playback, ang Nagpadala ay maaaring magpadala ng mga command para sa pause, rewind, volume adjustment at tumanggap ng playback status sa pamamagitan ng Cast Protocol v2.

Cast Application Framework (CAF): mabilis na integrasyon

Cast Application Framework (CAF) — ay isang pinasimpleng API mula sa Google para sa integrasyon ng Cast sa mga mobile application, na ipinakilala noong 2018. Pinapalitan ng CAF ang lumang Cast SDK (CastCompanionLibrary) at nagbibigay ng mga ready-made na UI component: Cast Button (icon para sa pag-detect ng device), Mini Controller (mini player sa ilalim ng screen) at Expanded Controller (full-screen remote control). Sinusuportahan ng CAF ang Android, iOS, Flutter at React Native.

Para gamitin ang CAF, hindi kailangang magsulat ng developer ng sarili niyang Tatanggap — nagbibigay ang Google ng Default na Tatanggap (Default Receiver) na awtomatikong naglo-load at nagpe-play ng content. Sinusuportahan ng Default na Tatanggap ang HLS, DASH, MP4, WebM, MP3, mga larawan at subtitle. Ang configuration ng Tatanggap ay ginagawa sa Google Cast Console — sapat na upang tukuyin ang URL ng content, at ang Default na Tatanggap ang bahala sa iba pa. Ang Custom na Tatanggap ay kinakailangan lamang para sa mga hindi karaniwang scenario: sariling interface sa telebisyon, suporta sa DRM, mga playback queue.

kotlin
// Pag-configure ng CAF Receiver Options
val receiverOptions = CastReceiverOptions.Builder(context)
    .setReceiverApplicationId(
        CastMediaControlIntent.DEFAULT_MEDIA_RECEIVER_APPLICATION_ID
    )
    .build()

// Pagkonekta ng Cast Context
val castContext = CastContext.getSharedInstance(context)
castContext.setReceiverOptions(receiverOptions)

Cast Connect: pagsubok nang walang pisikal na device

CAF ay awtomatikong namamahala sa lifecycle ng koneksyon: pag-detect ng device sa pamamagitan ng Cast Button, pagtatatag ng koneksyon, pag-load ng media, pause sa pansamantalang pagkawala ng koneksyon at muling pagkonekta. Sinusuportahan din ng CAF ang mga playback queue (media queues) para sa mga playlist at ang „Cast” button sa lock screen at notification center (Android). Minimum na bersyon: Android 5.0 (API 21), iOS 14+.

Media streaming: HLS, DASH at MP4 sa Chromecast

Google Cast ay sumusuporta sa mga pangunahing format ng streaming: HLS (HTTP Live Streaming) mula sa Apple, DASH (Dynamic Adaptive Streaming over HTTP) at progresibong MP4. Awtomatikong pinipili ng Chromecast ang pinakamainam na kalidad ng video batay sa bilis ng koneksyon sa internet (adaptive bitrate). Para sa HLS at DASH, ang Chromecast ay lumilipat ng mga stream sa real-time nang hindi humihinto sa pag-playback. Ang HLS ay sinusuportahan mula sa Chromecast firmware version 1.28+.

Para sa streaming sa pamamagitan ng Google Cast, ang content ay dapat na ma-access sa pamamagitan ng pampublikong URL (HTTP/HTTPS) — direktang naglo-load ang Chromecast ng content mula sa server, hindi mula sa telepono. DRM (Digital Rights Management) ay sinusuportahan sa pamamagitan ng Widevine: Sinusuportahan ng Chromecast ang Widevine L3 (lahat ng device) at L1 (ilang modelo, hal. Chromecast with Google TV). Para sa trabaho sa DRM, kinakailangan ang Custom na Tatanggap na may integrasyon ng Shaka Player o ExoPlayer. Ayon sa Google, sinusuportahan ng Chromecast with Google TV ang 4K HDR na may Widevine L1 para sa Netflix, Disney+ at iba pang serbisyo.

kotlin
// Pag-load ng Media sa Chromecast sa pamamagitan ng 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)

Mga format ng subtitle: Sinusuportahan ng Chromecast ang TTML, WebVTT at CEA-608. Ang mga subtitle ay ipinapadala bilang bahagi ng MediaInfo sa pamamagitan ng MediaTrack. Sinusuportahan din ng Chromecast ang asynchronous na pag-load ng mga larawan (photo) na may kakayahang mag-swipe sa pagitan ng mga larawan sa pamamagitan ng Cast Queue API. Para sa audio, sinusuportahan ng Chromecast ang MP3, AAC, FLAC, WAV at OGG. Ang audio streaming sa pamamagitan ng Google Cast ay sinusuportahan sa Chromecast Audio at mga Cast speaker.

Mga UI Component ng Cast: Cast Button at Mini Controller

Cast Button — pangunahing UI component ng Google Cast SDK, na nagpapakita ng icon ng Cast at awtomatikong nagbabago ng estado: hindi aktibo (walang device), available (natagpuan ang mga device), nakakonekta (aktibong session). Kapag pinindot ang Cast Button, bubukas ang dialog ng pagpili ng device. Ang component ay available sa pamamagitan ng MediaRouteActionProvider (Android) o GCKUICastButton (iOS). Ang Cast Button ay dapat lamang makita kapag ang mga Cast device ay available sa network — awtomatikong itinatago ng CAF ang button kapag walang device.

Mini Controller — panel sa ilalim ng screen na nagpapakita ng pangalan ng content, cover, play/pause button at button para isara ang session. Awtomatikong lumilitaw ang Mini Controller kapag aktibo ang Cast session at ang user ay nasa screen na hindi nauugnay sa pag-playback. Nagbibigay ang CAF ng ready-made na MiniControllerFragment para sa Android na naka-embed sa layout. Bilang default, ang Mini Controller ay nasa ilalim ng screen, ngunit maaaring i-configure sa anumang posisyon.

kotlin
// Pag-customize ng Mini Controller sa pamamagitan ng Styles
// styles.xml
// <style name="CastMiniControllerStyle"
//     parent="Theme.GoogleCast">
//     <item name="castMiniBackgroundColor">#FF0000</item>
//     <item name="castShowImageThumbnail">true</item>
// </style>

// Programmatic Control ng Mini Controller
val miniController = findViewById<MiniControllerFragment>(
    R.id.miniController
)
miniController.setVisibility(
    isCastSessionActive()
)

Expanded Controller — full-screen remote control para sa kontrol ng pag-playback sa telebisyon, na bumubukas kapag pinindot ang Mini Controller. Ipinapakita ng Expanded Controller ang: pangalan, paglalarawan, cover, progress bar na may kakayahang mag-rewind, play/pause/stop button, listahan ng track (kung may queue), volume regulator at disconnect button. Nagbibigay ang CAF ng ready-made na ExpandedControllerActivity na awtomatikong nag-start. Kung kailangan ang custom interface — palawakin ang base ExpandedControllerActivity.

Custom na Tatanggap: sariling interface sa telebisyon

Custom na Tatanggap (Custom Receiver) — ay isang web application (HTML5 + CSS + JavaScript) na naglo-load sa Chromecast kapag nagsimula ang Cast session. Hindi tulad ng Default na Tatanggap, ang custom na tatanggap ay nagpapahintulot ng buong kontrol sa hitsura ng content sa telebisyon: mga background image, animation, custom na control element, brand logo. Ang Custom na Tatanggap ay nirerehistro sa Google Cast Console at tumatanggap ng natatanging Application ID.

Ang pag-develop ng Custom na Tatanggap ay ginagawa sa JavaScript gamit ang Cast Receiver Framework (CAF Receiver). Nagbibigay ang CAF Receiver ng API para sa pagproseso ng mga papasok na mensahe mula sa Nagpadala, pamamahala ng media stream, pagproseso ng mga queue at DRM integration. Ang Tatanggap ay tumatakbo sa nakahiwalay na browser environment ng Chromecast (WebKit) na may limitadong access sa DOM. Minimum na kinakailangan: HTML5, CSS3, JavaScript ES6. Ang Tatanggap ay naka-host sa HTTPS server.

js
// Basic Custom Receiver sa CAF
const context = cast.framework.CastReceiverContext.getInstance()
const playerManager = context.getPlayerManager()

playerManager.setMessageInterceptor(
    cast.framework.messages.MessageType.LOAD,
    (loadData) => {
        // Custom Processing ng Media Loading
        console.log("Loading media:", loadData.media.contentId)
        return loadData
    }
)

context.start()

// Paghawak ng Custom Messages mula sa Nagpadala
context.addCustomMessageListener("urn:x-cast:custom", (event) => {
    console.log("Custom data:", event.data)
})

Pag-develop at deployment ng Custom na Tatanggap

Ang Custom na Tatanggap ay dapat na masubukan sa isang tunay na device sa pamamagitan ng Cast Developer Console. Inirerekomenda ng Google ang paggamit ng Default na Tatanggap para sa mga standard scenario at ang custom na Tatanggap lamang kapag kailangan ang sariling interface sa telebisyon, suporta sa DRM (Widevine) o mga playback queue na may sariling logic. Tatanggap ay walang access sa DOM ng pahina ng Nagpadala at hindi maaaring mag-execute ng JavaScript na ipinadala ng Nagpadala (seguridad).

Halimbawa ng code: integrasyon ng Google Cast sa Android

Buong halimbawa ng integrasyon ng Google Cast sa Android application gamit ang CAF. Nagpe-play ang application ng video at pinapayagan ang streaming nito sa Chromecast sa pamamagitan ng Cast Button. Kasama sa code ang configuration ng CastOptions, initialization ng CastContext, pamamahala ng koneksyon at pag-load ng media sa Cast device.

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)
    }
}

Para sa pagsubok ng Google Cast, gumamit ng virtual Cast device sa pamamagitan ng Chrome DevTools (Cast tab) o pisikal na Chromecast. Nagbibigay ang Google ng test Application ID — CC1AD845 (Default Media Receiver). Bago ang publikasyon, irehistro ang iyong application sa Google Cast Console at kumuha ng production Application ID. Ang Cast SDK ay nangangailangan ng Google Play Services 21.0.0+ at Android 5.0+.

Mga karaniwang problema at pag-debug ng Cast

Unang karaniwang problema — Cast Button ay hindi lumilitaw. Mga dahilan: ang mga device ay wala sa parehong Wi-Fi network, hindi sinusuportahan ng Chromecast ang DIAL (lumang firmware) o ang Wi-Fi detection ay naka-off sa telepono. Solusyon: suriin kung ang telepono at Chromecast ay konektado sa parehong network (2.4 GHz o 5 GHz). Hindi gumagana ang Google Cast sa pamamagitan ng guest Wi-Fi network, VPN o corporate network na may client isolation. Gamitin ang Cast Connect para sa pagsubok nang walang pisikal na device.

Ikalawang problema — pagkawala ng koneksyon habang nagpe-playback. Maaaring mawalan ang Chromecast ng Wi-Fi connection dahil sa mahinang signal, sobrang karga ng channel o interference mula sa microwave (2.4 GHz). Solusyon: ilagay ang Chromecast nang mas malapit sa router, gamitin ang 5 GHz (kung sinusuportahan), i-configure ang QoS para sa Chromecast traffic. Sa application, hawakan ang callback onRemoteMediaPlayerStatusUpdated na may IDLE status at error reason — sa pagkawala ng koneksyon, magpakita ng notification at mag-alok ng muling pagkonekta.

Ikatlong problema — hindi nagpe-play ang content sa Chromecast. Suriin: ang URL ng content ay accessible mula sa internet (direktang naglo-load ang Chromecast ng content, hindi sa pamamagitan ng telepono), ang format ay sinusuportahan ng Chromecast, walang CORS blocking (para sa .m3u8 at .mpd). Kung ginagamit ang Default na Tatanggap, tiyakin na ang Application ID ay tama. Para sa Custom na Tatanggap, suriin kung ang application ay naka-host sa HTTPS. Gamitin ang Cast SDK Logger para sa pag-debug: CastContext.getSharedInstance().setCastLogger(...).

Mga Madalas Itanong

Paano naiiba ang Google Cast sa AirPlay at Miracast?

Google Cast ay gumagamit ng modelong “magpadala ng URL” — ang telepono ay nagpapadala sa Chromecast ng link sa content na direktang naglo-load. AirPlay (Apple) — katulad na protocol para sa Apple ecosystem. Miracast — direktang screen transmission (screen mirroring) na naglo-load sa telepono. Ang Cast ay kumokonsumo ng 80% mas kaunting enerhiya ng telepono at pinapayagan ang pag-minimize ng application nang hindi humihinto sa pag-playback.

Kailangan ba ang Chromecast para sa Google Cast?

Google Cast ay gumagana hindi lamang sa Chromecast, kundi pati na rin sa mga telebisyon na may built-in na Google TV, Android TV, gayundin sa mga audio system na may suporta sa Cast (Nest Audio, Sonos). Para sa pag-develop at pagsubok, maaaring gumamit ng virtual Cast device sa pamamagitan ng Chrome DevTools. Para sa integrasyon ng Cast sa application, hindi kinakailangan ang pisikal na device — gamitin ang Cast Connect para sa emulation.

Sinusuportahan ba ng Google Cast ang 4K at HDR?

Oo, ang Chromecast with Google TV (2020) at mas bagong mga modelo ay sumusuporta sa 4K HDR na may Dolby Vision, HDR10 at HDR10+. Ang standard na Chromecast (3rd generation) ay sumusuporta sa 1080p 60fps. Chromecast Ultra — 4K HDR. Para sa 4K streaming, kinakailangan ang bilis ng internet na hindi bababa sa 25 Mbps at suporta sa Widevine L1 para sa DRM content (Netflix, Disney+).

Paano ihinto ang Cast session nang programmatically?

Para ihinto ang session, tawagan ang CastSession.endSession(boolean stopCasting) na may parameter na true kung gusto mong ihinto ang pag-playback sa telebisyon, o false kung gusto mo lang idiskonekta ang telepono. Maaari mo ring gamitin ang stop() method sa RemoteMediaClient. Maaari ring ihinto ng user ang session sa pamamagitan ng Cast Button o Mini Controller sa pamamagitan ng pagpindot sa disconnect button.

Maaari bang magpadala ng custom na data sa pamamagitan ng Google Cast?

Oo, sa pamamagitan ng custom na mensahe (custom messages). Ang Nagpadala ay nagpapadala ng mensahe sa pamamagitan ng namespace (hal. urn:x-cast:custom.namespace) na may arbitrary JSON object. Pinoproseso ng Tatanggap ang mensahe sa pamamagitan ng addCustomMessageListener. Ang custom na mensahe ay sinusuportahan lamang sa Custom na Tatanggap — hindi pinoproseso ng Default na Tatanggap ang custom na namespace. Maximum na laki ng mensahe — 64 KB.

Buod

  • Google Cast — protocol para sa streaming ng content mula sa mga mobile device patungo sa mga telebisyon sa pamamagitan ng Chromecast at Android TV
  • Arkitektura — Nagpadala (application) ay nagpapadala ng URL ng content, Tatanggap (Chromecast) ay naglo-load at nagpe-play
  • CAF SDK — Cast Application Framework na may ready-made na Cast Button, Mini Controller at Expanded Controller
  • Mga Format — HLS, DASH, MP4, WebM, MP3, AAC, FLAC na may adaptive bitrate at subtitle
  • Default na Tatanggap — built-in na Google receiver para sa mabilis na integrasyon nang walang pagsusulat ng code sa telebisyon
  • Custom na Tatanggap — HTML5/JS web application para sa pag-customize ng interface at DRM sa telebisyon
  • Pag-debug — suriin ang Wi-Fi network, URL ng content at suporta sa format; gamitin ang Cast SDK Logger

Gagawa kami ng mobile application na turnkey

Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.

Pag-usapan ang proyekto

Basahin din