YouTube iFrame API不支持自动生成的字幕

时间:2017-03-20 19:29:41

标签: youtube youtube-api auto-generate youtube-iframe-api captions

YouTube iFrame API的字幕功能不适用于自动生成的字幕。

是否有解决此漏洞的计划,还是有其他方法可以在iFrame API中启用自动生成的字幕?

2 个答案:

答案 0 :(得分:0)

我有同样的需求 - 越来越多的视频通过自动广告系列发布,如果它们也可以在iframe中支持

答案 1 :(得分:0)

一如既往,有办法。

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

const tag = document.createElement('script')
tag.src = 'https://www.youtube.com/iframe_api'
const 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'})
  }  
}

const onReady = _ => {   
  player.playVideo()
}

function onYouTubePlayerAPIReady() {
  player = new YT.Player('player', {
    height: '360',
    width: '640',
    videoId: 'q2C0EO0zzAY',
    playerVars: {
      cc_load_policy: 1
    },
    events: {
      onReady,
      onApiChange
    }
  })
}

工作jsFiddle is here

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

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