Google Cast: əsas anlayışlar, striminq protokolu və Cast SDK

Müəllif: IT Sectr Dərc olunub: 2026-04-30 Oxuma vaxtı: 10 dəq

Google Cast — Cast protokolu vasitəsilə mobil cihazlardan televizorlara və audio sistemlərinə multimediya məzmununun striminqi üçün Google texnologiyasıdır. SDK tərtibatçılara Android və iOS tətbiqlərinə Chromecast dəstəyini əlavə etməyə, video, audio və şəkilləri böyük ekranlara ötürməyə imkan verir. Wedə Google Cast Developer Documentation, 2025 məlumatına görə, dünyada 100 milyondan çox Chromecast cihazı satılıb və Cast SDK 40 000+ tətbiqdə istifadə olunur.

Əasası

  • Google Cast — mobil cihazlardan televizorlara və səsgücəndiricilərə məzmun striminqi üçün protokol və SDK
  • Göndərici (Sender) — Cast cihazına məzmun göndərən mobil tətbiq
  • Qəbuledici (Receiver) — televizordakı tətbiq (Chromecast), məzmunu qəbul edən və oxudan
  • CAF SDK — Cast Application Framework, Cast inteqrasiyası üçün sadələşdirilmiş API (Google tərəfindən tövsiyə olunur)
  • Media Streams — oxutma nəzarəti ilə Cast vasitəsilə HLS, DASH və MP4 striminqi

Google Cast nədir?

Google Cast — Google tərəfindən mobil cihazlardan, noutbuklardan və planşetlərdən televizorlara, səsgücəndiricilərə və digər ekranlara striminq üçün hazırlanmış simsiz multimediya ötürmə protokoludur. AirPlay (Apple) və ya Miracast-dan fərqli olaraq, Cast „URL göndər“ (send-to-device) modelindən istifadə edir: mobil tətbiq Chromecast-a məzmunun URL-ni göndərir və cihaz özü axını yükləyib oxudur, telefonu yükləmədən.

Google Cast-in birbaşa striminq (screen mirroring) ilə müqayisədə əsas üstünlüyü — enerji səmərəliliyidir. Oxutma başladıqdan sonra telefon yalnız pult rolunu oynayır: istifadəçi tətbiqi kiçildə bilər, ekranı bloklaya və ya başqa tətbiqə keçə bilər — video televizorda oxumağa davam edir. Google (2025) məlumatlarına görə, Cast mirroring həlləri ilə müqayisədə telefonda 80% daha az enerji sərf edir.

Google Cast təkcə Chromecast-ı deyil, həm də Sony, TCL, Philips, Hisense və Google TV və ya Android TV olan digər istehsalçıların televizorlarındakı daxili Cast qəbuledicilərini dəstəkləyir. Cast həmçinin audio sistemlərində (Nest Audio, Cast ilə Sonos) və Chromecast Audio-da dəstəklənir. Cast protokolu Wi-Fi (2.4/5 GHz) vasitəsilə işləyir və göndərən cihazla qəbuledicinin eyni şəbəkədə olmasını tələb edir.

Cast Arxitekturası: Göndərici, Qəbuledici və protokollar

Google Cast arxitekturası üç komponentdən ibarətdir: Göndərici (Sender) — mobil tətbiq, Qəbuledici (Receiver) — Chromecast/televizordakı tətbiq və nəqliyyat protokolu. Sender şəbəkədə cihazları aşkarlamaq, əlaqə qurmaq və oxutma əmrləri göndərmək üçün Cast SDK-dan istifadə edir. Receiver — Chromecast brauzerində işləyən, məzmunu yükləyib oxudan veb-tətbiqdir (HTML5 + CSS + JavaScript).

Google Cast protokolu cihazların aşkar edilməsi üçün DIAL (Discovery and Launch) əsasındadır və oxutmaya nəzarət üçün WebSocket üzərində xüsusi protokoldan istifadə edir. DIAL yerli şəbəkədə Cast cihazlarını axtarmaq üçün SSDP-dən (Simple Service Discovery Protocol) istifadə edir. Aşkarlanmadan sonra Sender 8008 və ya 8009 portu vasitəsilə Receiver ilə WebSocket əlaqəsi qurur və JSON formatında əmrlər göndərir: LOAD, PLAY, PAUSE, STOP, SEEK.

