Menggunakan Trek Media

Trek media dapat berupa objek streaming audio atau video, atau objek teks (subtitel atau caption).

GCKMediaTrack mewakili trek. Kode ini terdiri dari sebuah pengenal numerik unik dan informasi lainnya seperti Content ID dan title [judul]. Instance GCKMediaTrack dapat dibuat sebagai berikut:

Swift
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)
Objective-C
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];

Item media dapat memiliki beberapa trek; misalnya, dapat memiliki beberapa subtitel (masing-masing untuk bahasa yang berbeda) atau beberapa streaming audio alternatif (untuk bahasa yang berbeda). GCKMediaInformation adalah class yang merepresentasikan item media. Untuk mengaitkan kumpulan Objek GCKMediaTrack dengan item media, aplikasi Anda harus memperbarui properti mediaTracks. Aplikasi Anda perlu membuat pengaitan ini sebelum dimuat ke penerima, seperti dalam kode berikut:

Swift
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()
Objective-C
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];

Aktifkan satu atau beberapa trek yang terkait dengan item media (setelah media dimuat) dengan memanggil -[setActiveTrackIDs:] di GCKRemoteMediaClient dan meneruskan ID jalur yang akan diaktifkan. Misalnya, kode akan mengaktifkan trek teks yang dibuat di atas.

Swift
sessionManager.currentSession?.remoteMediaClient?.setActiveTrackIDs([1])
Objective-C
[self.sessionManager.currentSession.remoteMediaClient setActiveTrackIDs:@[@1]];

Untuk menonaktifkan trek pada item media saat ini, panggil -[setActiveTrackIDs:] aktif GCKRemoteMediaClient dengan array kosong atau nol. Kode berikut menonaktifkan trek teks.

Swift
sessionManager.currentSession?.remoteMediaClient?.setActiveTrackIDs([])
Objective-C
[self.sessionManager.currentSession.remoteMediaClient setActiveTrackIDs:@[]];

Mengatur gaya trek teks

Tujuan GCKMediaTextTrackStyle mengenkapsulasi informasi gaya dari trek teks. Gaya trek bisa diterapkan ke item media yang sedang diputar dengan memanggil -[GCKRemoteMediaClient setTextTrackStyle] Gaya trek yang dibuat dalam kode di bawah ini mengubah teks menjadi merah (FF) pada opasitas 50% (80) dan menyetel font serif.

Swift
let textTrackStyle = GCKMediaTextTrackStyle.createDefault()
textTrackStyle.foregroundColor = GCKColor.init(cssString: "#FF000080")
textTrackStyle.fontFamily = "serif"
styleChangeRequest = sessionManager.currentSession?.remoteMediaClient?.setTextTrackStyle(textTrackStyle)
styleChangeRequest?.delegate = self
Objective-C
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;

Anda dapat menggunakan ID Objek GCKRequest untuk melacak permintaan ini.

Swift
// MARK: - GCKRequestDelegate

func requestDidComplete(_ request: GCKRequest) {
  if request == styleChangeRequest {
    print("Style update completed.")
    styleChangeRequest = nil
  }
}
Objective-C
#pragma mark - GCKRequestDelegate

- (void)requestDidComplete:(GCKRequest *)request {
  if (request == self.styleChangeRequest) {
    NSLog(@"Style update completed.");
    self.styleChangeRequest = nil;
  }
}

Lihat Pembaruan status di bawah untuk informasi lebih lanjut. Aplikasi harus memungkinkan pengguna memperbarui gaya untuk teks pelacakan, baik menggunakan setelan yang disediakan oleh sistem atau oleh aplikasi itu sendiri. Ada gaya default yang disediakan (di iOS 7 dan yang lebih baru), yang dapat diambil melalui metode statis +[GCKMediaTextTrackStyle createDefault]. Elemen gaya trek teks berikut dapat diubah:

  • Warna dan opasitas latar depan (teks)
  • Warna dan opasitas latar belakang
  • Jenis tepi
  • Warna Tepi
  • Skala Font
  • Jenis Font
  • Gaya Font

Terima info terbaru terkait status

Ketika beberapa pengirim terhubung ke penerima yang sama, penting untuk setiap pengirim mengetahui perubahan pada penerima bahkan jika perubahan dimulai dari pengirim lain.

Untuk memastikan pengirim menerima pembaruan status dari penerima, aplikasi Anda harus daftarkan GCKRemoteMediaClientListener Jika GCKMediaTextTrackStyle perubahan media saat ini, maka semua pengirim yang terhubung akan diberi tahu melalui -[remoteMediaClient:didUpdateMediaMetadata:] dan Callback -[remoteMediaClient:didUpdateMediaStatus:]. Dalam hal ini, SDK Penerima tidak memverifikasi apakah gaya baru berbeda dari gaya sebelumnya dan memberi tahu semua pengirim yang terhubung. Namun, jika daftar jalur aktif yang diperbarui, hanya -[remoteMediaClient:didUpdateMediaStatus:] di pengirim yang terhubung akan diberi tahu.

Memenuhi persyaratan CORS

Untuk streaming media adaptif, Google Cast memerlukan keberadaan header CORS, tetapi streaming media mp4 sederhana pun memerlukan CORS jika menyertakan Trek. Jika Anda ingin mengaktifkan Trek untuk media apa pun, Anda harus mengaktifkan CORS untuk kedua jalur tersebut streaming dan media Anda. Jadi, jika header CORS Anda belum tersedia untuk media mp4 sederhana di server, lalu tambahkan teks Anda tidak akan bisa streaming media kecuali Anda memperbarui server untuk menyertakan header CORS yang sesuai. Selain itu, Anda harus mengizinkan setidaknya header berikut: Content-Type, Accept-Encoding, dan Range. Perhatikan bahwa dua {i>header<i} terakhir adalah {i>header<i} tambahan yang mungkin tidak Anda perlukan sebelumnya.