【问题标题】:youtube embed - force subtitles in specific language with defaultyoutube embed - 强制使用特定语言的默认字幕
【发布时间】:2012-09-23 00:15:36
【问题描述】:

我正在嵌入带有特定语言字幕的 youtube 视频(在我的例子中是希伯来语)。 我正在使用:

hl=He&cc_load_policy=1

显示希伯来语字幕,效果很好。

但是,如果我的语言没有字幕,我希望将英语字幕(如果有的话)作为默认设置。有办法强制吗?

【问题讨论】:

  • 字幕可以自动翻译,我如何加载视频并自动将英文字幕翻译成另一种语言,在我的情况下是葡萄牙语!?

标签: youtube-api


【解决方案1】:

您可以通过使用cc_load_policycc_lang_pref 选项来强制字幕和语言

网址:

http://www.youtube.com/embed/M7lc1UVf-VE?cc_load_policy=1&cc_lang_pref=en

API:

var ytPlayer = new YT.Player(
    ...
    playerVars: {
        cc_load_policy: 1,
        cc_lang_pref: 'en'
    },
    ....
});

致谢:https://webapps.stackexchange.com/questions/27669/is-there-any-way-to-force-subtitles-in-a-youtube-video

【讨论】:

  • 谢谢 - cc_lang_pref 对我来说是新的。我检查一下。
  • 现在非常详细和最准确(2015-05-18),这个答案应该被赞成。如果你想强制字幕不显示I found a way to deal with it 但它非常有限。
  • 它似乎不再起作用了。即使它会起作用,我也在寻找一种开始播放“自动生成和翻译”字幕的方法。用你的方法我不知道该怎么做。
  • 示例 URL 的道具,也是 API 参数的概述
【解决方案2】:

我在他们的 api 文档中的任何地方都没有找到这个,但是使用您的 youtube 播放器对象,您应该能够执行以下操作以将其更改为英文字幕:

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

你也可以这样做:

var module;
if (testplayer.getOptions().indexOf("cc") !== -1) {
    module = "cc";
} else if (testplayer.getOptions().indexOf("captions") != -1) {{
    module = "captions";
}
var tracklist = testplayer.getOption(module, "tracklist");

// then iterate through the tracklist to see if "he" or "en" is there.

你有 cc_load_policy=1 但你也可以通过 js 开启它:

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

【讨论】:

    【解决方案3】:

    我认为完全省略 hl= 会更好。 (它实际上不是我们的officially supported Player parameters 之一。)字幕将默认为视频观看者的语言偏好,我的假设是如果没有观看者首选语言的字幕,它将使用英语。

    【讨论】:

    • 谢谢,但是 - 当我删除“hl”标签时,即使我的首选语言是希伯来语并且有可用的希伯来语字幕,我也会得到英文字幕。
    • 那对我来说听起来像是一个错误。您可以使用code.google.com/p/gdata-issues/issues/… 在那里打开一个错误以便我们跟踪它吗?你的语言偏好设置在哪里——我认为根据你是否有一个与你的 YouTube 帐户相关联的 Google+ 帐户,位置会有所不同。
    • 已打开 - code.google.com/p/gdata-issues/issues/detail?id=3046 我提到了错误描述中的语言设置
    【解决方案4】:

    我发现的唯一方法是更改​​ URI

    https://www.youtube.com/watch?v=2s3aJfRr9gE
    

    到这个模式

    "https://www.youtube-nocookie.com/embed/" + video_id + "?hl=" lang_code
    

    在 bash/Linux 上,您只需复制具有该结构的 URI,然后运行此命令(西班牙代码硬编码)来转换剪贴板内容(您可以创建别名):

    xclip -selection c -o | echo "$(cat -)?&hl=es-419" | sed "s|youtube.com/watch?v=|youtube-nocookie.com/embed/|1" | xclip -selection c
    

    您可以列出可用的字幕ISO 639-1 language codesyoutube-dl

    youtube-dl --list-subs "{video_id or url}"
    

    唯一的缺点是视频会覆盖整个屏幕......这可能是停止拖延相关视频的好方法:)

    【讨论】:

      猜你喜欢
      • 2019-08-04
      • 1970-01-01
      • 1970-01-01
      • 2016-12-14
      • 1970-01-01
      • 2013-04-03
      相关资源
      最近更新 更多