【问题标题】:How do you display closed caption format of HLS video stream from an m3u8 URL如何从 m3u8 URL 显示 HLS 视频流的隐藏字幕格式
【发布时间】:2017-04-20 07:53:31
【问题描述】:

我正在开发一个 Roku 和 TVOS 应用程序,该应用程序将播放 HLS 视频(VOD 和直播)以及 MP4。根据Roku docs EIA-608 在两者上都受支持,并且也应该在 TVOS 上工作。

我的问题是,给定m3u8 的 URL,我如何知道每个流中使用的隐藏字幕的特定格式(EIA-608、WebVTT 等)?

主要m3u8 的内容(注意第一个流说没有 CC,但确实有):

#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=380000,RESOLUTION=400x228,CODECS="avc1.66.30, mp4a.40.2",CLOSED-CAPTIONS=NONE
http://d.com/i/video/2426832/2426832_,350,640,1000,2000,.mp4.csmil/index_0_av.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=750000,RESOLUTION=640x360,CODECS="avc1.77.30, mp4a.40.2",CLOSED-CAPTIONS=NONE
http://d.com/i/video/2426832/2426832_,350,640,1000,2000,.mp4.csmil/index_1_av.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1044000,RESOLUTION=1280x720,CODECS="avc1.64001f, mp4a.40.2",CLOSED-CAPTIONS=NONE
http://d.com/i/video/2426832/2426832_,350,640,1000,2000,.mp4.csmil/index_2_av.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2127000,RESOLUTION=1280x720,CODECS="avc1.64001f, mp4a.40.2",CLOSED-CAPTIONS=NONE
http://d.com/i/video/2426832/2426832_,350,640,1000,2000,.mp4.csmil/index_3_av.m3u8

第一个流m3u8的内容

#EXTM3U
#EXT-X-TARGETDURATION:4
#EXT-X-ALLOW-CACHE:YES
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:1
#EXTINF:4.000,
http://d.com/i/video/2426832/2426832_,350,640,1000,2000,.mp4.csmil/segment1_0_av.ts
...

我可以使用ffprobe -hide_banner 来显示第一个节目的流有隐藏字幕。例如:

Duration: 00:02:36.76, start: 0.100511, bitrate: 0 kb/s
  Program 0
    Metadata:
      variant_bitrate : 380000
    Stream #0:0: Video: h264 (Constrained Baseline) ([27][0][0][0] / 0x001B), yuv420p, 400x228 [SAR 1:1 DAR 100:57], Closed Captions, 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc
    Metadata:
      variant_bitrate : 380000
    Stream #0:1: Audio: aac (LC) ([15][0][0][0] / 0x000F), 44100 Hz, mono, fltp, 48 kb/s
    Metadata:
      variant_bitrate : 380000

但是,如您所见,节目 0 > 流 0 只是说有 Closed captions - 它没有列出正在使用的隐藏式字幕技术的类型/规格。

如何显示Closed Captions的格式?

【问题讨论】:

    标签: video ffmpeg video-streaming tvos closed-captions


    【解决方案1】:

    WebVTT 是所谓的“边车”或“带外”格式。这意味着字幕位于您必须下载的单独文件中。您可以在 m3u8.xml 中看到此文件的 URL。这里的标题是视频流本身的一部分。在这种情况下,唯一支持的格式是 EIA-608。 ffmpeg 对 608 的支持非常有限。我所知道的处理 608 的最佳工具是 libcaption(完全公开,我写的)。我最近添加了一个 ts2srt 示例程序。公平的警告它仍然有点像贝塔。

    【讨论】:

    • 谢谢。如果我上面的示例是 EIA-608,为什么 Roku 上会显示此视频的字幕,而不是 TVOS? TVOS 声称 EIA-608 兼容。有什么想法吗?
    • 您是否在清单中设置了字幕格式?它记录在苹果网站上。
    • 您有指向您所指的文档页面的链接吗?我们什么也没看到...
    • 真的吗?在谷歌中输入HLS captions 会在第一个结果中显示给我?!
    • 哦,您指的是视频文件本身的清单。以为您指的是 tvos plist 文件 - 它本身就是一个清单文件(类似于 Roku 清单)。我没有制作视频,所以我无法控制它的清单 - 因此我最初的问题是 - 我想从现有的 HLS URL 中确定确切的字幕格式/规范。
    猜你喜欢
    • 2014-06-23
    • 1970-01-01
    • 2019-09-03
    • 2017-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-23
    相关资源
    最近更新 更多