미디어 트랙 사용

미디어 트랙은 오디오나 동영상 스트림 객체 또는 텍스트 객체 (자막)가 될 수 있습니다. 또는 캡션)을 선택합니다.

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];

미디어 항목에는 여러 트랙이 있을 수 있습니다. 예를 들어 여러 개의 자막 (서로 다른 언어) 또는 여러 개의 대체 오디오 스트림 (다양한 언어) GCKMediaInformation 드림 는 미디어 항목을 나타내는 클래스입니다. 컬렉션과 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];

미디어 항목과 연결된 트랙을 하나 이상 활성화합니다( 미디어가 로드됨)에서 -[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] 아래 코드에서 만든 트랙 스타일은 텍스트를 빨간색 (FF)으로 50% 불투명도로 바꿉니다. (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 드림 현재 미디어가 변경되면 연결된 모든 발신자에게 알림이 전송됩니다. GCP 콘솔과 -[remoteMediaClient:didUpdateMediaMetadata:]-[remoteMediaClient:didUpdateMediaStatus:] 콜백을 호출합니다. 이 경우 수신기 SDK가 새 스타일이 전송에 관계없이 연결된 모든 발신자에게 알림을 전송합니다. 그러나 활성 트랙 목록이 업데이트되며 연결된 발신자의 -[remoteMediaClient:didUpdateMediaStatus:]님이 있습니다.

CORS 요구사항 충족

가변 품질 미디어 스트리밍의 경우 Google Cast에 CORS 헤더가 있어야 하므로 단순한 mp4 미디어 스트림에도 트랙이 포함된 경우 CORS가 필요합니다. 만약 모든 미디어에서 트랙을 사용하려면 두 트랙 모두에 대해 CORS를 사용 설정해야 합니다. 미디어 스트림도 있습니다 따라서 CORS 헤더를 사용할 수 없는 경우 mp4 미디어를 저장할 수 있으며 간단한 부제목을 추가할 수 있습니다 서버를 업데이트하지 않으면 미디어를 스트리밍할 수 없습니다. 적절한 CORS 헤더를 포함할 수 있습니다. 또한 최소한 Content-Type, Accept-Encoding 및 Range 헤더를 지원합니다. Note that the 마지막 두 헤더는 이전에 필요하지 않았을 수 있는 추가 헤더입니다.