KomponentPlatformaTexnologiya
Göndərici (Sender)Android / iOS / ChromeCast SDK (Java/Kotlin, Swift, JS)
Defolt Qəbuledici (Default Receiver)Chromecast / Android TVDaxili (Google Cast Console vasitəsilə konfiqurasiya)
Fərdi Qəbuledici (Custom Receiver)Chromecast / Android TVVeb-tətbiq (HTML5, CAF Receiver JS)
ProtokolYerli Wi-Fi şəbəkəsiWebSocket + JSON + DIAL/SSDP
Media NəqliyyatıInternetHLS, DASH, MP4 (Chromecast tərəfindən birbaşa yüklənmə)

Oxutmaya Nəzarət üçün Cast v2 Protokolu

Sender Qəbulediciyə məzmunun özünü yox, URL (media URL) və metadatları (ad, şəkil, altyazılar) göndərir. Qəbuledici URL-dən məzmunu müstəqil yükləyir ki, bu da telefonun məlumat ötürməyə batareya sərf etməməsinə imkan verir. Oxutma başladıqdan sonra Sender Cast Protocol v2 vasitəsilə fasilə, irəli-çəki, səs səviyyəsinin tənzimlənməsi əmrləri göndərə və oxutma statusunu ala bilər.

Cast Application Framework (CAF): sürətli inteqrasiya

Cast Application Framework (CAF) — 2018-ci ildə təqdim edilmiş, mobil tətbiqlərdə Cast inteqrasiyası üçün Google-dan sadələşdirilmiş API-dir. CAF köhnəlmiş Cast SDK-nı (CastCompanionLibrary) əvəz edir və hazır UI komponentləri təqdim edir: Cast Button (cihaz aşkarlama ikonu), Mini Controller (ekranın aşağısında mini pleyer) və Expanded Controller (tam ekran pultu). CAF Android, iOS, Flutter və React Native-i dəstəkləyir.

CAF-dan istifadə etmək üçün tərtibatçı öz Qəbuledici (Receiver) yazmalı deyil — Google məzmunu avtomatik yükləyib oxudan Defolt Qəbuledici (Default Receiver) təqdim edir. Default Receiver HLS, DASH, MP4, WebM, MP3, şəkillər və altyazıları dəstəkləyir. Receiver konfiqurasiyası Google Cast Console-da aparılır — məzmunun URL-ni qeyd etmək kifayətdir və Default Receiver qalanını idarə edir. Fərdi Qəbuledici yalnız qeyri-standart ssenarilərdə tələb olunur: televizorda öz interfeysi, DRM dəstəyi, oxutma növbələri.

kotlin
// CAF Receiver Seçimlərinin Konfiqurasiyası
val receiverOptions = CastReceiverOptions.Builder(context)
    .setReceiverApplicationId(
        CastMediaControlIntent.DEFAULT_MEDIA_RECEIVER_APPLICATION_ID
    )
    .build()

// Cast Kontekstinin Qoşulması
val castContext = CastContext.getSharedInstance(context)
castContext.setReceiverOptions(receiverOptions)

Cast Connect: fiziki cihaz olmadan test etmə

CAF avtomatik olaraq əlaqə həyat dövranüçünü idarə edir: Cast Button vasitəsilə cihazların aşkarlanması, əlaqə qurulması, media yüklənməsi, müvəqqəti əlaqə itkisində fasilə və yenidən qoşulma. CAF həmçinin pleylistlər üçün oxutma növbələrini (media queues) və Android-də kilid ekranında və bildiriş mərkəzində „Cast“ düyməsini dəstəkləyir. Minimum versiya: Android 5.0 (API 21), iOS 14+.

Media Striminqi: Chromecast-da HLS, DASH və MP4

Google Cast əsas striminq formatlarını dəstəkləyir: Apple-dan HLS (HTTP Live Streaming), DASH (Dynamic Adaptive Streaming over HTTP) və proqressiv MP4. Chromecast internet bağlantısının sürətinə əsasən avtomatik olaraq optimal video keyfiyyətini seçir (adaptive bitrate). HLS və DASH üçün Chromecast oxutmanı dayandırmadan real vaxtda axınları dəyişir. HLS Chromecast proqram təminatı versiyası 1.28+-dan dəstəklənir.

