मीडिया ट्रैक, कोई ऑडियो या वीडियो स्ट्रीम ऑब्जेक्ट हो सकता है. इसके अलावा, यह कोई टेक्स्ट ऑब्जेक्ट (सबटाइटल या कैप्शन) भी हो सकता है.
GCKMediaTrack
ऑब्जेक्ट किसी ट्रैक को दिखाता है. इसमें यूनीक नंबर वाला आइडेंटिफ़ायर और Content ID और टाइटल जैसे अन्य एट्रिब्यूट शामिल होते हैं. GCKMediaTrack
इंस्टेंस इस तरह बनाया जा सकता है:
let captionsTrack = GCKMediaTrack.init(identifier: 1, contentIdentifier: "https://some-url/caption_en.vtt", contentType: "text/vtt", type: GCKMediaTrackType.text, textSubtype: GCKMediaTextTrackSubtype.captions, name: "English Captions", languageCode: "en", customData: nil)
GCKMediaTrack *captionsTrack = [[GCKMediaTrack alloc] initWithIdentifier:1 contentIdentifier:@"https://some-url/caption_en.vtt" contentType:@"text/vtt" type:GCKMediaTrackTypeText textSubtype:GCKMediaTextTrackSubtypeCaptions name:@"English Captions" languageCode:@"en" customData:nil];
किसी मीडिया आइटम में एक से ज़्यादा ट्रैक हो सकते हैं. उदाहरण के लिए, उसमें कई सबटाइटल (हर एक भाषा के लिए) या कई वैकल्पिक ऑडियो स्ट्रीम (अलग-अलग भाषाओं के लिए) हो सकती हैं.
GCKMediaInformation
वह क्लास है जो किसी मीडिया आइटम को दिखाती है. किसी मीडिया आइटम के साथ
GCKMediaTrack
ऑब्जेक्ट के कलेक्शन को जोड़ने के लिए, आपके ऐप्लिकेशन को अपनी
mediaTracks
प्रॉपर्टी अपडेट करनी होगी. पाने वाले पर मीडिया लोड करने से पहले, आपके ऐप्लिकेशन को इसे जोड़ना होगा, जैसा कि इस कोड में दिखाया गया है:
let tracks = [captionsTrack] let url = URL.init(string: "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4") guard let mediaURL = url else { print("invalid mediaURL") return } let mediaInfoBuilder = GCKMediaInformationBuilder.init(contentURL: mediaURL) mediaInfoBuilder.streamType = GCKMediaStreamType.none; mediaInfoBuilder.contentType = "video/mp4" mediaInfoBuilder.metadata = metadata; mediaInfoBuilder.mediaTracks = tracks; mediaInformation = mediaInfoBuilder.build()
NSArray *tracks = @[captionsTrack]; GCKMediaInformationBuilder *mediaInfoBuilder = [[GCKMediaInformationBuilder alloc] initWithContentURL: [NSURL URLWithString:@"https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4"]]; mediaInfoBuilder.streamType = GCKMediaStreamTypeNone; mediaInfoBuilder.contentType = @"video/mp4"; mediaInfoBuilder.metadata = metadata; mediaInfoBuilder.mediaTracks = tracks; self.mediaInformation = [mediaInfoBuilder build];
-[setActiveTrackIDs:]
को GCKRemoteMediaClient
पर कॉल करके और चालू किए जाने वाले ट्रैक के आईडी पास करके, मीडिया आइटम से जुड़े एक या एक से ज़्यादा ट्रैक को (मीडिया लोड होने के बाद) चालू करें. उदाहरण के लिए, नीचे दिया गया कोड, ऊपर बनाए गए कैप्शन ट्रैक को चालू करता है.
sessionManager.currentSession?.remoteMediaClient?.setActiveTrackIDs([1])
[self.sessionManager.currentSession.remoteMediaClient setActiveTrackIDs:@[@1]];
मौजूदा मीडिया आइटम के किसी ट्रैक को बंद करने के लिए, खाली अरे या शून्य के साथ
GCKRemoteMediaClient
पर -[setActiveTrackIDs:]
को कॉल करें. इस कोड से कैप्शन ट्रैक बंद हो जाता है.
sessionManager.currentSession?.remoteMediaClient?.setActiveTrackIDs([])
[self.sessionManager.currentSession.remoteMediaClient setActiveTrackIDs:@[]];
टेक्स्ट ट्रैक को स्टाइल करें
GCKMediaTextTrackStyle
क्लास में, टेक्स्ट ट्रैक की स्टाइल की जानकारी शामिल की जाती है. मौजूदा समय में चल रहे मीडिया आइटम पर
-[GCKRemoteMediaClient
setTextTrackStyle]
कॉल करके, ट्रैक की शैली लागू की जा सकती है.
नीचे दिए गए कोड में बनाई गई ट्रैक स्टाइल, ओपैसिटी को 50% (80) पर सेट करने के लिए टेक्स्ट को लाल (FF) में बदल देती है
और सेरिफ़ का फ़ॉन्ट सेट करती है.
let textTrackStyle = GCKMediaTextTrackStyle.createDefault() textTrackStyle.foregroundColor = GCKColor.init(cssString: "#FF000080") textTrackStyle.fontFamily = "serif" styleChangeRequest = sessionManager.currentSession?.remoteMediaClient?.setTextTrackStyle(textTrackStyle) styleChangeRequest?.delegate = self
GCKMediaTextTrackStyle *textTrackStyle = [GCKMediaTextTrackStyle createDefault]; [textTrackStyle setForegroundColor:[[GCKColor alloc] initWithCSSString:@"#FF000080"]]; [textTrackStyle setFontFamily:@"serif"]; self.styleChangeRequest = [self.sessionManager.currentSession.remoteMediaClient setTextTrackStyle:textTrackStyle]; self.styleChangeRequest.delegate = self;
इस अनुरोध को ट्रैक करने के लिए, दिखाए गए
GCKRequest
ऑब्जेक्ट का इस्तेमाल किया जा सकता है.
// MARK: - GCKRequestDelegate func requestDidComplete(_ request: GCKRequest) { if request == styleChangeRequest { print("Style update completed.") styleChangeRequest = nil } }
#pragma mark - GCKRequestDelegate - (void)requestDidComplete:(GCKRequest *)request { if (request == self.styleChangeRequest) { NSLog(@"Style update completed."); self.styleChangeRequest = nil; } }
ज़्यादा जानकारी के लिए नीचे स्थिति के अपडेट देखें. ऐप्लिकेशन की मदद से उपयोगकर्ता, सिस्टम या ऐप्लिकेशन की दी गई सेटिंग का इस्तेमाल करके, टेक्स्ट ट्रैक की शैली अपडेट कर सकते हैं.
इसमें एक डिफ़ॉल्ट स्टाइल दी जाती है (iOS 7 और उसके बाद के वर्शन में), जिसे स्टैटिक तरीके +[GCKMediaTextTrackStyle
createDefault]
से वापस लाया जा सकता है.
नीचे दिए गए टेक्स्ट ट्रैक स्टाइल एलिमेंट बदले जा सकते हैं:
- फ़ोरग्राउंड (टेक्स्ट) का रंग और अपारदर्शिता
- बैकग्राउंड का रंग और अपारदर्शिता
- किनारे का प्रकार
- किनारे का रंग
- फ़ॉन्ट स्केल
- फ़ॉन्ट परिवार
- फ़ॉन्ट स्टाइल
स्टेटस से जुड़े अपडेट पाएं
जब मैसेज पाने वाले एक ही व्यक्ति से कई लोग जुड़े होते हैं, तो भेजने वाले हर व्यक्ति के लिए इन बदलावों की जानकारी होना ज़रूरी होता है, भले ही वे बदलाव दूसरे लोगों ने किए हों.
आपका ऐप्लिकेशन, भेजने वाले को
GCKRemoteMediaClientListener
रजिस्टर करे, ताकि उसे स्टेटस के अपडेट मिल सकें.
अगर मौजूदा मीडिया के
GCKMediaTextTrackStyle
में बदलाव होता है, तो कनेक्ट किए गए सभी ईमेल पतों को
-[remoteMediaClient:didUpdateMediaMetadata:]
और
-[remoteMediaClient:didUpdateMediaStatus:]
कॉलबैक
के ज़रिए सूचना दी जाएगी. इस मामले में, फ़ाइल पाने वाले का SDK टूल इस बात की पुष्टि नहीं करता है कि नई स्टाइल, पिछली स्टाइल से अलग है या नहीं. साथ ही, यह कनेक्ट किए गए सभी मैसेज भेजने वालों को इसकी सूचना देता है. हालांकि, अगर चालू ट्रैक की सूची अपडेट की जाती है, तो सिर्फ़
कनेक्ट किए गए भेजने वालों के -[remoteMediaClient:didUpdateMediaStatus:]
को सूचना दी जाएगी.
सीओआरएस से जुड़ी शर्तें पूरी करें
अडैप्टिव मीडिया स्ट्रीमिंग के लिए, Google Cast को सीओआरएस हेडर की ज़रूरत होती है. लेकिन सामान्य mp4 मीडिया स्ट्रीम में भी ट्रैक शामिल होने पर सीओआरएस की ज़रूरत होती है. अगर आपको किसी भी मीडिया के लिए ट्रैक की सुविधा चालू करनी है, तो आपको अपनी ट्रैक स्ट्रीम और मीडिया स्ट्रीम, दोनों के लिए सीओआरएस को चालू करना होगा. इसलिए, अगर आपके सर्वर पर सामान्य mp4 मीडिया के लिए सीओआरएस हेडर उपलब्ध नहीं हैं और फिर एक सामान्य सबटाइटल ट्रैक जोड़ा जाता है, तो मीडिया तब तक स्ट्रीम नहीं किया जा सकेगा, जब तक सही सीओआरएस हेडर को शामिल करने के लिए अपने सर्वर को अपडेट नहीं किया जाता. इसके अलावा, आपको कम से कम इन हेडर को अनुमति देनी होगी: कॉन्टेंट-टाइप, स्वीकार करने का कोड, और रेंज. ध्यान दें कि आखिरी दो हेडर ऐसे अतिरिक्त हेडर हैं जिनकी शायद आपको पहले ज़रूरत न हो.