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 Irwin 在 android 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 中隐藏控件、全屏按钮?