इस गाइड में, Cast रिसीवर v2 ऐप्लिकेशन को नए वेब पर माइग्रेट करने का तरीका बताया गया है पाने वाला ऐप्लिकेशन.
नए Cast ऐप्लिकेशन फ़्रेमवर्क (CAF) SDK टूल को वेब रिसीवर v3 के नाम से भी जाना जाता है. रिसीवर v2 SDK टूल का एक बड़ा अपग्रेड. वेब रिसीवर SDK टूल मीडिया वेब रिसीवर ऐप्लिकेशन डेवलप करने के लिए आसान, स्ट्रीमलाइन किया गया SDK टूल.
वेब रिसीवर ऐसा एपीआई उपलब्ध कराता है जो सीएएफ़ भेजने वाले नए वर्शन के साथ ज़्यादा मेल खाता है एपीआई. यह एक प्लेयर (MPL और Shaka) और फ़ुल इंटिग्रेशन की सुविधा देता है कास्ट मीडिया और Google Assistant को लागू करने और उसमें सहायता करने की सुविधा बोले गए निर्देश. CAF SDK टूल की मदद से, एक डिफ़ॉल्ट यूज़र इंटरफ़ेस (यूआई) भी उपलब्ध कराया जाता है. इस यूज़र इंटरफ़ेस को आसानी से स्टाइल किया जा सकता है और यूज़र इंटरफ़ेस (यूआई) को आसानी से लागू करने के लिए, डेटा बाइंडिंग सेवा का इस्तेमाल करना.
माइग्रेट क्यों करें?
रिसीवर v2 ऐप्लिकेशन को वेब रिसीवर पर माइग्रेट करने से, कई कोड अगर खिलाड़ी को हटाया जा सकता है, तो वह लिखने पर ध्यान दे पाएगा ऐप्लिकेशन-विशिष्ट व्यवसाय तर्क.
CAF, MPL और Shaka प्लेयर को आसानी से इंटिग्रेट करता है, ताकि वे ज़्यादा से ज़्यादा डिवाइसों का इस्तेमाल कर सकें इसमें एचटीटीपी लाइव स्ट्रीमिंग (टीएस और CMAF), MPEG-DASH, और स्मूद जैसी अन्य तरह का कॉन्टेंट शामिल है Media Element सोर्स प्रॉपर्टी (MP3, MP4, आइसकास्ट वगैरह...). पूरी सूची के लिए Google Cast के लिए काम करने वाला मीडिया देखें. फ़िलहाल, सीएएफ़ में उपयोगकर्ता से मिले प्लेयर की सुविधा उपलब्ध नहीं है.
सीएएफ़ पर माइग्रेट करने से, Google Assistant के साथ वॉइस कंट्रोल की सुविधा भी जुड़ जाएगी. Google Assistant को बोलकर दिए गए नए निर्देश अपने-आप तब काम करेंगे, जब सीएएफ़ का इस्तेमाल करके
मीडिया के नए कमांड देने के अलावा, जैसे कि "भाषा के हिसाब से ट्रैक बदलें” और "वीडियो चलाने की दर बदलें”— सीएएफ़ के साथ, सूची बनाने की बेहतर सुविधा और पहले से मौजूद विज्ञापन सहायता और बेहतर लाइव सहायता.
क्या बदलाव हुए हैं?
वेब प्राप्तकर्ता API उन परंपराओं का पालन करने का प्रयास करता है, जो इनके लिए सीएएफ़ भेजने वाले Android और iOS, और v2 से काफ़ी अलग है.
वेब रिसीवर एक नए नेमस्पेस का इस्तेमाल कर रहा है
cast.framework
इस्तेमाल किए जा रहे सभी एपीआई के लिए, cast.receiver
नेमस्पेस के बजाय अन्य एपीआई का इस्तेमाल करता है. कई
वर्शन 2 में इस्तेमाल किए गए डेटा ऑब्जेक्ट, सीएएफ़ में एक जैसे होते हैं. हालांकि, ये ऑब्जेक्ट
यह
cast.framework.messages
नेमस्पेस (वे ज़्यादातर cast.receiver.media
से कम थे).
नीचे दी गई v2 सेवाओं को सीएएफ़ की सेवाओं से बदल दिया जाता है:
CastReceiverManager
क्लास को इससे बदला गयाCastReceiverContext
यह एक ऐसा सिंगलटन है जो कास्ट सेशन, सेंडर, मैसेज, और ग्लोबल सिस्टम इवेंट दिखेंगे. कॉन्टेंट बनानेCastReceiverOptions
का इस्तेमाल ऐप्लिकेशन के ग्लोबल विकल्प उपलब्ध कराने के लिए किया जा सकता है. जैसे, सूची, रिसीवर वर्शन, प्लेबैक कॉन्फ़िगरेशन वगैरह) से मिलता-जुलता है.MediaManager
क्लास को इससे बदला गयाPlayerManager
जोCastReceiverContext
सिंगलटन है. यह मीडिया सेशन, मीडिया रिक्वेस्ट, Google Assistant की ओर से बोलकर किए गए अनुरोध (वर्शन 2 मेंCommandAndControlManager
), और मीडिया इवेंट ट्रिगर करता है. खिलाड़ियों के लिए कॉन्फ़िगरेशन (एमपीएल मेंcast.player.api.Host
) देने वाले ने दिया हैPlaybackConfig
, जो दुनिया भर में या हर लोड के अनुरोध के लिए दी जा सकती है.
PlayerManager
में नई सब-मैनेजर क्लास भी दिखती हैं:
TextTracksManager
- मीडिया टेक्स्ट ट्रैक मैनेज करें.AudioTracksManager
- ऑडियो ट्रैक मैनेज करें.QueueManager
- सूची को मैनेज करें.BreakManager
- विज्ञापनों को मैनेज करें.
const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
// Set global options.
const options = new cast.framework.CastReceiverOptions();
options.versionCode = DEVELOPERS_APP_VERSION;
context.start(options);
पाने वाले का बिज़नेस लॉजिक
रिसीवर v2 एक्सपोज़्ड इवेंट हैंडलर (जैसे कि CastReceiverManager.onReady
या
MediaManager.onLoad
) जोड़ें. सीएएफ़ में, इवेंट हैंडलर ये हैं
इवेंट लिसनर से बदला गया
(CastReceiverContext.addEventListener
)
और मैसेज इंटरसेप्टर
(PlayerManager.setMessageInterceptor
).
वेब रिसीवर में किसी इवेंट के लिए, एक से ज़्यादा इवेंट लिसनर हो सकते हैं
इवेंट पर कोई असर नहीं डालता) और हर मैसेज के लिए एक इंटरसेप्टर होता है. इंटरसेप्टर
आपके अनुरोध को अपडेट कर सकता है या उस पर कार्रवाई कर सकता है (बदले गए अनुरोध को दिखाता है, तो
मैसेज या गड़बड़ी का मैसेज) हो सकता है. यह एक ऐसा एसिंक हैंडलर हो सकता है जो प्रॉमिस दिखाता है.
आम तौर पर, लोड रिक्वेस्ट इंटरसेप्टर की मदद से ऐप्लिकेशन-विशिष्ट लॉजिक. भेजने वाले के अनुरोध को लोड करने के लिए, लोड करें इंटरसेप्टर कॉन्टेंट आईडी को कॉन्टेंट यूआरएल में बदल सकता है. लोड इंटरसेप्टर यह है अगर कोई साफ़ इंटरसेप्टर नहीं है, तो इसे प्रीलोड और प्रीकैश करने के अनुरोधों के लिए भी कॉल किया जा सकता है को प्रीलोड या प्रीकैश किया गया हो.
playerManager.setMessageInterceptor(
cast.framework.messages.MessageType.LOAD,
request => {
// Resolve entity to content id
if (request.media.entity && !request.media.contentId) {
return getMediaByEntity(request.media.entity).then(
media => {
request.media.contentId = media.url;
return request;
});
}
return request;
});
v2 को पसंद के मुताबिक बनाया गया मीडिया स्टेटस हैंडलर भी मैसेज से बदल दिया गया है
इंटरसेप्टर का इस्तेमाल करें. वेब रिसीवर ऐप्लिकेशन जो नहीं चाहते हैं
मीडिया स्टेटस में मीडिया का यूआरएल सार्वजनिक करने से, यूआरएल रिज़ॉल्वर मिल सकता है
(PlayerManager.setMediaUrlResolver
),
जो लोड करने के अनुरोध के लिए मीडिया का यूआरएल देती है. इस यूआरएल का इस्तेमाल सीएएफ़ करता है
और मीडिया के स्टेटस में इसकी जानकारी नहीं दी जाती.
playerManager.setMessageInterceptor(
cast.framework.messages.MessageType.MEDIA_STATUS,
status => {
// Disable seek.
status.supportedMediaCommands &=
~cast.framework.messages.Command.SEEK
return status;
});
इवेंट
वेब रिसीवर, दोनों से इवेंट का एक बड़ा सेट उपलब्ध कराता है
CastReceiverContext
और
PlayerManager
.
वेब रिसीवर ऐप्लिकेशन में किसी भी इवेंट को एक से ज़्यादा लोग सुन सकते हैं और
एक लिसनर को एक से ज़्यादा इवेंट में सुनने की सुविधा भी मिलती है. (देखें
cast.framework.events.category
का इस्तेमाल किया जाता है.)
इवेंट में, उपयोगकर्ता के किसी भी अनुरोध, वीडियो चलाने की प्रोग्रेस, प्लेयर की प्रोसेसिंग वगैरह को शामिल किया जाता है लो-लेवल मीडिया एलिमेंट इवेंट (सीएएफ़, मीडिया एलिमेंट को खुद नहीं दिखाता).
वेब रिसीवर ऐप्लिकेशन इवेंट सुनने वालों को जोड़ सकता है, ताकि उन पर कार्रवाई की जा सके. उदाहरण के लिए, टेक्स्ट जोड़ना ट्रैक डेफ़िनिशन ट्रैक करता है, तो लोड पूरा होने पर उसे ट्रैक करता है या Analytics के लिए.
// Log all media commands
playerManager.addEventListener(
cast.framework.events.category.REQUEST,
event => logEvent(event.type));
पसंद के मुताबिक मैसेज बस
सीएएफ़, एपीआई में मैसेज बस नहीं दिखाता, बल्कि यह
CastReceiverContext.addCustomMessageListener
किसी खास नेमस्पेस (हर नेमस्पेस के लिए सिर्फ़ एक) के लिए मैसेज लिसनर जोड़ने के लिए और
CastReceiverContext.sendCustomMessage
का इस्तेमाल करें. सभी नेमस्पेस का एलान इससे पहले किया जाना चाहिए
वेब रिसीवर को शुरू करना (यानी, कॉल करने से पहले)
CastReceiverContext.start
).
नेमस्पेस का एलान इसके ज़रिए किया जा सकता है
अपने ऑडियंस के लिए मैसेज लिसनर जोड़ सकते हैं या
CastReceiverOptions.customNamespaces
.
const options = new cast.framework.CastReceiverOptions();
options.customNamespaces = {
CUSTOM_NS: cast.framework.system.MessageType.JSON
};
context.start(options);
context.sendCustomMessage(CUSTOM_NS, {
type: 'status'
message: 'Playing'
});
डिफ़ॉल्ट यूज़र इंटरफ़ेस (यूआई)
सीएएफ़ एक डिफ़ॉल्ट वेब रिसीवर यूज़र इंटरफ़ेस (यूआई) उपलब्ध कराता है, जो वीडियो चलाने का प्रोग्रेस बार दिखाता है और
मीडिया मेटाडेटा शामिल है. डिफ़ॉल्ट यूज़र इंटरफ़ेस (यूआई) को कस्टम एलिमेंट के तौर पर दिया गया है
<cast-media-player>
जिन्हें सीएसएस की तरह स्टाइल किया जा सकता है.
<style>
cast-media-player { --splash-image: url("splash.png"); }
</style>
<cast-media-player></cast-media-player>
ज़्यादा कस्टमाइज़ेशन के लिए, Web रिसीवर ऐप्लिकेशन अपना यूज़र इंटरफ़ेस (यूआई) लागू कर सकता है. कॉन्टेंट बनाने
वेब रिसीवर
cast.framework.ui.PlayerDataBinder
क्लास का इस्तेमाल करें.