Iframe Youtube:args强制自动生成字幕

Iframe Youtube:args强制自动生成字幕,iframe,youtube,youtube-api,youtube-iframe-api,Iframe,Youtube,Youtube Api,Youtube Iframe Api,如果我的视频有英文字幕,我可以强制用如下代码显示: hl=en&cc_lang_pref=en&cc_load_policy=1 因此,完整的代码是: <iframe width="560" height="315" src="https://www.youtube.com/embed/3I3Rjw_4Ucw?hl=en&cc_lang_pref=en&cc_load_policy=1" frameborder="0" gestu

如果我的视频有英文字幕,我可以强制用如下代码显示:

hl=en&cc_lang_pref=en&cc_load_policy=1
因此,完整的代码是:

<iframe 
    width="560" height="315"
    src="https://www.youtube.com/embed/3I3Rjw_4Ucw?hl=en&cc_lang_pref=en&cc_load_policy=1"
    frameborder="0" gesture="media"
    allow="encrypted-media" allowfullscreen>
</iframe>


然而,如果视频没有字幕,它似乎不起作用。在这种情况下,我想强制显示从Youtube自动生成的字幕。有可能吗?

没有官方或文件规定的方法强制在嵌入式视频中自动生成字幕。但是,现在有一个使用setOption方法的解决方案可以工作,但不能保证它将来会工作,因为这是一个未记录的方法调用:

<iframe id="existing-iframe"
        width="640" height="360"
        src="https://www.youtube.com/embed/q2C0EO0zzAY?enablejsapi=1&cc_load_policy=1"
        frameborder="0"
        style="border: solid 4px #37474F"
></iframe>

<script type="text/javascript">
  var tag = document.createElement('script');
  tag.src = 'https://www.youtube.com/iframe_api';
  var firstScriptTag = document.getElementsByTagName('script')[0];
  firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

  let player

  const onApiChange = _ => {   
    if (typeof player.setOption === 'function') {
      player.setOption('captions', 'track', {languageCode: 'en'}) // undocumented call
    }  
  }

  function onYouTubeIframeAPIReady() {
    player = new YT.Player('existing-iframe', {events: {onApiChange}})
  }
</script>

var tag=document.createElement('script');
tag.src=https://www.youtube.com/iframe_api';
var firstScriptTag=document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(标记,firstScriptTag);
让玩家
const onApiChange=u=>{
if(type of player.setOption==‘function’){
player.setOption('caption','track',{languageCode:'en'})//未记录的调用
}  
}
函数onyoutubeiframeapiredy(){
player=new YT.player('existing-iframe',{events:{onApiChange}})
}
请参阅在中工作的代码

在使用setOption函数之前,您必须等待onApiChange事件。(请参阅:)根据文档,仅支持“fontSize”和“reload”参数。但是,更改字幕轨迹也会起作用,它会打开字幕作为副作用。我只尝试了“en”语言代码,当然,如果有可用的话,这将更改为正常的英文字幕轨道,但在没有预定义轨道的情况下,将显示自动生成的英文字幕


(您也可以使用getOption方法查询活动字幕跟踪,但如果使用自动生成的字幕,则不会返回任何内容。)

可能重复@noogui感谢您共享该url,但这似乎是另一回事。这篇文章是为了提取字幕,而这篇文章是为了显示字幕。我在这里问了同样的问题:同样的需要,这不起作用:不起作用,这不是那篇文章的副本。这篇文章是为了从视频中提取字幕,这篇文章只是为了播放它们。