我正在尝试创建一个自定义视频播放器。我正在使用SwiftUI(v1和XCode 11.5(,并试图允许用户选择是否打开/关闭CC,以及选择所需的语言。
怎样才能做到这一点?到目前为止,我所尝试的是将AVPlayer的appliesMediaSelectionCriteriaAutomatic属性设置为true。如果从我的iPhone的辅助功能设置中启用,则会显示CC。
avPlayer.appliesMediaSelectionCriteriaAutomatically = true
我还尝试忽略系统首选项,将其设置为false,然后使用isClosedCaptionDisplayEnabled属性来启用CC,但它没有达到我预期的效果(isClosedCAdaptionDisplayEnabled也不推荐使用(。
avPlayer.appliesMediaSelectionCriteriaAutomatically = false
avPlayer.isClosedCaptionDisplayEnabled = true
然而,我需要它们以编程方式显示/隐藏(例如,当按下按钮时(,并且应该忽略操作系统关于字幕的设置。此外,我还想选择CC的语言。这是可以实现的吗?
注意:如果重要的话,我正在播放的视频是从Vimeo流式传输的
首先,您应该从流中获取所有可用的CC,然后选择一个您需要的CC,例如:
let asset = player.currentItem?.asset
if let group = asset?.mediaSelectionGroup(forMediaCharacteristic: .legible) {
let listCC = group.options
if let firstCC = listCC.first {
player.currentItem?.select(firstCC, in: group)
}
}
如果要禁用CC,只需调用:
player.currentItem?.select(nil, in: group)