Google Cast — adalah teknologi dari Google untuk melakukan streaming konten multimedia dari perangkat seluler ke televisi dan sistem audio melalui protokol Cast. SDK memungkinkan pengembang untuk menambahkan dukungan Chromecast ke aplikasi Android dan iOS, mentransmisikan video, audio, dan gambar ke layar besar. Menurut Google Cast Developer Documentation, 2025, lebih dari 100 juta perangkat Chromecast telah terjual di seluruh dunia, dan Cast SDK digunakan di lebih dari 40.000 aplikasi.
Utama
Google Cast — adalah protokol transmisi multimedia nirkabel yang dikembangkan oleh Google untuk streaming dari perangkat seluler, laptop, dan tablet ke televisi, speaker, dan layar lainnya. Berbeda dengan AirPlay (Apple) atau Miracast, Cast menggunakan model “kirim URL” (send-to-device): aplikasi seluler mengirimkan URL konten ke Chromecast, dan perangkat itu sendiri memuat dan memutar streaming, tanpa membebani telepon.
Keunggulan utama Google Cast dibandingkan streaming langsung (screen mirroring) — efisiensi energi. Setelah pemutaran dimulai, telepon hanya berfungsi sebagai remote control: pengguna dapat mengecilkan aplikasi, mengunci layar, atau beralih ke aplikasi lain — video terus diputar di televisi. Menurut data Google (2025), Cast mengonsumsi energi 80% lebih sedikit di telepon dibandingkan dengan solusi mirroring.
Google Cast tidak hanya mendukung Chromecast, tetapi juga penerima Cast bawaan di televisi Sony, TCL, Philips, Hisense, dan produsen lain dengan Google TV atau Android TV. Cast juga didukung di sistem audio (Nest Audio, Sonos dengan Cast) dan Chromecast Audio. Protokol Cast bekerja melalui Wi-Fi (2,4/5 GHz) dan memerlukan perangkat pengirim dan penerima berada di jaringan yang sama.
Arsitektur Google Cast terdiri dari tiga komponen: Pengirim (aplikasi seluler), Penerima (aplikasi di Chromecast/televisi), dan protokol transport. Pengirim menggunakan Cast SDK untuk mendeteksi perangkat di jaringan, membuat koneksi, dan mengirim perintah pemutaran. Penerima adalah aplikasi web (HTML5 + CSS + JavaScript) yang berjalan di browser Chromecast, yang memuat dan memutar konten.
Protokol Google Cast didasarkan pada DIAL (Discovery and Launch) untuk deteksi perangkat dan protokol proprietary melalui WebSocket untuk kontrol pemutaran. DIAL menggunakan SSDP (Simple Service Discovery Protocol) untuk mencari perangkat Cast di jaringan lokal. Setelah deteksi, Pengirim membuat koneksi WebSocket dengan Penerima melalui port 8008 atau 8009 dan mengirim perintah dalam format JSON: LOAD, PLAY, PAUSE, STOP, SEEK.
| Komponen | Platform | Teknologi |
|---|---|---|
| Pengirim (Sender) | Android / iOS / Chrome | Cast SDK (Java/Kotlin, Swift, JS) |
| Penerima Default (Default Receiver) | Chromecast / Android TV | Bawaan (konfigurasi melalui Google Cast Console) |
| Penerima Kustom (Custom Receiver) | Chromecast / Android TV | Aplikasi web (HTML5, CAF Receiver JS) |
| Protokol | Jaringan lokal Wi-Fi | WebSocket + JSON + DIAL/SSDP |
| Transport media | Internet | HLS, DASH, MP4 (pemuatan langsung oleh Chromecast) |
Pengirim mengirim ke Penerima bukan konten itu sendiri, tetapi URL (media URL) dan metadata (nama, gambar, teks). Penerima memuat konten secara mandiri dari URL, sehingga telepon tidak perlu menghabiskan baterai untuk transmisi data. Setelah pemutaran dimulai, Pengirim dapat mengirim perintah jeda, mundur, pengaturan volume, dan menerima status pemutaran melalui Cast Protocol v2.
Cast Application Framework (CAF) — adalah API yang disederhanakan dari Google untuk integrasi Cast di aplikasi seluler, diperkenalkan pada tahun 2018. CAF menggantikan Cast SDK lama (CastCompanionLibrary) dan menyediakan komponen UI siap pakai: Cast Button (ikon deteksi perangkat), Mini Controller (pemutar mini di bagian bawah layar), dan Expanded Controller (remote control layar penuh). CAF mendukung Android, iOS, Flutter, dan React Native.
Untuk menggunakan CAF, pengembang tidak perlu menulis Penerima sendiri — Google menyediakan Penerima Default (Default Receiver) yang secara otomatis memuat dan memutar konten. Penerima Default mendukung HLS, DASH, MP4, WebM, MP3, gambar, dan teks. Konfigurasi Penerima dilakukan di Google Cast Console — cukup tentukan URL konten, dan Penerima Default akan menangani sisanya. Penerima Kustom hanya diperlukan untuk skenario non-standar: antarmuka sendiri di televisi, dukungan DRM, antrian pemutaran.
// Mengonfigurasi Opsi CAF Receiver
val receiverOptions = CastReceiverOptions.Builder(context)
.setReceiverApplicationId(
CastMediaControlIntent.DEFAULT_MEDIA_RECEIVER_APPLICATION_ID
)
.build()
// Menghubungkan Konteks Cast
val castContext = CastContext.getSharedInstance(context)
castContext.setReceiverOptions(receiverOptions)CAF secara otomatis mengelola siklus hidup koneksi: deteksi perangkat melalui Cast Button, pembuatan koneksi, pemuatan media, jeda saat kehilangan koneksi sementara, dan koneksi ulang. CAF juga mendukung antrian pemutaran (media queues) untuk daftar putar dan tombol „Cast” di layar kunci dan pusat notifikasi (Android). Versi minimum: Android 5.0 (API 21), iOS 14+.
Google Cast mendukung format streaming utama: HLS (HTTP Live Streaming) dari Apple, DASH (Dynamic Adaptive Streaming over HTTP), dan MP4 progresif. Chromecast secara otomatis memilih kualitas video optimal berdasarkan kecepatan koneksi internet (bitrate adaptif). Untuk HLS dan DASH, Chromecast beralih streaming secara real-time tanpa menghentikan pemutaran. HLS didukung sejak versi firmware Chromecast 1.28+.
Untuk streaming melalui Google Cast, konten harus dapat diakses melalui URL publik (HTTP/HTTPS) — Chromecast memuat konten langsung dari server, bukan dari telepon. DRM (Digital Rights Management) didukung melalui Widevine: Chromecast mendukung Widevine L3 (semua perangkat) dan L1 (beberapa model, misalnya Chromecast with Google TV). Untuk bekerja dengan DRM, diperlukan Penerima Kustom dengan integrasi Shaka Player atau ExoPlayer. Menurut Google, Chromecast with Google TV mendukung 4K HDR dengan Widevine L1 untuk Netflix, Disney+, dan layanan lainnya.
// Memuat Media ke Chromecast melalui 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)Format teks: Chromecast mendukung TTML, WebVTT, dan CEA-608. Teks dikirim sebagai bagian dari MediaInfo melalui MediaTrack. Chromecast juga mendukung pemuatan gambar asinkron (foto) dengan kemampuan menggeser antar gambar melalui Cast Queue API. Untuk audio, Chromecast mendukung MP3, AAC, FLAC, WAV, dan OGG. Streaming audio melalui Google Cast didukung di Chromecast Audio dan speaker Cast.
Cast Button — komponen UI utama Google Cast SDK, yang menampilkan ikon Cast dan secara otomatis mengubah status: tidak aktif (tidak ada perangkat), tersedia (perangkat ditemukan), terhubung (sesi aktif). Saat Cast Button ditekan, dialog pemilihan perangkat terbuka. Komponen tersedia melalui MediaRouteActionProvider (Android) atau GCKUICastButton (iOS). Cast Button seharusnya hanya terlihat ketika perangkat Cast tersedia di jaringan — CAF secara otomatis menyembunyikan tombol ketika tidak ada perangkat.
Mini Controller — panel di bagian bawah layar yang menampilkan nama konten, sampul, tombol play/pause, dan tombol tutup sesi. Mini Controller muncul secara otomatis ketika sesi Cast aktif dan pengguna berada di layar yang tidak terkait dengan pemutaran. CAF menyediakan MiniControllerFragment siap pakai untuk Android yang disematkan ke dalam layout. Secara default, Mini Controller berada di bagian bawah layar, tetapi dapat dikonfigurasi ke posisi mana pun.
// Kustomisasi Mini Controller melalui Gaya
// styles.xml
// <style name="CastMiniControllerStyle"
// parent="Theme.GoogleCast">
// <item name="castMiniBackgroundColor">#FF0000</item>
// <item name="castShowImageThumbnail">true</item>
// </style>
// Kontrol Mini Controller secara Programatik
val miniController = findViewById<MiniControllerFragment>(
R.id.miniController
)
miniController.setVisibility(
isCastSessionActive()
)Expanded Controller — remote control layar penuh untuk kontrol pemutaran di televisi, yang terbuka saat Mini Controller ditekan. Expanded Controller menampilkan: nama, deskripsi, sampul, bilah kemajuan dengan kemampuan memundurkan, tombol play/pause/stop, daftar trek (jika ada antrian), pengatur volume, dan tombol putus. CAF menyediakan ExpandedControllerActivity siap pakai yang dimulai secara otomatis. Jika antarmuka kustom diperlukan, perluas ExpandedControllerActivity dasar.
Penerima Kustom (Custom Receiver) — adalah aplikasi web (HTML5 + CSS + JavaScript) yang dimuat di Chromecast saat memulai sesi Cast. Berbeda dengan Penerima Default, penerima kustom memungkinkan kontrol penuh atas tampilan konten di televisi: gambar latar belakang, animasi, elemen kontrol kustom, logo merek. Penerima Kustom didaftarkan di Google Cast Console dan menerima Application ID yang unik.
Pengembangan Penerima Kustom dilakukan dalam JavaScript menggunakan Cast Receiver Framework (CAF Receiver). CAF Receiver menyediakan API untuk memproses pesan masuk dari Pengirim, mengelola streaming media, memproses antrian, dan integrasi DRM. Penerima berjalan di lingkungan browser Chromecast yang terisolasi (WebKit) dengan akses terbatas ke DOM. Persyaratan minimum: HTML5, CSS3, JavaScript ES6. Penerima dihosting di server HTTPS.
// Penerima Kustom dasar di CAF
const context = cast.framework.CastReceiverContext.getInstance()
const playerManager = context.getPlayerManager()
playerManager.setMessageInterceptor(
cast.framework.messages.MessageType.LOAD,
(loadData) => {
// Pemrosesan Kustom Pemuatan Media
console.log("Loading media:", loadData.media.contentId)
return loadData
}
)
context.start()
// Penanganan Pesan Kustom dari Pengirim
context.addCustomMessageListener("urn:x-cast:custom", (event) => {
console.log("Custom data:", event.data)
})Penerima Kustom harus diuji pada perangkat nyata melalui Cast Developer Console. Google merekomendasikan penggunaan Penerima Default untuk skenario standar dan Penerima Kustom hanya ketika antarmuka sendiri di televisi, dukungan DRM (Widevine), atau antrian pemutaran dengan logika sendiri diperlukan. Penerima tidak memiliki akses ke DOM halaman Pengirim dan tidak dapat menjalankan JavaScript yang dikirim oleh Pengirim (keamanan).
Contoh lengkap integrasi Google Cast di aplikasi Android menggunakan CAF. Aplikasi memutar video dan memungkinkan streaming ke Chromecast melalui Cast Button. Kode mencakup konfigurasi CastOptions, inisialisasi CastContext, manajemen koneksi, dan pemuatan media ke perangkat Cast.
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)
}
}Untuk menguji Google Cast, gunakan perangkat Cast virtual melalui Chrome DevTools (tab Cast) atau Chromecast fisik. Google menyediakan Application ID uji — CC1AD845 (Default Media Receiver). Sebelum publikasi, daftarkan aplikasi Anda di Google Cast Console dan dapatkan Application ID produksi. Cast SDK memerlukan Google Play Services 21.0.0+ dan Android 5.0+.
Masalah umum pertama — Cast Button tidak muncul. Penyebab: perangkat tidak berada di jaringan Wi-Fi yang sama, Chromecast tidak mendukung DIAL (firmware lama), atau deteksi Wi-Fi dimatikan di telepon. Solusi: periksa apakah telepon dan Chromecast terhubung ke jaringan yang sama (2,4 GHz atau 5 GHz). Google Cast tidak berfungsi melalui jaringan Wi-Fi tamu, VPN, atau jaringan korporat dengan isolasi klien. Gunakan Cast Connect untuk pengujian tanpa perangkat fisik.
Masalah kedua — koneksi terputus selama pemutaran. Chromecast dapat kehilangan koneksi Wi-Fi karena sinyal lemah, kelebihan beban saluran, atau interferensi dari microwave (2,4 GHz). Solusi: tempatkan Chromecast lebih dekat ke router, gunakan 5 GHz (jika didukung), konfigurasikan QoS untuk lalu lintas Chromecast. Di aplikasi, tangani callback onRemoteMediaPlayerStatusUpdated dengan status IDLE dan alasan kesalahan — saat kehilangan koneksi, tampilkan notifikasi dan tawarkan koneksi ulang.
Masalah ketiga — konten tidak diputar di Chromecast. Periksa: URL konten dapat diakses dari internet (Chromecast memuat konten langsung, bukan melalui telepon), format didukung oleh Chromecast, tidak ada pemblokiran CORS (untuk .m3u8 dan .mpd). Jika menggunakan Penerima Default, pastikan Application ID benar. Untuk Penerima Kustom, periksa apakah aplikasi dihosting di HTTPS. Gunakan Cast SDK Logger untuk debugging: CastContext.getSharedInstance().setCastLogger(...).
Pertanyaan yang sering diajukan
Google Cast menggunakan model “kirim URL” — telepon mengirim tautan konten ke Chromecast yang dimuat langsung. AirPlay (Apple) — protokol serupa untuk ekosistem Apple. Miracast — transmisi layar langsung (screen mirroring) yang membebani telepon. Cast mengonsumsi 80% lebih sedikit energi telepon dan memungkinkan pengecilan aplikasi tanpa menghentikan pemutaran.
Google Cast bekerja tidak hanya di Chromecast, tetapi juga di televisi dengan Google TV bawaan, Android TV, serta sistem audio dengan dukungan Cast (Nest Audio, Sonos). Untuk pengembangan dan pengujian, Anda dapat menggunakan perangkat Cast virtual melalui Chrome DevTools. Untuk integrasi Cast di aplikasi, perangkat fisik tidak diperlukan — gunakan Cast Connect untuk emulasi.
Ya, Chromecast with Google TV (2020) dan model yang lebih baru mendukung 4K HDR dengan Dolby Vision, HDR10, dan HDR10+. Chromecast standar (generasi ke-3) mendukung 1080p 60fps. Chromecast Ultra — 4K HDR. Untuk streaming 4K, diperlukan kecepatan internet minimal 25 Mbps dan dukungan Widevine L1 untuk konten DRM (Netflix, Disney+).
Untuk menghentikan sesi, panggil CastSession.endSession(boolean stopCasting) dengan parameter true jika ingin menghentikan pemutaran di televisi, atau false jika hanya ingin memutuskan telepon. Anda juga dapat menggunakan metode stop() pada RemoteMediaClient. Pengguna juga dapat menghentikan sesi melalui Cast Button atau Mini Controller dengan menekan tombol putus.
Ya, melalui pesan kustom (custom messages). Pengirim mengirim pesan melalui namespace (misalnya, urn:x-cast:custom.namespace) dengan objek JSON arbitrer. Penerima memproses pesan melalui addCustomMessageListener. Pesan kustom hanya didukung dengan Penerima Kustom — Penerima Default tidak memproses namespace kustom. Ukuran maksimum pesan — 64 KB.
Ringkasan
Kami akan mengembangkan aplikasi seluler turnkey
IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.
Baca juga