AVPlayer - 如何以编程方式转换来自 HTTP 实时流视频 on/off 的 CC?
AVPlayer - how to turn CC coming from HTTP Live Streaming video on/off programatically?
我正在尝试创建一个自定义视频播放器。我正在使用 SwiftUI(v1 和 XCode 11.5)并试图让用户选择是否打开 on/off CC 并选择所需的语言。
如何才能做到这一点?到目前为止,我尝试过的是将 AVPlayer 的 appliesMediaSelectionCriteriaAutomatically 属性 设置为 true.如果从我的 iPhone 的 Accessibility 设置中启用,则显示 CC。
avPlayer.appliesMediaSelectionCriteriaAutomatically = true
我也尝试通过将其设置为 false 来忽略系统偏好设置,然后使用 isClosedCaptionDisplayEnabled 属性 来启用 CC,但它没有达到我预期的效果(isClosedCaptionDisplayEnabled 也被弃用)。
avPlayer.appliesMediaSelectionCriteriaAutomatically = false
avPlayer.isClosedCaptionDisplayEnabled = true
但是我需要它们 shown/hidden 编程(例如当按下按钮时)并且应该忽略关于字幕的 OS' 设置.我也想选择 CC 的 language。这甚至可以实现吗?
注意:如果重要的话,我正在播放的视频是从 Vimeo 流式传输的。
首先,您应该从您的流中获取所有可用的 CC,然后 select 您需要的一个,例如:
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)
我正在尝试创建一个自定义视频播放器。我正在使用 SwiftUI(v1 和 XCode 11.5)并试图让用户选择是否打开 on/off CC 并选择所需的语言。
如何才能做到这一点?到目前为止,我尝试过的是将 AVPlayer 的 appliesMediaSelectionCriteriaAutomatically 属性 设置为 true.如果从我的 iPhone 的 Accessibility 设置中启用,则显示 CC。
avPlayer.appliesMediaSelectionCriteriaAutomatically = true
我也尝试通过将其设置为 false 来忽略系统偏好设置,然后使用 isClosedCaptionDisplayEnabled 属性 来启用 CC,但它没有达到我预期的效果(isClosedCaptionDisplayEnabled 也被弃用)。
avPlayer.appliesMediaSelectionCriteriaAutomatically = false
avPlayer.isClosedCaptionDisplayEnabled = true
但是我需要它们 shown/hidden 编程(例如当按下按钮时)并且应该忽略关于字幕的 OS' 设置.我也想选择 CC 的 language。这甚至可以实现吗?
注意:如果重要的话,我正在播放的视频是从 Vimeo 流式传输的。
首先,您应该从您的流中获取所有可用的 CC,然后 select 您需要的一个,例如:
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)