由于AVPlayer呈现的隐藏字幕有时会与其他UI组件重叠,我想在单独的视图中呈现cc。
我可以通过将closedCaptionDisplayEnabled设置为NO来关闭AVPlayer的cc渲染,但我找不到提取我想要渲染的隐藏字幕的方法。
有人知道是否有办法从AVPlayer / AVPlayerItem中提取CC字符串?我能用AVMediaTypeClosedCaption识别AVAssetTrack,但我不知道如何在特定时间内提取字符串。
答案 0 :(得分:0)
“提取”字幕字符串的关键步骤是
let captionOutput = AVPlayerItemLegibleOutput()
。captionOutput.setDelegate(self, queue: DispatchQueue.main)
。player.currentItem?.add(captionOutput)
。extension ViewController: AVPlayerItemLegibleOutputPushDelegate {
func legibleOutput(_ output: AVPlayerItemLegibleOutput,
didOutputAttributedStrings strings: [NSAttributedString],
nativeSampleBuffers nativeSamples: [Any],
forItemTime itemTime: CMTime) {
// Your attributed caption strings get delivered here!
}
}
captionOutput.suppressesPlayerRendering = true
。我在这里创建了一个示例项目:https://github.com/balnaves/AVPlayerItemLegibleOutputTest