Google Cast vasitəsilə striminq üçün məzmun açıq URL (HTTP/HTTPS) üzrə əlçatan olmalıdır — Chromecast məzmunu telefondan yox, birbaşa serverdən yükləyir. DRM (Digital Rights Management) Widevine vasitəsilə dəstəklənir: Chromecast Widevine L3 (bütün cihazlar) və L1 (bəzi modellər, məs. Chromecast with Google TV) dəstəkləyir. DRM ilə işləmək üçün Shaka Player və ya ExoPlayer inteqrasiyası ilə fərdi Qəbuledici tələb olunur. Google məlumatına görə, Chromecast with Google TV Netflix, Disney+ və digər xidmətlər üçün Widevine L1 ilə 4K HDR dəstəkləyir.

kotlin
// CAF vasitəsilə Chromecast-a Media Yüklənməsi
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)

Altyazı formatları: Chromecast TTML, WebVTT və CEA-608 dəstəkləyir. Altyazılar MediaTrack vasitəsilə MediaInfo-nun bir hissəsi kimi ötürülür. Chromecast həmçinin Cast Queue API vasitəsilə şəkillər arasında sürüşdürmə imkanı ilə asinxron şəkil yüklənməsini dəstəkləyir. Audio üçün Chromecast MP3, AAC, FLAC, WAV və OGG dəstəkləyir. Google Cast vasitəsilə audio striminq Chromecast Audio və Cast səsgücəndiricilərində dəstəklənir.

Cast UI Komponentləri: Cast Button və Mini Controller

Cast Button — Google Cast SDK-nın əsas UI komponentidir, Cast ikonasını göstərir və avtomatik olaraq vəziyyəti dəyişdirir: qeyri-aktiv (cihaz yoxdur), əlçatan (cihazlar tapıldı), qoşulub (aktiv sessiya). Cast Button-a basdıqda cihaz seçimi dialoqu açılır. Komponent MediaRouteActionProvider (Android) və ya GCKUICastButton (iOS) vasitəsilə əlçatandır. Cast Button yalnız şəbəkədə Cast cihazları mövcud olduqda görünməlidir — CAF cihaz olmadıqda düyməni avtomatik gizlədir.

Mini Controller — ekranın aşağısında məzmunun adını, üz qabığını, play/pause düymələrini və sessiyanı bağlama düyməsini göstərən paneldir. Mini Controller Cast sessiyası aktiv olduqda və istifadəçi oxutma ilə əlaqəsiz ekranda olduqda avtomatik görünür. CAF Android üçün layout-a yerləşdirilən hazır MiniControllerFragment təqdim edir. Defolt olaraq Mini Controller ekranın aşağısında yerləşir, lakin istənilən mövqeyə konfiqurasiya edilə bilər.

kotlin
// Mini Controller-in Stil vasitəsilə Fərdiləşdirilməsi
// styles.xml
// <style name="CastMiniControllerStyle"
//     parent="Theme.GoogleCast">
//     <item name="castMiniBackgroundColor">#FF0000</item>
//     <item name="castShowImageThumbnail">true</item>
// </style>

// Mini Controller-in Proqram İdarəsi
val miniController = findViewById<MiniControllerFragment>(
    R.id.miniController
)
miniController.setVisibility(
    isCastSessionActive()
)

Expanded Controller — Mini Controller-a basdıqda açılan televizorda oxutmaya nəzarət üçün tam ekran pultudur. Expanded Controller göstərir: ad, təsvir, üz qabığı, irəli-çəki imkanı ilə gedişat çubuğu, play/pause/stop düymələri, treklər siyahısı (əgər növbə varsa), səs tənzimləyicisi və ayırma düyməsi. CAF avtomatik başlayan hazır ExpandedControllerActivity təqdim edir. Fərdi interfeys lazımdırsa — baza ExpandedControllerActivity-ni genişləndirin.

Fərdi Qəbuledici: televizorda öz interfeysiniz

Fərdi Qəbuledici (Custom Receiver) — Cast sessiyası başladıqda Chromecast-a yüklənən veb-tətbiqdir (HTML5 + CSS + JavaScript). Defolt Qəbuledicidən fərqli olaraq, fərdi qəbuledici televizorda məzmunun görünüşünü tam idarə etməyə imkan verir: fon şəkilləri, animasiyalar, fərdi idarəetmə elementləri, brend loqosu. Fərdi Qəbuledici Google Cast Console-da qeydiyyatdan keçirilir və unikal Application ID alır.

