我试图在 OS X 上使用 AVFoundation 播放视频时显示字幕。
我查看了文档,但找不到启用字幕轨道的方法。 API 包含对字幕轨道的多个引用,这让我相信它是受支持的。
在 iOS 上,方法 -[AVPlayerItem selectMediaOption:inMediaSelectionGroup:]
用于启用字幕轨道。此方法在 10.7 SDK 中不可用。还有其他显示字幕的方法吗?
编辑: Quicktime Player X 支持字幕,例如在打开 this movie 时字幕子菜单似乎提供了语言选择,并会在选择英语时显示。这让我相信它们包含在 API 中......
最佳答案
我自己也遇到了同样的问题。不幸的是,我发现除了切换到 QTKit 之外,唯一的方法是制作一个单独的字幕层(CATextLayer)并将其适本地定位为播放器层的子层。这个想法是,您设置一个周期性时间观察器以每秒左右触发一次并更新字幕,以及(这是可选的)您可能拥有的一些 UI 元素,用于显示视频中耗时。
我创建了一个基本的 SubRip (.srt) 文件解析器类;你可以在这里找到它:https://github.com/sstigler/SubRip-for-Mac .请务必查看 wiki 上的文档。该类根据 BSD 许可条款提供。
您可能会遇到的另一个挑战是如何动态调整 CATextLayer 的高度以适应不同长度的字幕和不同宽度的包含 View (如果您选择使其用户可调整大小)。我找到了一个很棒的 CALayoutManager 子类来执行此操作,并对它进行了一些修改,以便让它为我正在尝试做的事情工作:https://github.com/sstigler/height-for-width .
希望对您有所帮助。
关于objective-c - 在 OS X 上使用 AVFoundation AVPlayer 显示字幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11312118/