我一直在关注Apple的HTTP Live Streaming指南并让它在我的应用程序中运行良好,但我想在视频中嵌入字幕。 This thread on Quora表明Netflix已经做到了。
我的源视频使用QuickTime Pro通过.srt文件嵌入了字幕,在QuickTime和我的iOS应用中播放视频时可以看到字幕。一旦我使用mediafilesegmenter(根据HLS的要求)将视频拆分为较小的.ts文件,字幕就会消失。我正在使用MPMoviePlayerController。
是否有一种特殊的方法来对源视频进行编码或使用mediafilesegmenter进行字幕处理?
答案 0 :(得分:4)
可以在ts流中添加标题(例如EIA-608或EIA-708)。我不知道有任何好的免费工具可以将这些字幕插入到ts流中,但可能Manzanita会卖给你一些东西(价格荒谬)。
不幸的是,许多HLS播放器会忽略字幕,因为HLS规范没有提到应如何处理字幕轨道。在您自己的应用程序中,您可以通过查找已包含EIA-608 / EIA-708文本的ts文件并对其进行分段来测试它。
坦率地说,我认为在TS中嵌入字幕是一个死胡同,你会发现编写由TimedMetadata触发的自己的字幕显示器更容易。
=== UPDATE ===
自HLS草案版本9(2012年9月22日)以来,HLS支持WebVTT字幕。我不知道有任何用它们准备溪流的工具。
答案 1 :(得分:0)
我认为在浏览器中使用HTTP Live Streaming时,不支持字幕(我可能错了)。
但是,像http://captionatorjs.com/这样的polyfill允许iOS上的视频中的字幕。现在,我知道captionator适用于非HLS视频,但不确定它是否适用于HLS ...您需要进行研究/测试。
P.S。如果它是您的原生应用,那么您正在寻找定时元数据http://developer.apple.com/library/ios/#documentation/mediaplayer/reference/MPTimedMetadata_Class/Reference/Reference.html以支持字幕等内容。
答案 2 :(得分:0)
如果它可以帮助某人,我有一个应用程序可以从Vimeo Pro帐户流式传输HLS内容。 Vimeo允许您添加WebVTT字幕,这些字幕在iOS和tvOS设备上处理得非常好。
要生成.vtt文件,我使用了YouTube,如下所示:https://www.youtube.com/watch?v=vlj_Lq31BKw