Fərdi Qəbuledicinin hazırlanması Cast Receiver Framework (CAF Receiver) istifadə edərək JavaScript-də aparılır. CAF Receiver Göndəricidən gələn mesajların işlənməsi, media axınının idarə edilməsi, növbələrin işlənməsi və DRM inteqrasiyası üçün API təqdim edir. Qəbuledici Chromecast-ın izolyasiya olunmuş brauzer mühitində (WebKit) DOM-a məhdud çıxışla işləyir. Minimum tələblər: HTML5, CSS3, JavaScript ES6. Qəbuledici HTTPS serverində yerləşdirilir.

js
// CAF-da Əsas Fərdi Qəbuledici
const context = cast.framework.CastReceiverContext.getInstance()
const playerManager = context.getPlayerManager()

playerManager.setMessageInterceptor(
    cast.framework.messages.MessageType.LOAD,
    (loadData) => {
        // Media Yüklənməsinin Fərdi İşlənməsi
        console.log("Loading media:", loadData.media.contentId)
        return loadData
    }
)

context.start()

// Göndəricidən Fərdi Mesajların İşlənməsi
context.addCustomMessageListener("urn:x-cast:custom", (event) => {
    console.log("Custom data:", event.data)
})

Fərdi Qəbuledicinin hazırlanması və yerləşdirilməsi

Fərdi Qəbuledici Cast Developer Console vasitəsilə real cihazda sınaqdan keçirilməlidir. Google standart ssenarilər üçün Defolt Qəbuledicidən istifadə etməyi və fərdi Qəbuledicini yalnız televizorda öz interfeysinizə, DRM (Widevine) dəstəyinə və ya öz məntiqi ilə oxutma növbələrinə ehtiyac olduqda tövsiyə edir. Qəbuledici Sender səhifəsinin DOM-na çıxış əldə edə bilməz və Sender tərəfindən göndərilmiş JavaScript-i yerinə yetirə bilməz (təhlükəsizlik).

Kod Nümunəsi: Android-də Google Cast inteqrasiyası

CAF istifadə edərək Android tətbiqində Google Cast inteqrasiyasının tam nümunəsi. Tətbiq video oxudur və onu Cast Button vasitəsilə Chromecast-a yayımlamağa imkan verir. Kod CastOptions konfiqurasiyası, CastContext-in işə salınması, əlaqənin idarə edilməsi və Cast cihazına media yüklənməsini əhatə edir.

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

Google Cast-i test etmək üçün Chrome DevTools (Cast sekmesi) və ya fiziki Chromecast vasitəsilə virtual Cast cihazından istifadə edin. Google test Application ID — CC1AD845 (Default Media Receiver) təqdim edir. Nəşrdən əvvəl tətbiqinizi Google Cast Console-da qeydiyyatdan keçirin və istehsal Application ID əldə edin. Cast SDK Google Play Services 21.0.0+ və Android 5.0+ tələb edir.

Tipik Problemlər və Cast Debugging

Birinci tez-tez rast gəlinən problem — Cast Button görünmür. Səbəblər: cihazlar eyni Wi-Fi şəbəkəsində deyil, Chromecast DIAL-ı dəstəkləmir (köhnə proqram təminatı) və ya telefonda Wi-Fi aşkarlanması söndürülüb. Həll: telefon və Chromecast-ın eyni şəbəkəyə (2.4 GHz və ya 5 GHz) qoşulduğunu yoxlayın. Google Cast qonaq Wi-Fi şəbəkələri, VPN və ya müştəri izolyasiyası olan korporativ şəbəkələrdə işləmir. Fiziki cihaz olmadan test etmək üçün Cast Connect-dən istifadə edin.

Ikinci problem — oxutma zamanı əlaqənin qopması. Chromecast zəif siqnal, kanalın həddən artıq yüklənməsi və ya mikrodalılı sobadan (2.4 GHz) müdaxilə səbəbindən Wi-Fi əlaqəsini itirə bilər. Həll: Chromecast-ı marşrutizatora yaxınlaşdırın, 5 GHz istifadə edin (əgər dəstəklənirsə), Chromecast trafiki üçün QoS konfiqurasiya edin. Tətbiqdə IDLE vəziyyəti və xəta səbəbi ilə onRemoteMediaPlayerStatusUpdated callback-ni idarə edin — əlaqə itkisində bildiriş göstərin və yenidən qoşulmağı təklif edin.

