Google Cast Google की एक तकनीक है जो Cast प्रोटोकॉल के माध्यम से मोबाइल उपकरणों से टीवी और ऑडियो सिस्टम पर मल्टीमीडिया सामग्री स्ट्रीम करने के लिए है। SDK डेवलपर्स को Android और iOS एप्लिकेशन में Chromecast समर्थन जोड़ने, बड़ी स्क्रीन पर वीडियो, ऑडियो और इमेज भेजने की अनुमति देता है। Google Cast Developer Documentation, 2025 के अनुसार, दुनिया भर में 100 मिलियन से अधिक Chromecast डिवाइस बेचे गए हैं, और Cast SDK का उपयोग 40,000+ एप्लिकेशन में किया जाता है।
मुख्य बातें
Google Cast Google द्वारा विकसित एक वायरलेस मल्टीमीडिया सामग्री ट्रांसमिशन प्रोटोकॉल है जो मोबाइल उपकरणों, लैपटॉप और टैबलेट से टीवी, स्पीकर और अन्य स्क्रीन पर स्ट्रीम करने के लिए है। AirPlay (Apple) या Miracast के विपरीत, Cast 'URL भेजें' मॉडल (send-to-device) का उपयोग करता है: मोबाइल ऐप Chromecast को एक सामग्री URL भेजता है, और डिवाइस स्वयं फ़ोन पर बोझ डाले बिना स्ट्रीम लोड और चलाता है।
डायरेक्ट स्ट्रीमिंग (स्क्रीन मिररिंग) पर Google Cast का मुख्य लाभ ऊर्जा दक्षता है। प्लेबैक शुरू होने के बाद, फ़ोन केवल एक रिमोट कंट्रोल के रूप में कार्य करता है: उपयोगकर्ता ऐप को छोटा कर सकता है, स्क्रीन लॉक कर सकता है, या किसी अन्य ऐप पर स्विच कर सकता है — वीडियो टीवी पर चलता रहता है। Google (2025) के अनुसार, मिररिंग समाधानों की तुलना में Cast फ़ोन पर 80% कम बिजली की खपत करता है।
Google Cast न केवल Chromecast बल्कि Google TV या Android TV वाले Sony, TCL, Philips, Hisense और अन्य निर्माताओं के टीवी में निर्मित Cast रिसीवर का भी समर्थन करता है। Cast ऑडियो सिस्टम (Nest Audio, Cast के साथ Sonos) और Chromecast Audio में भी समर्थित है। Cast प्रोटोकॉल Wi-Fi (2.4/5 GHz) पर काम करता है और इसके लिए आवश्यक है कि भेजने वाला और प्राप्त करने वाला एक ही नेटवर्क पर हों।
Google Cast आर्किटेक्चर तीन घटकों से मिलकर बना है: Sender (मोबाइल ऐप), Receiver (Chromecast/TV पर ऐप) और ट्रांसपोर्ट प्रोटोकॉल। Sender नेटवर्क पर डिवाइस खोजने, कनेक्शन स्थापित करने और प्लेबैक कमांड भेजने के लिए Cast SDK का उपयोग करता है। Receiver एक वेब एप्लिकेशन (HTML5 + CSS + JavaScript) है जो Chromecast ब्राउज़र में चलता है और सामग्री लोड और चलाता है।
Google Cast प्रोटोकॉल डिवाइस डिस्कवरी के लिए DIAL (Discovery and Launch) और प्लेबैक नियंत्रण के लिए WebSocket पर एक मालिकाना प्रोटोकॉल पर आधारित है। DIAL स्थानीय नेटवर्क पर Cast डिवाइस खोजने के लिए SSDP (Simple Service Discovery Protocol) का उपयोग करता है। डिस्कवरी के बाद, Sender पोर्ट 8008 या 8009 पर Receiver के साथ WebSocket कनेक्शन स्थापित करता है और JSON प्रारूप में कमांड भेजता है: LOAD, PLAY, PAUSE, STOP, SEEK।
| घटक | प्लेटफ़ॉर्म | तकनीक |
|---|---|---|
| Sender | Android / iOS / Chrome | Cast SDK (Java/Kotlin, Swift, JS) |
| Default Receiver | Chromecast / Android TV | निर्मित (Google Cast Console के माध्यम से कॉन्फ़िगर किया गया) |
| Custom Receiver | Chromecast / Android TV | वेब एप्लिकेशन (HTML5, CAF Receiver JS) |
| प्रोटोकॉल | स्थानीय Wi-Fi नेटवर्क | WebSocket + JSON + DIAL/SSDP |
| मीडिया ट्रांसपोर्ट | इंटरनेट | HLS, DASH, MP4 (सीधा Chromecast लोडिंग) |
Sender Receiver को स्वयं सामग्री नहीं, बल्कि एक URL (मीडिया URL) और मेटाडेटा (शीर्षक, छवि, उपशीर्षक) भेजता है। Receiver स्वतंत्र रूप से URL से सामग्री लोड करता है, जिससे डेटा ट्रांसमिशन के लिए फ़ोन की बैटरी बचती है। प्लेबैक शुरू होने के बाद, Sender Cast Protocol v2 के माध्यम से पॉज़, रिवाइंड, वॉल्यूम कंट्रोल कमांड भेज सकता है और प्लेबैक स्थिति प्राप्त कर सकता है।
Cast Application Framework (CAF) मोबाइल एप्लिकेशन में Cast को एकीकृत करने के लिए Google का एक सरलीकृत API है, जिसे 2018 में पेश किया गया था। CAF लीगेसी Cast SDK (CastCompanionLibrary) को बदलता है और तैयार UI घटक प्रदान करता है: Cast Button (डिवाइस डिस्कवरी आइकन), Mini Controller (स्क्रीन के नीचे मिनी प्लेयर) और Expanded Controller (फुल-स्क्रीन रिमोट)। CAF Android, iOS, Flutter और React Native का समर्थन करता है।
CAF का उपयोग करने के लिए, डेवलपर को अपना स्वयं का Receiver लिखने की आवश्यकता नहीं है — Google एक Default Receiver प्रदान करता है जो स्वचालित रूप से सामग्री लोड और चलाता है। Default Receiver HLS, DASH, MP4, WebM, MP3, इमेज और उपशीर्षक का समर्थन करता है। Receiver कॉन्फ़िगरेशन Google Cast Console में किया जाता है — बस सामग्री URL निर्दिष्ट करें, और Default Receiver बाकी सब संभाल लेगा। कस्टम Receiver केवल गैर-मानक परिदृश्यों के लिए आवश्यक है: कस्टम TV UI, DRM समर्थन, प्लेबैक कतारें।
// CAF Receiver विकल्प कॉन्फ़िगर करना
val receiverOptions = CastReceiverOptions.Builder(context)
.setReceiverApplicationId(
CastMediaControlIntent.DEFAULT_MEDIA_RECEIVER_APPLICATION_ID
)
.build()
// Cast Context कनेक्ट करना
val castContext = CastContext.getSharedInstance(context)
castContext.setReceiverOptions(receiverOptions)CAF स्वचालित रूप से कनेक्शन जीवनचक्र को संभालता है: Cast Button के माध्यम से डिवाइस डिस्कवरी, कनेक्शन स्थापना, मीडिया लोडिंग, अस्थायी कनेक्शन हानि पर पॉज़ और पुनः कनेक्शन। CAF प्लेलिस्ट के लिए प्लेबैक कतारों (media queues) और लॉक स्क्रीन और नोटिफिकेशन सेंटर (Android) पर Cast बटन का भी समर्थन करता है। न्यूनतम संस्करण: Android 5.0 (API 21), iOS 14+.
Google Cast मुख्य स्ट्रीमिंग प्रारूपों का समर्थन करता है: Apple से HLS (HTTP Live Streaming), DASH (Dynamic Adaptive Streaming over HTTP) और प्रोग्रेसिव MP4। Chromecast इंटरनेट कनेक्शन की गति (एडेप्टिव बिटरेट) के आधार पर स्वचालित रूप से इष्टतम वीडियो गुणवत्ता का चयन करता है। HLS और DASH के लिए, Chromecast प्लेबैक को रोके बिना रीयल टाइम में स्ट्रीम स्विच करता है। HLS Chromecast फ़र्मवेयर संस्करण 1.28+ से समर्थित है।
Google Cast के माध्यम से स्ट्रीमिंग के लिए, सामग्री एक सार्वजनिक URL (HTTP/HTTPS) पर उपलब्ध होनी चाहिए — Chromecast फ़ोन से नहीं, बल्कि सीधे सर्वर से सामग्री लोड करता है। DRM (डिजिटल राइट्स मैनेजमेंट) Widevine के माध्यम से समर्थित है: Chromecast Widevine L3 (सभी डिवाइस) और L1 (कुछ मॉडल, जैसे Chromecast with Google TV) का समर्थन करता है। DRM के साथ काम करने के लिए Shaka Player या ExoPlayer एकीकरण के साथ कस्टम Receiver की आवश्यकता होती है। Google के अनुसार, Chromecast with Google TV Netflix, Disney+ और अन्य सेवाओं के लिए Widevine L1 के साथ 4K HDR का समर्थन करता है।
// CAF के माध्यम से Chromecast पर मीडिया लोड करना
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)उपशीर्षक प्रारूप: Chromecast TTML, WebVTT और CEA-608 का समर्थन करता है। उपशीर्षक MediaTrack के माध्यम से MediaInfo के भाग के रूप में पारित किए जाते हैं। Chromecast Cast Queue API के माध्यम से इमेज के बीच स्वाइप करने की क्षमता के साथ अतुल्यकालिक इमेज लोडिंग (फ़ोटो) का भी समर्थन करता है। ऑडियो के लिए, Chromecast MP3, AAC, FLAC, WAV और OGG का समर्थन करता है। Google Cast के माध्यम से ऑडियो स्ट्रीमिंग Chromecast Audio और Cast स्पीकर पर समर्थित है।
Cast Button Google Cast SDK का एक प्रमुख UI घटक है जो Cast आइकन प्रदर्शित करता है और स्वचालित रूप से स्थिति बदलता है: निष्क्रिय (कोई डिवाइस नहीं), उपलब्ध (डिवाइस मिले), कनेक्टेड (सक्रिय सत्र)। क्लिक करने पर, Cast Button एक डिवाइस चयन डायलॉग खोलता है। यह घटक MediaRouteActionProvider (Android) या GCKUICastButton (iOS) के माध्यम से उपलब्ध है। Cast Button केवल तभी दिखाई देना चाहिए जब नेटवर्क पर Cast डिवाइस उपलब्ध हों — CAF स्वचालित रूप से बटन छिपा देता है यदि कोई डिवाइस नहीं मिलता है।
Mini Controller स्क्रीन के नीचे एक पैनल है जो सामग्री का शीर्षक, कवर आर्ट, प्ले/पॉज़ बटन और सत्र बंद करने का बटन दिखाता है। Mini Controller स्वचालित रूप से प्रकट होता है जब Cast सत्र सक्रिय होता है और उपयोगकर्ता प्लेबैक से संबंधित नहीं होने वाली स्क्रीन पर होता है। CAF Android के लिए एक तैयार MiniControllerFragment प्रदान करता है जो लेआउट में एम्बेड किया जाता है। डिफ़ॉल्ट रूप से, Mini Controller स्क्रीन के नीचे स्थित होता है लेकिन इसे कहीं भी रखा जा सकता है।
// स्टाइल के माध्यम से Mini Controller को अनुकूलित करना
// styles.xml
// <style name="CastMiniControllerStyle"
// parent="Theme.GoogleCast">
// <item name="castMiniBackgroundColor">#FF0000</item>
// <item name="castShowImageThumbnail">true</item>
// </style>
// Mini Controller का प्रोग्रामेटिक नियंत्रण
val miniController = findViewById<MiniControllerFragment>(
R.id.miniController
)
miniController.setVisibility(
isCastSessionActive()
)Expanded Controller टीवी पर एक फुल-स्क्रीन प्लेबैक नियंत्रण है, जो Mini Controller पर क्लिक करके खोला जाता है। Expanded Controller दिखाता है: शीर्षक, विवरण, कवर आर्ट, सीक क्षमता वाला प्रोग्रेस बार, प्ले/पॉज़/स्टॉप बटन, ट्रैक सूची (यदि कतार में है), वॉल्यूम नियंत्रण और डिस्कनेक्ट बटन। CAF एक तैयार ExpandedControllerActivity प्रदान करता है जो स्वचालित रूप से लॉन्च होती है। यदि कस्टम UI की आवश्यकता है, तो बेस ExpandedControllerActivity का विस्तार करें।
कस्टम Receiver एक वेब एप्लिकेशन (HTML5 + CSS + JavaScript) है जो Cast सत्र शुरू होने पर Chromecast पर लोड होता है। Default Receiver के विपरीत, कस्टम Receiver टीवी पर सामग्री की उपस्थिति पर पूर्ण नियंत्रण की अनुमति देता है: पृष्ठभूमि चित्र, एनिमेशन, कस्टम नियंत्रण, ब्रांड लोगो। कस्टम Receiver Google Cast Console में पंजीकृत होता है और एक अद्वितीय एप्लिकेशन ID प्राप्त करता है।
कस्टम Receiver का विकास Cast Receiver Framework (CAF Receiver) का उपयोग करके JavaScript में किया जाता है। CAF Receiver Sender से आने वाले संदेशों को संभालने, मीडिया स्ट्रीम प्रबंधित करने, कतारों को संभालने और DRM के साथ एकीकृत करने के लिए API प्रदान करता है। Receiver Chromecast (WebKit) पर एक पृथक ब्राउज़र वातावरण में सीमित DOM एक्सेस के साथ चलता है। न्यूनतम आवश्यकताएँ: HTML5, CSS3, JavaScript ES6। Receiver एक HTTPS सर्वर पर होस्ट किया जाता है।
// CAF पर बुनियादी कस्टम Receiver
const context = cast.framework.CastReceiverContext.getInstance()
const playerManager = context.getPlayerManager()
playerManager.setMessageInterceptor(
cast.framework.messages.MessageType.LOAD,
(loadData) => {
// मीडिया लोडिंग की कस्टम हैंडलिंग
console.log("Loading media:", loadData.media.contentId)
return loadData
}
)
context.start()
// Sender से कस्टम संदेशों की हैंडलिंग
context.addCustomMessageListener("urn:x-cast:custom", (event) => {
console.log("Custom data:", event.data)
})कस्टम Receiver को Cast Developer Console के माध्यम से एक वास्तविक डिवाइस पर परीक्षण किया जाना चाहिए। Google मानक परिदृश्यों के लिए Default Receiver का उपयोग करने की अनुशंसा करता है और कस्टम Receiver केवल तभी जब कस्टम TV UI, DRM समर्थन (Widevine) या कस्टम लॉजिक वाली प्लेबैक कतारों की आवश्यकता हो। Receiver के पास Sender पेज DOM तक पहुँच नहीं है और वह Sender से भेजे गए JavaScript को निष्पादित नहीं कर सकता (सुरक्षा)।
CAF का उपयोग करके Android एप्लिकेशन में Google Cast को एकीकृत करने का एक पूर्ण उदाहरण। ऐप वीडियो चलाता है और Cast Button के माध्यमसे इसे Chromecast पर स्ट्रीम करने की अनुमति देता है। कोड में CastOptions कॉन्फ़िगरेशन, CastContext आरंभीकरण, कनेक्शन हैंडलिंग और 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)
}
}Google Cast के परीक्षण के लिए, Chrome DevTools (Cast टैब) या भौतिक Chromecast के माध्यम से वर्चुअल Cast डिवाइस का उपयोग करें। Google एक परीक्षण एप्लिकेशन ID प्रदान करता है — CC1AD845 (Default Media Receiver)। प्रकाशन से पहले, Google Cast Console में अपना एप्लिकेशन पंजीकृत करें और प्रोडक्शन एप्लिकेशन ID प्राप्त करें। Cast SDK के लिए Google Play Services 21.0.0+ और Android 5.0+ आवश्यक है।
पहली सामान्य समस्या — Cast Button दिखाई नहीं देता। कारण: डिवाइस एक ही Wi-Fi नेटवर्क पर नहीं हैं, Chromecast DIAL (पुराना फ़र्मवेयर) का समर्थन नहीं करता, या फ़ोन पर Wi-Fi डिस्कवरी अक्षम है। समाधान: जाँचें कि फ़ोन और Chromecast एक ही नेटवर्क (2.4 GHz या 5 GHz) से जुड़े हैं। Google Cast अतिथि Wi-Fi नेटवर्क, VPN या क्लाइंट आइसोलेशन वाले कॉर्पोरेट नेटवर्क पर काम नहीं करता। भौतिक डिवाइस के बिना परीक्षण के लिए Cast Connect का उपयोग करें।
दूसरी समस्या — प्लेबैक के दौरान कनेक्शन टूट जाता है। Chromecast कमज़ोर सिग्नल, चैनल भीड़ या माइक्रोवेव (2.4 GHz) से हस्तक्षेप के कारण Wi-Fi कनेक्शन खो सकता है। समाधान: Chromecast को राउटर के करीब रखें, 5 GHz (यदि समर्थित हो) का उपयोग करें, Chromecast ट्रैफ़िक के लिए QoS कॉन्फ़िगर करें। एप्लिकेशन में, IDLE स्थिति और त्रुटि कारण के साथ onRemoteMediaPlayerStatusUpdated कॉलबैक को संभालें — कनेक्शन हानि पर, एक सूचना दिखाएँ और पुनः कनेक्ट करने का सुझाव दें।
तीसरी समस्या — सामग्री Chromecast पर नहीं चलती। जाँचें: सामग्री URL इंटरनेट से सुलभ है (Chromecast फ़ोन के माध्यम से नहीं, बल्कि सीधे सामग्री लोड करता है), प्रारूप Chromecast द्वारा समर्थित है, और कोई CORS अवरोधन (.m3u8 और .mpd के लिए) नहीं है। यदि Default Receiver का उपयोग कर रहे हैं, तो सुनिश्चित करें कि एप्लिकेशन ID सही है। कस्टम Receiver के लिए, जाँचें कि एप्लिकेशन HTTPS पर होस्ट किया गया है। डिबगिंग के लिए Cast SDK Logger का उपयोग करें: CastContext.getSharedInstance().setCastLogger(...)।
अक्सर पूछे जाने वाले प्रश्न
Google Cast 'URL भेजें' मॉडल का उपयोग करता है — फ़ोन Chromecast को एक सामग्री लिंक भेजता है, जो सीधे लोड होता है। AirPlay (Apple) Apple पारिस्थितिकी तंत्र के लिए एक समान प्रोटोकॉल है। Miracast प्रत्यक्ष स्क्रीन मिररिंग है जो फ़ोन पर बोझ डालता है। Cast फ़ोन की बैटरी 80% कम खपत करता है और प्लेबैक को रोके बिना ऐप को छोटा करने की अनुमति देता है।
Google Cast न केवल Chromecast पर बल्कि बिल्ट-इन Google TV, Android TV वाले टीवी और Cast समर्थन वाले ऑडियो सिस्टम (Nest Audio, Sonos) पर भी काम करता है। डेवलपमेंट और परीक्षण के लिए, आप Chrome DevTools के माध्यम से वर्चुअल Cast डिवाइस का उपयोग कर सकते हैं। ऐप में Cast एकीकरण के लिए, भौतिक डिवाइस आवश्यक नहीं है — एमुलेशन के लिए Cast Connect का उपयोग करें।
हाँ, Chromecast with Google TV (2020) और नए मॉडल Dolby Vision, HDR10 और HDR10+ के साथ 4K HDR का समर्थन करते हैं। मानक Chromecast (तीसरी पीढ़ी) 1080p 60fps का समर्थन करता है। Chromecast Ultra — 4K HDR। 4K स्ट्रीमिंग के लिए, कम से कम 25 Mbps की इंटरनेट स्पीड और DRM सामग्री (Netflix, Disney+) के लिए Widevine L1 समर्थन आवश्यक है।
सत्र रोकने के लिए, CastSession.endSession(boolean stopCasting) को true के साथ कॉल करें यदि आपको टीवी पर प्लेबैक रोकना है, या false यदि आप केवल फ़ोन को डिस्कनेक्ट करना चाहते हैं। आप RemoteMediaClient पर stop() मेथड का भी उपयोग कर सकते हैं। उपयोगकर्ता Cast Button या Mini Controller के माध्यम से डिस्कनेक्ट बटन दबाकर भी सत्र रोक सकता है।
हाँ, कस्टम संदेशों (custom messages) के माध्यम से। Sender एक namespace (जैसे, urn:x-cast:custom.namespace) के माध्यम से एक मनमाना JSON ऑब्जेक्ट के साथ संदेश भेजता है। Receiver addCustomMessageListener के माध्यम से संदेश को संसाधित करता है। कस्टम संदेश केवल कस्टम Receiver के साथ समर्थित हैं — Default Receiver कस्टम namespaces को संभाल नहीं करता। अधिकतम संदेश आकार 64 KB है।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें