Переключение субтитров hls на tvOS / swift - PullRequest
0 голосов
/ 09 октября 2018

Я использую AVplayer of swift для своего tvOSApp.

Когда я использую проигрыватель по умолчанию, субтитры видео будут отображаться на панели «субтитров» сверху и могут легко переключать субтитры.Итак, как я могу переключать субтитры таким образом, без использования элементов управления воспроизведением по умолчанию?

У меня есть кнопки для переключения субтитров на экране, и я хотел бы переключать их во время целевого метода.

Вот мой код для AVPlayer.

let asset = AVAsset(url: URL(string: videoUrl)!)
let playerItem = AVPlayerItem(asset: asset)        
let player = AVPlayer(playerItem: playerItem)
player.play()

self.bgMovieLayer = AVPlayerLayer(player: player)
self.bgMovieLayer.frame = view.bounds
self.bgMovieLayer.videoGravity = .resizeAspectFill
self.bgMovieLayer.zPosition = -1
self.view.layer.insertSublayer(self.bgMovieLayer, at: 0)

Я использую видео ниже для теста.http://184.72.239.149/vod/smil:BigBuckBunny.smil/playlist.m3u8

Я прочитал документы, касающиеся AVPlayer / AVPlayerItem, и не получил ответа.Буду признателен, если кто-то может помочь в этом.

1 Ответ

0 голосов
/ 26 октября 2018

Сначала нужно загрузить availableMediaCharacteristics, а затем искать AVMediaCharacteristic.legible.Как то так:

let asset:AVAsset
let key = #keyPath(AVAsset.availableMediaCharacteristicsWithMediaSelectionOptions)
 asset.loadValuesAsynchronously(forKeys: [key]) {
  var error: NSError? = nil
  let status = asset.statusOfValue(forKey: key, error: &error)
  switch status {
  case .loaded:
  // Sucessfully loaded, continue processing
  case .failed:
  // Examine NSError pointer to determine failure
  case .cancelled:
  // Loading cancelled
  default:
    // Handle all other cases
  }
}
let subtitlesGroup = asset.mediaSelectionGroup(forMediaCharacteristic: AVMediaCharacteristic.legible)
...