Üçüncü problem — məzmun Chromecast-da oxudulmur. Yoxlayın: məzmunun URL-i internetdən əlçatandır (Chromecast məzmunu birbaşa yükləyir, telefon vasitəsilə yox), format Chromecast tərəfindən dəstəklənir, CORS blokadası yoxdur (.m3u8 və .mpd üçün). Default Receiver istifadə olunursa, Application ID-nin düzgün olduğuna əmin olun. Fərdi Qəbuledici üçün tətbiqin HTTPS-də yerləşdirildiyini yoxlayın. Debug etmək üçün Cast SDK Logger istifadə edin: CastContext.getSharedInstance().setCastLogger(...).

Tez-tez verilən suallar

Google Cast AirPlay və Miracast-dan nə ilə fərqlənir?

Google Cast „URL göndər“ modelindən istifadə edir — telefon Chromecast-a məzmunun linkini göndərir, o isə birbaşa yükləyir. AirPlay (Apple) — Apple ekosistemi üçün oxşar protokol. Miracast — telefonu yükləyən birbaşa ekran ötürməsidir (screen mirroring). Cast telefonun 80% daha az enerji sərf edir və oxutmanı dayandırmadan tətbiqi kiçiltməyə imkan verir.

Google Cast-in işləməsi üçün Chromecast lazımdır?

Google Cast təkcə Chromecast-da deyil, həm də daxili Google TV, Android TV olan televizorlarda və Cast dəstəyi olan audio sistemlərdə (Nest Audio, Sonos) işləyir. Hazırlama və test üçün Chrome DevTools vasitəsilə virtual Cast cihazından istifadə edilə bilər. Tətbiqdə Cast inteqrasiyası üçün fiziki cihaz tələb olunmur — emulyasiya üçün Cast Connect-dən istifadə edin.

Google Cast 4K və HDR dəstəkləyirmi?

Bəli, Chromecast with Google TV (2020) və daha yeni modellər Dolby Vision, HDR10 və HDR10+ ilə 4K HDR dəstəkləyir. Standart Chromecast (3-cü nəsil) 1080p 60fps dəstəkləyir. Chromecast Ultra — 4K HDR. 4K striminqi üçün internet sürəti ən azı 25 Mbps və DRM məzmunu (Netflix, Disney+) üçün Widevine L1 dəstəyi tələb olunur.

Cast sessiyasını proqram vasitəsilə necə dayandırmaq olar?

Sessiyanı dayandırmaq üçün CastSession.endSession(boolean stopCasting) metodunu çağırın: televizorda oxutmanı dayandırmaq istəyirsinizsə true, sadəcə telefonu ayırmaq istəyirsinizsə false ötürün. RemoteMediaClient-də stop() metodundan da istifadə edə bilərsiniz. İstifadəçi həmçinin Cast Button və ya Mini Controller vasitəsilə ayırma düyməsinə basaraq sessiyanı dayandıra bilər.

Google Cast vasitəsilə fərdi məlumatlar ötürmək olarmı?

Bəli, fərdi mesajlar (custom messages) vasitəsilə. Sender namespace (məs. urn:x-cast:custom.namespace) vasitəsilə ixtiyari JSON obyekti ilə mesaj göndərir. Receiver mesajı addCustomMessageListener vasitəsilə emal edir. Fərdi mesajlar yalnız fərdi Qəbuledici ilə dəstəklənir — Default Receiver fərdi namespace-ləri emal etmir. Maksimum mesaj ölçüsü — 64 KB.

Xülasə

  • Google Cast — mobil cihazlardan Chromecast və Android TV vasitəsilə televizorlara məzmun striminqi protokolu
  • Arxitektura — Göndərici (tətbiq) məzmunun URL-ni göndərir, Qəbuledici (Chromecast) yükləyib oxudur
  • CAF SDK — Cast Application Framework hazır Cast Button, Mini Controller və Expanded Controller komponentləri ilə
  • Formatlar — HLS, DASH, MP4, WebM, MP3, AAC, FLAC adaptiv bitrate və altyazılarla
  • Defolt Qəbuledici — televizorda kod yazmadan sürətli inteqrasiya üçün daxili Google qəbuledicisi
  • Fərdi Qəbuledici — televizorda interfeysin və DRM-nin fərdiləşdirilməsi üçün HTML5/JS veb-tətbiqi
  • Debugging — Wi-Fi şəbəkəsini, məzmun URL-ni və format dəstəyini yoxlayın; Cast SDK Logger istifadə edin

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun