在iOS中播放视频时处理字幕

时间:2016-01-06 11:01:44

标签: ios swift avfoundation avplayer avplayeritem

我需要对屏幕上显示的本地(或远程)视频文件的字幕进行一些文本处理。目前我正在使用AVPlayerItem并通过查看其资产我可以看到有一个隐藏字幕轨道,但我无法获得实际的字幕文本。所以问题是如何在显示字幕轨道时获得字幕轨道的实际文本(最好是迅速)。

1 个答案:

答案 0 :(得分:2)

http://www.slideshare.net/invalidname/stupid-videotricksdc2014上的演示文稿应该为您提供所需的一切(请参阅评论中示例代码的链接),因为AVSubtitleReader示例完全符合您的要求。

一旦你看到有一个文本轨道(隐藏字幕,副标题,等等),你需要获得该轨道,用AVAssetReader打开它,然后开始读取样本缓冲区。每个人都有一个演示时间戳和持续时间,然后是一个CMBlockBuffer。该缓冲区的内容取决于您正在阅读的轨道类型,这些在QuickTime文件格式文档中定义。在文本的情况下,它只是一个Pascal字符串:一个big-endian UInt16,告诉你文本有多长,然后是文本本身。当然,所需的endian-flips和数据复制在C中比在Swift中更自然,但肯定是可行的。或者,只需将此部分保留在自己的C或Obj-C文件中,然后从Swift中调用它。

相关问题