分段 WebVTT 不适用于 Chromecast

Posted

技术标签:

【中文标题】分段 WebVTT 不适用于 Chromecast【英文标题】:Segmented WebVTT not working with Chromecast 【发布时间】:2014-11-04 13:34:20 【问题描述】:

我正在尝试通过 Chromecast 为我的 ios 应用程序提供隐藏式字幕支持。这些文件采用分段 WebVTT 格式(扩展名为 .m3u8)。但视频托管在 CDN 中,隐藏式字幕文件托管在单独的服务器上。这些 WebVTT 文件的 URL 是单独提供的,不是视频主播放列表的一部分。这些字幕适用于原生 iOS 播放器,但不适用于 Chromecast。

我尝试在托管分段 WebVTT 文件的同一台服务器上托管一个普通的 WebVTT(非分段)文件,它工作正常。所以,问题出在分段的 WebVTT 上。

那么,如果将分段的 WebVTT 文件单独托管,是否可以让它们与 Chromecast 一起使用。我正在使用自定义接收器。我是否需要在接收器文件中添加任何内容来支持这一点?

这就是我为隐藏式字幕创建媒体轨道的方式:

GCKMediaTrack *track = [[GCKMediaTrack alloc] initWithIdentifier:1
                                           contentIdentifier:@"https://domain_name/track_name.m3u8"
                                                 contentType:@"text/webvtt"
                                                        type:GCKMediaTrackTypeText
                                                 textSubtype:GCKMediaTextTrackSubtypeCaptions
                                                        name:@"English"
                                                languageCode:@"en-US"
                                                  customData:nil];

如果我们像这样传递一个单独的段,它可以正常工作。

GCKMediaTrack *track = [[GCKMediaTrack alloc] initWithIdentifier:1
                                           contentIdentifier:@"https://domain_name/segments/track_index.webvtt"
                                                 contentType:@"text/webvtt"
                                                        type:GCKMediaTrackTypeText
                                                 textSubtype:GCKMediaTextTrackSubtypeCaptions
                                                        name:@"English"
                                                languageCode:@"en-US"
                                                  customData:nil];

【问题讨论】:

是否为托管 VTT 分段的服务器正确设置了 CORS? 我已经更新了这个问题。接收器应用程序和字幕文件托管在同一个域上,所以我猜不需要 CORS 支持。还验证了各个字幕段是否正常工作。 能否请您在code.google.com/p/google-cast-sdk/issues/list 开一张票并附上信息(如果您还可以附上信息流就太好了)? 问题已发布。这是链接code.google.com/p/google-cast-sdk/issues/…。 【参考方案1】:

在这个问题发布近五年后,我今天也经历了完全相同的事情。

以下字幕播放列表:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-TARGETDURATION:7310
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:7309.400000,
https://undertekst.nrk.no/prod/MSUB19/12/MSUB19121216AW/MIX/MSUB19121216AW-v2.vtt
#EXT-X-DISCONTINUITY
#EXTINF:5891.920000,
https://undertekst.nrk.no/prod/MSUB19/12/MSUB19121216BW/TTV/MSUB19121216BW-v2.vtt
#EXT-X-ENDLIST

使 chromecast 将这两个片段重叠显示。但在 iOS 设备上,它们会与预期的 7309.4 秒偏移,并一个接一个地显示。

【讨论】:

这是对问题的回答,还是因为您有同样的问题而发帖? 你好,我也有同样的问题。我们已经停止向 chromecast 发布包含字幕的 HLS,因为这不起作用,但如果 chromecast 确实根据规范支持分成多个片段的字幕,那当然是最好的。 有同样的问题。就在一周前,谷歌就我报告的一个错误通知了我。 (已经写了一个解决方法,所以没有时间回来验证它是否仍然是 chromecast 问题)。参考:issuetracker.google.com/issues/140680612

以上是关于分段 WebVTT 不适用于 Chromecast的主要内容,如果未能解决你的问题,请参考以下文章

Chromecast RemoteMediaClient 有时不适用于“播放”和“暂停”等某些操作

Chromecast 支持哪些字幕格式?

ChromeCast 解析分段 TTML

应用找不到 chromecast

powershell 用于将WebVTT转换为SRT的Windows PowerShell脚本

如何获取 Chromecast Sender SDK 的生产版本以包含在我的应用程序中