Android पर Chrome के लिए Google Cast

मान लें कि आप अपने फ़ोन से एक वेब ऐप्लिकेशन का इस्तेमाल करके, एक स्लाइड डेक को कॉन्फ़्रेंस प्रोजेक्टर में प्रज़ेंट कर सकते हैं — या इमेज शेयर कर सकते हैं, गेम खेल सकते हैं या टीवी की स्क्रीन पर वीडियो देख सकते हैं. इसके लिए, मोबाइल वेब ऐप्लिकेशन को कंट्रोलर के तौर पर इस्तेमाल कर सकते हैं.

Android पर Chrome का नया वर्शन रिलीज़ होने से, साइटें Cast Web SDK का इस्तेमाल करके, Google Cast डिवाइसों पर प्रज़ेंट कर सकती हैं. इसका मतलब है कि अब आप Android या iOS (या एक्सटेंशन के साथ डेस्कटॉप पर) वेब SDK के साथ वेब SDK का इस्तेमाल करके कास्ट भेजने वाले ऐप्लिकेशन बना सकते हैं. साथ ही, Android और iOS के लिए मूल कास्ट SDK टूल का इस्तेमाल करने वाले ऐप्लिकेशन बना सकते हैं. (पहले, एक Google Cast भेजने वाले ऐप्लिकेशन को Google Cast Chrome एक्सटेंशन की ज़रूरत होती थी. इसलिए, Android पर सिर्फ़ खास ऐप्लिकेशन से कास्ट डिवाइस से इंटरैक्ट करना संभव था.)

नीचे वेब SDK टूल का इस्तेमाल करके कास्ट भेजने वाला ऐप्लिकेशन बनाने के बारे में कम शब्दों में जानकारी दी गई है. ज़्यादा जानकारी के लिए, Chrome सेंडर ऐप्लिकेशन डेवलपमेंट गाइड देखें.

कास्ट करने की सुविधा का इस्तेमाल करने वाले सभी पेजों पर, कास्ट लाइब्रेरी को शामिल करना ज़रूरी है:

<script
  type="text/javascript"
  src="https://www.gstatic.com/cv/js/sender/v1/cast_sender.js"
></script>

एपीआई की उपलब्धता को मैनेज करने और कास्ट सेशन शुरू करने के लिए, एक कॉलबैक जोड़ें (एपीआई लोड होने से पहले, हैंडलर जोड़ना न भूलें!):

window['__onGCastApiAvailable'] = function (isLoaded, error) {
  if (isLoaded) {
    initializeCastApi();
  } else {
    console.log(error);
  }
};

function initializeCastApi() {
  var sessionRequest = new chrome.cast.SessionRequest(applicationID);
  var apiConfig = new chrome.cast.ApiConfig(
    sessionRequest,
    sessionListener,
    receiverListener
  );
  chrome.cast.initialize(apiConfig, onInitSuccess, onError);
}

अगर डिफ़ॉल्ट स्टाइल मीडिया रिसीवर ऐप्लिकेशन इस्तेमाल किया जा रहा है, न कि खुद का रजिस्टर किया गया कस्टम रिसीवर ऐप्लिकेशन, तो इस तरह से SessionRequest बनाया जा सकता है:

var sessionRequest = new chrome.cast.SessionRequest(chrome.cast.media.
  DEFAULT_MEDIA_RECEIVER_APP_ID);

एक या उससे ज़्यादा डिवाइस उपलब्ध होने पर, ऊपर दिया गया receiverListener कॉलबैक एक्ज़ीक्यूट होता है:

function receiverListener(e) {
  if (e === chrome.cast.ReceiverAvailability.AVAILABLE) {
    // update UI
  }
}

जब आपका उपयोगकर्ता उपयोगकर्ता अनुभव से जुड़े दिशा-निर्देशों के मुताबिक, 'कास्ट करें' आइकॉन पर क्लिक करता है, तो कास्ट सेशन लॉन्च करें:

chrome.cast.requestSession(onRequestSessionSuccess,
    onRequestSessionError);

function onRequestSessionSuccess(e) {
  session = e;
}

उपयोगकर्ता को डिवाइस पिकर दिखेगा:

कास्ट डिवाइस चुनने का डायलॉग बॉक्स.

रास्ते की जानकारी वाला डायलॉग तब दिखाया जाता है, जब पेज पहले से कनेक्ट होता है और requestSession() को कॉल करता है:

रास्ते की जानकारी का डायलॉग बॉक्स कास्ट करें.

