10

我正在使用 iOS 上的 AVPlayer 使用“closedCaptionDisplayEnabled 属性”在电影(hls 或 mp4)上显示字幕或副标题,但字幕不显示任何内容。我不知道为什么?

您有什么解决方案可以在电影(hls,mp4)上显示字幕(字幕)吗?

我看到了一些关于应用程序、youtube、netflix、tvguide 和一些用于隐藏字幕的示例。

我想可能是 iphone 上的所有应用程序、netflix 的 ipad、youtube 使用一个文件并在视频中插入字幕

但是,我想使用两个文件(一个文件 hls 或 mp4,一个文件 srt 或 WebVTT)

图像1图像2

感谢您阅读本文!!!!

4

3 回答 3

6

iOS AVPlayer 通过以下两种方式之一支持字幕:使用 CEA-608 标准(CEA-708/ATSC 传统编码的修改版本)将字幕编码到分段的 MPEG2-TS 视频文件中,或者通过以分段 WebVTT 文件,该文件在 HLS 视频的主 m38u 播放列表中指定。WebVTT 标准以与字幕类似的方式支持“软”字幕(可以打开和关闭)(它们都被归类为定时元数据);如果您更喜欢“硬”字幕(它们被“刻录”到视频中),您将在转码过程中将字幕数据提供给您的视频编码器。

有关更多信息,请参阅以下链接:

https://developer.apple.com/library/ios/documentation/networkinginternet/conceptual/streamingmediaguide/UsingHTTPLiveStreaming/UsingHTTPLiveStreaming.html

http://blog.zencoder.com/2012/07/13/closed-captioning-for-web-mobile-and-tv/

于 2014-03-17T22:16:41.707 回答
1

您是否尝试使用 srt 文件作为字幕?因为 iOS 上的 AVPlayer 内置隐藏字幕必须编码为流的一部分(查看 AVPlayer 文档)。搜索可以在视频中插入 srt 的视频编辑软件(注意:这不是作为视频一部分的内置字幕;您可以将它们打开关闭)。

现在,除非您可以这样做,否则唯一的其他解决方案是通过解析 srt 文件并在视频视图顶部显示 UILabel 来实现您自己的字幕。

于 2014-02-14T21:18:14.477 回答
0

一个非常快速和简单的方法是将它加载到 webView 中。

@IBOutlet weak var webView: WKWebView!

override func viewDidLoad() {
    super.viewDidLoad()

    let html = """
        <video playsinline controls width="100%" autoplay src="https://example.com/xyz.mp4">
            <track default src="https://example.com/abc.vtt">
        </video>
    """
    webView.loadHTMLString(html, baseURL: nil)
}
于 2019-08-19T20:15:45.143 回答