【问题标题】:With iOS 8.x, Characters are broken in WebVTT for subtitle在 iOS 8.x 中,字符在 WebVTT 中被破坏以获取字幕
【发布时间】:2015-01-22 17:02:41
【问题描述】:
ADDITION :它似乎可以在其他原生应用上正常工作。仅在网络浏览器上中断。 (即 Chrome、移动 Safari)
使用 HLS (=.m3u8) 提供自适应流媒体,并考虑将 WebVTT 用于字幕。但是当我在 Mobile Safari 上播放它们时,我发现除了英语之外的一些字符在 iOS 8.x 设备上碰巧被破坏了。它在 iOS 7 设备上运行良好。
这是由 Apple 托管的官方示例视频 (.m3u8) 网页:
https://developer.apple.com/streaming/examples/advanced-stream.html
如果您在 iOS 7.x 和 iOS 8.x 设备上都加载此内容,请选择日文字幕,然后它将在 iOS 8.x 上显示损坏的字符(适用于 7.x 及更低版本):
有什么要避免的想法吗?我已经在 iOS 模拟器(7.1、8.1、8.2 beta 4)和 iOS 设备(8.0.2、8.1.2)上对此进行了测试。
【问题讨论】:
标签:
ios
objective-c
m3u8
http-live-streaming
webvtt
【解决方案1】:
自从我发布此消息以来一直没有答案,我仍然为这个问题而苦苦挣扎。但是,我在这里给你我 4 个月的解决方法和琐事:
-
原生iOS视频播放功能有两种环境:
HTML5视频 & 原生应用播放SDK(如AVPlayer)
您可以使用 WebVTT 提供多个字幕功能。这是一个ONLY选项,除非您有 3rd 方渲染器或您后院的东西。
如果你想实现自己的字幕功能,你必须开始考虑如何处理视频播放器的控制器 UI。其中一个例子,你不能在你的字幕渲染器中使用内置的全屏功能。我认为,如果您的字幕库不是 WebVTT(或类似于 .VTT 的 .SRT),那么实现字幕渲染器并不是一个坏主意。 (就我而言,我实现了一个字幕转换器来创建 .VTT 字幕文件)
-
iOS HTML5视频花絮:
- 您可以通过将 WebVTT 嵌入 HLS 播放列表以及将元素放入元素中来提供 WebVTT。
- >= iOS 8.0,如果您通过将 WebVTT 文件嵌入 HLS 播放列表来提供 WebVTT 文件,那么多字节字符会被破坏。 (这是我的问题,如上所述)
- 如果您通过将元素放入元素来提供 WebVTT 文件,那么它可以在任何地方工作。 (至少 >= iOS 6.0。我没有检查旧版本)
- CSS 样式有效。这意味着您可以为字幕着色。
-
iOS HTML5视频花絮:
- 您应该将所有 WebVTT 嵌入 HLS 播放列表以使用 iOS 内置字幕功能。没有其他办法。
- CSS 样式不起作用。没有文字着色。
- 多字节字符不会被破坏。和平。
希望你好运,如果你掉进了这个字幕地狱:(