youtube iframe api隐藏字幕问题



昨天6/12/2017花了大部分时间试图弄清楚为什么我在使用YouTube iframe嵌入代码(从共享>嵌入按钮生成)时字幕不起作用。

经过大量的实验,我将问题缩小到已经确定的范围。隐藏字幕无法工作,因为字幕是自动生成的。一旦我手动创建了隐藏字幕,一切似乎都很好。我甚至不需要使用cc_load_policy=1参数。

但是。。。2017年6月13日,我碰巧在处理相同的视频文件,突然间我有了不同的行为。当我从一个普通的YouTube页面播放视频时,我会看到字幕。当我播放来自iframe嵌入式播放器的视频时,我不会。在阅读的基础上,尝试了各种愚蠢的事情来让事情发挥作用。

  • 重新创建了英文字幕(开头手动创建了一个简介)
  • 设置cc_load_policy=1参数
  • 将yt:cc=on设置为标记
  • 其他一些不值得一提的傻事

字幕

注意:在这两种情况下,域都是:http://www.youtube.com我只能在帖子中包含2个链接。

/手表?v=EExO_6PIXk

无字幕:

/嵌入/EExO_6PIXk/嵌入/EExO_6PIXk?cc_load_policy=1

我不知所措。任何指示都将不胜感激。

约翰·

通过小道消息得知,昨天(6/14/17),CC开始工作的YouTube iFrame API发生了一些变化。

通过一些测试,我得到了好坏参半的结果(但正在工作):

1) 截至目前(2017年6月15日),嵌入视频链接现在显示CC按钮,如果您之前启用了隐藏字幕,则会显示CC(在"yt-html5-player-modules::subtitlesModuleData::module enabled"下的本地存储中保持跟踪)。

2) 如果您为(iFrame嵌入的)URL提供了记录的"cc_load_policy=1"参数,则无论本地存储中的值如何,都将显示隐藏字幕。

3) 不起作用的是我加载iframe如下:

<iframe
id="futusign_youtube"
style="visibility: hidden;"
frameborder="0"
src="https://www.youtube.com/embed/XIMLoLxmTDw?enablejsapi=1"
></iframe>

然后尝试在playerVars:中设置CC策略

var player = new window.YT.Player('futusign_youtube', {
playerVars: {
'controls': 0,
'enablejsapi': 1,
'showinfo': 0,
'rel': 0,
'cc_load_policy': 1,
},
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange,
'onError': onPlayerError,
}
});

4) 解决方法是在iFrame的src的URL上设置cc_load_policy=1。

<iframe
id="futusign_youtube"
style="visibility: hidden;"
frameborder="0"
src="https://www.youtube.com/embed/XIMLoLxmTDw?enablejsapi=1&cc_load_policy=1"
></iframe>

我认为这可能是这个问题的重复:

嵌入Youtube字幕默认情况下不工作

其中添加cc_lang_pref=en选项(如果您想要英语)可以解决问题。

最新更新