iframe - YouTube:args强制自动生成字幕

标签 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" 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>

请参阅this jsFiddle中的此代码。

在使用setOption函数之前,您必须等待onApiChange事件。 (请参阅:https://developers.google.com/youtube/iframe_api_reference#Events)根据文档,仅支持'fontSize'和'reload'参数。但是,更改字幕轨道也可以,并且副作用是打开字幕。我只尝试了'en'languageCode,当然,如果有可用的话,它将更改为正常的英语字幕轨道,但是会在没有预定义的轨道的情况下显示自动生成的英语字幕。

(您也可以使用getOption方法查询 Activity 的字幕轨道,但是如果使用自动生成的字幕,它将不返回任何内容。)

关于iframe - YouTube:args强制自动生成字幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49325716/

相关文章:

youtube - 如何在 youtube-dl 中设置默认下载位置

javascript - youtube 视频结束时如何显示 Youtube 视频的最后一个屏幕?

google-apps-script - 使用 Google Apps 脚本中的 YouTube Data API v3 从播放列表中删除视频

javascript - 怎样才能继承 parent 的风格呢?

javascript - 触发 iframe 上的点击不起作用

javascript - 如何使用 Javascript 删除嵌套框架和 iframe 的滚动条

java - 使用 Java 将视频上传到 Youtube

iframe - Chrome 扩展 : create tab from within an iframe in popup

oauth - 如何手动获取Google OAuth token ?

YouTube wmode=opaque 在 IE9(或任何其他 IE)中不起作用