মিডিয়া ট্র্যাক, অডিও বা ভিডিও স্ট্রিম অবজেক্ট অথবা টেক্সট অবজেক্ট (সাবটাইটেল বা ক্যাপশন) হতে পারে।
GCKMediaTrack
অবজেক্ট ট্র্যাককে বোঝায়। এতে অনন্য সংখ্যাসূচক শনাক্তকারী এবং কন্টেন্ট আইডি ও শীর্ষকের মতো অন্যান্য
অ্যাট্রিবিউট থাকে। 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];
GCKRemoteMediaClient
এ -[setActiveTrackIDs:] কল করে
মিডিয়া আইটেমের সাথে যুক্ত এক বা একাধিক ট্র্যাক অ্যাক্টিভেট করুন (মিডিয়া লোড হওয়ার পরে) এবং অ্যাক্টিভেট করা ট্র্যাকের আইডি পাস করুন। যেমন, নিম্নলিখিত
কোডটি উপরে তৈরি করা ক্যাপশন ট্র্যাক অ্যাক্টিভেট করে।
sessionManager.currentSession?.remoteMediaClient?.setActiveTrackIDs([1])
[self.sessionManager.currentSession.remoteMediaClient setActiveTrackIDs:@[@1]];
বর্তমান মিডিয়া আইটেমে কোনও ট্র্যাক ডিঅ্যাক্টিভেট করতে, খালি অ্যারে বা nil সহ
-[setActiveTrackIDs:] on
GCKRemoteMediaClient
কল করুন। নিচের কোডটি ক্যাপশন ট্র্যাক বন্ধ করে দেয়।
sessionManager.currentSession?.remoteMediaClient?.setActiveTrackIDs([])
[self.sessionManager.currentSession.remoteMediaClient setActiveTrackIDs:@[]];
টেক্সট ট্র্যাকের স্টাইল
GCKMediaTextTrackStyle
ক্লাস, টেক্সট ট্র্যাকের স্টাইল সংক্রান্ত তথ্য এনক্যাপসুলেট করে। -[GCKRemoteMediaClient
setTextTrackStyle] কল করে বর্তমানে
চলমান মিডিয়া আইটেমে ট্র্যাক স্টাইল
প্রয়োগ করা যেতে পারে।
নিচের কোডে তৈরি ট্র্যাক স্টাইল ৫০% অস্বচ্ছতা (৮০) সহ টেক্সটকে লাল (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; } }
আরও তথ্যের জন্য নিচে স্ট্যাটাস আপডেট
দেখুন। অ্যাপে টেক্সট
ট্র্যাকের স্টাইল আপডেট করার সুবিধা থাকতে হবে। এটি সিস্টেমের দেওয়া সেটিংস বা অ্যাপের নিজস্ব সেটিংস ব্যবহার করে করা যেতে পারে।
একটি ডিফল্ট স্টাইল প্রদান করা হয়, যা স্ট্যাটিক মেথড +[GCKMediaTextTrackStyle
createDefault]-এর মাধ্যমে
রিট্রিভ করা যায়।
নিম্নলিখিত টেক্সট ট্র্যাক স্টাইল এলিমেন্ট পরিবর্তন করা যেতে পারে:
- ফোরগ্রাউন্ড (টেক্সট) কালার ও অস্বচ্ছতা
- ব্যাকগ্রাউন্ডের রঙ ও অস্পষ্টতা
- এজ প্রকার
- এজের রঙ
- ফন্ট স্কেল
- হরফ পরিবার
- ফন্টের স্টাইল
স্ট্যাটাস আপডেট পান
একাধিক প্রেরক একই প্রাপকের সাথে কানেক্ট করা থাকলে, প্রত্যেক প্রেরকের জন্য এটি গুরুত্বপূর্ণ যে প্রাপকের ক্ষেত্রে হওয়া পরিবর্তন সম্পর্কে তাকে সচেতন থাকতে হবে, এমনকি সেইসব পরিবর্তন অন্য প্রেরকের থেকে শুরু করা হলেও।
প্রেরক যাতে প্রাপকের থেকে স্ট্যাটাস আপডেট পান তা নিশ্চিত করতে, আপনার অ্যাপকে
GCKRemoteMediaClientListener
রেজিস্টার করতে হবে।
বর্তমান মিডিয়ার
GCKMediaTextTrackStyle
পরিবর্তিত হলে, কানেক্ট করা সব প্রেরককে
-[remoteMediaClient:didUpdateMediaMetadata:] ও
-[remoteMediaClient:didUpdateMediaStatus:]
কলব্যাক, এই দু'টির মাধ্যমে বিজ্ঞপ্তি পাঠানো হবে। এই ক্ষেত্রে, নতুন স্টাইলটি
আগের স্টাইলের থেকে আলাদা কিনা তা
Receiver SDK যাচাই করে না এবং কানেক্ট করা সব প্রেরককে বিজ্ঞপ্তি পাঠায়। তবে, অ্যাক্টিভ ট্র্যাকের তালিকা আপডেট করা হলে, শুধুমাত্র কানেক্ট করা প্রেরকদের
-[remoteMediaClient:didUpdateMediaStatus:] বিজ্ঞপ্তি পাঠানো হবে।
CORS সংক্রান্ত প্রয়োজনীয়তা পূরণ করা
অ্যাডাপ্টিভ মিডিয়া স্ট্রিমিংয়ের জন্য, Google Cast-এ CORS হেডার থাকতে হবে, কিন্তু সাধারণ mp4 মিডিয়া স্ট্রিমেও ট্র্যাক থাকলে CORS থাকতে হবে। আপনি কোনও মিডিয়ার জন্য ট্র্যাক চালু করতে চাইলে, আপনাকে অবশ্যই নিজের ট্র্যাক স্ট্রিম ও মিডিয়া স্ট্রিম, দু'টির জন্যই CORS চালু করতে হবে। তাই, আপনার সার্ভারে সাধারণ mp4 মিডিয়ার জন্য CORS হেডার উপলভ্য না থাকলে এবং আপনি তারপরে সাধারণ সাবটাইটেল ট্র্যাক যোগ করলে, উপযুক্ত CORS হেডার যোগ করার জন্য আপনার সার্ভার আপডেট না করা পর্যন্ত আপনি মিডিয়া স্ট্রিম করতে পারবেন না। এছাড়াও, আপনাকে অন্তত নিম্নলিখিত হেডারগুলিকে অনুমতি দিতে হবে: Content-Type, Accept-Encoding এবং Range. মনে রাখবেন যে শেষ দুটি হেডার হল অতিরিক্ত হেডার যা আপনার আগে প্রয়োজন নাও হতে পারে।