कास्ट सेशन शुरू करने के बाद, चुने गए कास्ट डिवाइस पर मीडिया लोड किया जा सकता है और मीडिया प्लेबैक इवेंट के लिए, सुनने वाला व्यक्ति जोड़ा जा सकता है:

var mediaInfo = new chrome.cast.media.MediaInfo(mediaURL);
var request = new chrome.cast.media.LoadRequest(mediaInfo);
session.loadMedia(
  request,
  onMediaDiscovered.bind(this, 'loadMedia'),
  onMediaError
);

function onMediaDiscovered(how, media) {
  currentMedia = media;
  media.addUpdateListener(onMediaStatusUpdate);
}

यहां currentMedia वैरिएबल एक chrome.cast.media.Media ऑब्जेक्ट है, जिसका इस्तेमाल प्लेबैक कंट्रोल करने के लिए किया जा सकता है:

function playMedia() {
  currentMedia.play(null, success, error);
}


    // ...

मीडिया चलने पर, चलाने/रोकने की सूचना दिखती है:

चलाने/रोकने की सूचना कास्ट करें.

अगर कोई मीडिया नहीं चल रहा है, तो सूचना में कास्ट करना रोकने के लिए सिर्फ़ 'रोकें' बटन दिखेगा:

कास्ट रोकने की सूचना.

chrome.cast.ApiConfig() के लिए sessionListener कॉलबैक (ऊपर देखें) से आपका ऐप्लिकेशन, मौजूदा कास्ट सेशन में शामिल हो सकता है या उसे मैनेज कर सकता है:

function sessionListener(e) {
  session = e;
  if (session.media.length !== 0) {
    onMediaDiscovered('onRequestSessionSuccess', session.media[0]);
  }
}

अगर Android पर Chrome आपकी वेबसाइट से मीडिया कास्ट करने की अनुमति देता है, लेकिन आप इस सुविधा को बंद करना चाहते हैं, ताकि डिफ़ॉल्ट कास्ट करने वाला यूज़र इंटरफ़ेस (यूआई) आपके काम में कोई रुकावट न डाले, तो Chrome 49 और इसके बाद के वर्शन में मौजूद disableRemotePlayback एट्रिब्यूट का इस्तेमाल करें:

<video disableRemotePlayback src="..."></video>

भेजने वाले और पाने वाले वैकल्पिक डिवाइस

Cast Web SDK की गाइड में, सैंपल ऐप्लिकेशन के लिंक और कास्ट की सुविधाओं के बारे में जानकारी दी गई है. जैसे, सेशन मैनेजमेंट, टेक्स्ट ट्रैक (सबटाइटल के लिए) और स्टेटस के अपडेट.

फ़िलहाल, Cast Web SDK टूल का इस्तेमाल करके, सिर्फ़ कास्ट करने वाले ऐप्लिकेशन में प्रज़ेंट किया जा सकता है. हालांकि, इस पर काम चल रहा है कि प्रज़ेंटेशन एपीआई को, Cast SDK के बिना (डेस्कटॉप और Android पर) इस्तेमाल करके, कास्ट डिवाइस पर किसी भी वेब पेज को Google से रजिस्टर किए बिना प्रज़ेंट किया जा सके. सिर्फ़ Chrome कास्ट किए जाने वाले SDK टूल से अलग, स्टैंडर्ड एपीआई का इस्तेमाल करने से पेज, एपीआई का इस्तेमाल करने वाले अन्य उपयोगकर्ता एजेंट और डिवाइसों के साथ काम करता है.

प्रज़ेंटेशन API और रिमोट प्लेबैक एपीआई की सुविधा, सेकंड स्क्रीन वर्किंग ग्रुप के तहत काम करती है. इसकी मदद से, वेब पेजों पर वेब कॉन्टेंट दिखाने के लिए, दूसरी स्क्रीन का इस्तेमाल किया जा सकता है.

ये एपीआई, 'कंट्रोल' डिवाइस और 'डिसप्ले' डिवाइस के साथ कई तरह के ऐप्लिकेशन चालू करने के लिए, ऑनलाइन आने वाले अलग-अलग तरह के डिवाइसों का फ़ायदा लेते हैं. इनमें, कनेक्ट किए गए ऐसे डिसप्ले भी शामिल हैं जो उपयोगकर्ता एजेंट को चलाते हैं.

हम आपको लागू करने के बारे में इसकी जानकारी देते रहेंगे.

इस बीच, अगर आपको कोई गड़बड़ी मिलती है या आपको सुविधा का अनुरोध करना है, तो कृपया हमें बताएं: crbug.com/new.

ज़्यादा जानें