在OS X上显示带有AVFoundation AVPlayer的字幕

joe*_*ick 16 macos cocoa objective-c avfoundation

在OS X上使用AVFoundation播放视频时,我正在尝试显示字幕.

我查看了文档,但找不到启用字幕轨道的方法.API包含对字幕轨道的多个引用,这使我相信它是受支持的.

在iOS上,该方法-[AVPlayerItem selectMediaOption:inMediaSelectionGroup:]用于启用字幕轨道.此方法在10.7 SDK中不可用.还有另一种显示字幕的方法吗?

编辑:Quicktime播放器X具有字幕支持,例如在打开此电影时,字幕子菜单似乎提供语言选择,并在选择英语时显示它们.这让我相信它们已包含在API中......

sti*_*ggs 5

我自己遇到了同样的问题.我发现不幸的是,除了切换到QTKit之外,唯一的方法是创建一个单独的字幕图层(CATextLayer)并将其适当地定位为播放器图层的子图层.我们的想法是你设置一个周期性时间观察者来触发每一秒左右并更新字幕,以及(这是可选的)你可能有的一些UI元素,显示视频中经过的时间.

我创建了一个基本的SubRip(.srt)文件解析器类; 你可以在这里找到它:https://github.com/sstigler/SubRip-for-Mac.请务必查看Wiki以获取文档.该课程根据BSD许可条款提供.

您可能遇到的另一个挑战是如何动态调整CATextLayer的高度以考虑不同长度的字幕,以及包含视图的不同宽度(如果您选择使其可由用户调整大小).我发现了一个很好的CALayoutManager子类,它做了这个,并对它做了一些修改,以使它适用于我试图做的事情:https://github.com/sstigler/height-for-width.

我希望这有帮助.