Youtube API - 如何使用自定义控件打开/关闭字幕,更改语言?

Posted

技术标签:

【中文标题】Youtube API - 如何使用自定义控件打开/关闭字幕,更改语言?【英文标题】:Youtube API - how to use custom controls to turn captions on/off, change language? 【发布时间】:2012-11-24 00:28:21 【问题描述】:

我有一个带有自定义 html 控件的 youtube 播放器,我想添加一个按钮来打开/关闭隐藏式字幕并切换语言。任何人都有使用 JS 或 iframe API 来执行此操作的经验?我知道将 cc_load_policy=1 附加到 url 将强制显示标题,但我正在使用自定义控件并想添加一个切换按钮。我尝试使用 loadVideoByUrl 方法并附加 cc 参数,但这不起作用似乎不起作用。

我也只能使用 iframe 方法让播放器以用户的默认语言显示字幕,而不是 swf 对象方法。 Swf 对象始终默认为英语。如果有人对此也有任何见解,请告诉我!

【问题讨论】:

【参考方案1】:

我在他们的 api 文档中没有找到这个,但是使用你的 youtube 播放器对象你应该能够做到:

player.loadModule("captions");  //Works for html5 ignored by AS3
player.loadModule("cc");  //Works for AS3 ignored by html5

关闭它:

player.unloadModule("captions");  //Works for html5 ignored by AS3
player.unloadModule("cc");  //Works for AS3 ignored by html5

在加载模块时更改哪种语言:

player.setOption("captions", "track", "languageCode": "es");  //Works for html5 ignored by AS3
player.setOption("cc", "track", "languageCode": "es");  //Works for AS3 ignored by html5

【讨论】:

对我来说就像一个魅力。 如果这不起作用,我建议在自定义 onStateChange 事件中调用这些方法。在尝试在其他地方调用它(比如在 onReady 内部)之后,我不得不强制禁用字幕并在该事件中使用 unloadModule() 对我有用。 对于那些想知道的人,它确实有效,但不适用于自动生成的潜艇。最好在视频开始播放后调用它。 tracks = ytPlayer.getOption('captions', 'tracklist'); 可以为您提供正确的字幕列表,但不能为您提供自动生成的字幕 这应该是公认的答案!在onReady()onApiChange() 上使用时它不起作用,但是当我将它移到onStateChange() 时,如前所述,它终于起作用了。【参考方案2】:

function onPlayerStateChange(event) 
	
  try
  
    player.unloadModule("captions");  
    player.unloadModule("cc"); 
  
  catch (exception)
  
    LoggerUtil.logError("Error when trying to unloadModule youtube captions: " + exception);
  
  // The rest of your function

感谢 James Irwinandroid 4.4.2 和 android 6.0.1 上进行测试时,这两行代码对我有用

player.unloadModule("captions");
player.unloadModule("cc");

您应该将这两行放在onPlayerStateChange 函数中。

【讨论】:

【参考方案3】:

很遗憾,我们目前没有对字幕的完整 API 支持。您可以将自己添加到此外部功能请求中,以便在此更改时收到通知:https://code.google.com/p/gdata-issues/issues/detail?id=444

(尽管该功能请求的年代久远,但仍有人积极寻求增加支持。)

【讨论】:

以上是关于Youtube API - 如何使用自定义控件打开/关闭字幕,更改语言?的主要内容,如果未能解决你的问题,请参考以下文章

在使用 YouTube Live Streaming API 时使用基本摄取或避免重复的自定义摄取

如何使用 Youtube API 为 Youtube 视频添加字幕?

如何在 Youtube Player android API 中隐藏控件、全屏按钮?

YouTube JS API 自定义播放器跳过/下一个视频功能

自定义静音/取消静音按钮Youtube API

自定义静音/取消静音按钮 Youtube API