メディア トラックの使用

メディア トラックには、音声や動画のストリーム オブジェクト、テキスト オブジェクト(サブタイトル)を使用できます。 あります。

GCKMediaTrack オブジェクトがトラックを表します。これは、一意の数値識別子と、その他の コンテンツ ID やタイトルなどの属性が含まれます。GCKMediaTrack インスタンスは、 次のように作成されます。

<ph type="x-smartling-placeholder">
</ph> <ph type="x-smartling-placeholder">
</ph>
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)
<ph type="x-smartling-placeholder">
</ph>
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];

メディア アイテムには複数のトラックを含めることができます。たとえば、1 つのテーブルに複数の 字幕(それぞれ異なる言語に対応)または複数の代替音声ストリーム (さまざまな言語の場合)。 GCKMediaInformation メディア アイテムを表すクラスです。グループに 1 つ以上のコレクションを GCKMediaTrack オブジェクト 追加する場合、アプリはそのメディア アイテムを更新して、 mediaTracks プロパティ。読み込み前にアプリでこの関連付けを行う必要があります 受信側にメディアを渡す必要があります。コードは次のようになります。

<ph type="x-smartling-placeholder">
</ph> <ph type="x-smartling-placeholder">
</ph>
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()
<ph type="x-smartling-placeholder">
</ph>
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];

メディア アイテムに関連付けられた 1 つ以上のトラックを メディアが読み込まれた時点)で -[setActiveTrackIDs:] を呼び出して、 GCKRemoteMediaClient 有効にするトラックの ID を渡しますたとえば、次のようになります。 上記で作成した字幕トラックがアクティブになります。

<ph type="x-smartling-placeholder">
</ph> <ph type="x-smartling-placeholder">
</ph>
Swift
で確認できます。
sessionManager.currentSession?.remoteMediaClient?.setActiveTrackIDs([1])
<ph type="x-smartling-placeholder">
</ph>
Objective-C
[self.sessionManager.currentSession.remoteMediaClient setActiveTrackIDs:@[@1]];

現在のメディア アイテムでトラックを無効にするには、 -[setActiveTrackIDs:] がオン GCKRemoteMediaClient 空の配列または nil を返します。次のコードは、字幕トラックを無効にします。

<ph type="x-smartling-placeholder">
</ph> <ph type="x-smartling-placeholder">
</ph>
Swift
で確認できます。
sessionManager.currentSession?.remoteMediaClient?.setActiveTrackIDs([])
<ph type="x-smartling-placeholder">
</ph>
Objective-C
[self.sessionManager.currentSession.remoteMediaClient setActiveTrackIDs:@[]];

テキスト トラックのスタイルを設定する

GCKMediaTextTrackStyle クラスはテキスト トラックのスタイル情報をカプセル化します。トラックスタイルには を呼び出して、現在再生中のメディア アイテムに適用します。 -[GCKRemoteMediaClient setTextTrackStyle]。 以下のコードで作成したトラック スタイルは、不透明度が 50% になるとテキストが赤色(FF)に変わります。 (80)を指定し、Serif フォントを設定します。

<ph type="x-smartling-placeholder">
</ph> <ph type="x-smartling-placeholder">
</ph>
Swift
で確認できます。
let textTrackStyle = GCKMediaTextTrackStyle.createDefault()
textTrackStyle.foregroundColor = GCKColor.init(cssString: "#FF000080")
textTrackStyle.fontFamily = "serif"
styleChangeRequest = sessionManager.currentSession?.remoteMediaClient?.setTextTrackStyle(textTrackStyle)
styleChangeRequest?.delegate = self
<ph type="x-smartling-placeholder">
</ph>
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;

返された GCKRequest オブジェクト: 追跡しているとします

<ph type="x-smartling-placeholder">
</ph> <ph type="x-smartling-placeholder">
</ph>
Swift
で確認できます。
// MARK: - GCKRequestDelegate

func requestDidComplete(_ request: GCKRequest) {
  if request == styleChangeRequest {
    print("Style update completed.")
    styleChangeRequest = nil
  }
}
<ph type="x-smartling-placeholder">
</ph>
Objective-C
#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:] コールバック。この例では、 Receiver SDK では、新しいスタイルが 接続されているすべての送信者に通知します。しかし アクティブなトラックのリストが更新され、 接続されている送信者の -[remoteMediaClient:didUpdateMediaStatus:] が以下に変更されます 通知されます。

CORS の要件を満たす

アダプティブ メディア ストリーミングの場合、Google Cast には CORS ヘッダーが必要です。 単純な mp4 メディア ストリームでも Tracks が含まれる場合は CORS が必要です。もし すべてのメディアで Tracks を有効にするには、両方のトラックで CORS を有効にする必要があります ストリームとメディアストリームですCORS ヘッダーを利用できない場合は サーバー上のシンプルな mp4 メディア用ファイルを作成し、 サーバーをアップデートしないとメディアをストリーミングできません。 適切な CORS ヘッダーを含めます。さらに、少なくとも 1 つの Content-Type、Accept-Encoding、Range の各ヘッダーが含まれます。なお、 最後の 2 つのヘッダーは、以前は必要でなかった可能性のある追加のヘッダーです。