我正在为我的tvOSApp使用swift的AVplayer。
当我使用默认播放器时,视频的字幕将显示在顶部的“字幕”栏上,并且可以轻松切换字幕。 那么,如何在不使用默认播放控件的情况下切换字幕呢?
我在屏幕上有用于切换字幕的按钮,我想在切换目标字幕的过程中进行切换。
这是我的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的文档,但没有答案。如果有人可以帮助我,我将不胜感激。
答案 0 :(得分:0)
您必须先加载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)