Chromecast iOS, как кастомное аудио для видео файла - PullRequest
1 голос
/ 16 января 2020

Я пытаюсь как-то изменить звуковую дорожку или дорожку субтитров в приложении iOS sender. Пример кода, как я начинаю приведение:

func playVideoRemotely() {
  GCKCastContext.sharedInstance().presentDefaultExpandedMediaControls()

  // Define media metadata.
  let metadata = GCKMediaMetadata()

  let mediaInfoBuilder = GCKMediaInformationBuilder(contentURL: URL(string: "https://www.dropbox.com/s/bqhmu0vx6d2ol6w/video.mkv?dl=1")!)
  mediaInfoBuilder.streamType = GCKMediaStreamType.none
  mediaInfoBuilder.contentType = "video/mkv"
  mediaInfoBuilder.metadata = metadata

  let track = GCKMediaTrack(identifier: 1, contentIdentifier: "https://www.dropbox.com/s/huhxqyp51g1jdmn/audio1.ac3?dl=1", contentType: "audio/ac3", type: .audio, textSubtype: .unknown, name: "Audio \(1)", languageCode: "ru", customData: nil)
  let track2 = GCKMediaTrack(identifier: 2, contentIdentifier: "https://www.dropbox.com/s/c2hi8p44jt44pr1/audio2.ac3?dl=1", contentType: "audio/ac3", type: .audio, textSubtype: .unknown, name: "Audio \(2)", languageCode: "ru", customData: nil)
  let track3 = GCKMediaTrack(identifier: 3, contentIdentifier: "https://www.dropbox.com/s/ogsh07dzfm1mlkm/audio3.ac3?dl=1", contentType: "audio/ac3", type: .audio, textSubtype: .unknown, name: "Audio \(3)", languageCode: "en", customData: nil)
  let track4 = GCKMediaTrack(identifier: 4, contentIdentifier: "https://www.dropbox.com/s/esmh0mycqnpflv1/subtitles2.srt?dl=1", contentType: "text/vtt", type: .text, textSubtype: .captions, name: "Sub \(1)", languageCode: "en", customData: nil)
  let track5 = GCKMediaTrack(identifier: 5, contentIdentifier: "https://www.dropbox.com/s/wzmselbwulbzdis/subtitles3.srt?dl=1", contentType: "text/vtt", type: .text, textSubtype: .captions, name: "Sub \(2)", languageCode: "ru", customData: nil)
  mediaInfoBuilder.mediaTracks = [track, track2, track3, track4, track5]
  mediaInformation = mediaInfoBuilder.build()

  let mediaLoadRequestDataBuilder = GCKMediaLoadRequestDataBuilder()
  mediaLoadRequestDataBuilder.mediaInformation = mediaInformation

  // Send a load request to the remote media client.

  mediaLoadRequestDataBuilder.autoplay = true
  mediaLoadRequestDataBuilder.startTime = 0
  mediaLoadRequestDataBuilder.activeTrackIDs = [NSNumber(value: 1), NSNumber(value: 4)]

  if let request = sessionManager.currentSession?.remoteMediaClient?.loadMedia(with: mediaLoadRequestDataBuilder.build()) {
    request.delegate = self
  }
}

On Github Я создал форк из официального репозитория с этим кодом выше. Субтитры и звуковые швы подключены, но на телевизоре нет звука и надписей.

audio sub

...