javascript - 获取 YouTube 字幕

标签 javascript java video youtube-api video.js

如何以编程方式获取正在播放的 YouTube 视频的字幕?

最初我尝试通过 YouTube API 离线进行, 但是 as it seems YouTube 禁止获取您不是所有者的视频的字幕。

现在我正在尝试在线进行。我没找到 YouTube Player Api字幕的方法,我也尝试使用 videojs 将 YouTube 字幕作为 TextTrack |播放器 the way it could be done for usual videos ,但以下内容不起作用:

<html>
<head>
<link href="//vjs.zencdn.net/4.12/video-js.css" rel="stylesheet">

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script type="text/javascript" src="//vjs.zencdn.net/4.12/video.js"></script>
<script type="text/javascript" src="../lib/youtube.js"></script>
</head>

<body>
<video  id="myvideo"
        class="video-js vjs-default-skin vjs-big-play-centered" 
        controls 
        preload="auto" 
        width="640" 
        height="360">
</video>

<script type="text/javascript">
    var myvideo = videojs(
        "myvideo",
        {
            "techOrder": ["youtube"],
            "src": "https://www.youtube.com/watch?v=jNhtbmXzIaM" 
        },
        function() {
            console.log('Tracks: ' + this.textTracks().length); //zero here :(

            /*var aTextTrack = this.textTracks()[0];
            aTextTrack.on('loaded', function() {
                console.log('here it is');
                cues = aTextTrack.cues();
                console.log('Ready State', aTextTrack.readyState()) 
                console.log('Cues', cues);
            });
            aTextTrack.show();*/
        });
</script>
</body>
</html>

我还尝试了一个丑陋的解决方案来解析 YouTube Player IFrame(其中有一个带有当前字幕行的 div),但由于来源不匹配的安全问题,它不起作用。


有什么方法可以在 java(离线解决方案)或 javascript(在线解决方案)中实现我的目标?

最佳答案

更新:来自谷歌的 URL 停止工作。此方法目前已暂停。

解决方法: 我是如何设法从 youtube 视频中获取字幕的,方法是向这个 url https://video.google.com/timedtext?lang={LANG}&v={videoId} 发出一个简单的请求。

我曾尝试使用 Youtube API v3,但目前它不起作用。当您使用 Youtube API v3 对某个视频发出请求时,您需要上传视频的人批准字幕的下载,否则您将在控制台中看到 403 错误。报错是正常的,服务器没有收到认证所以返返回错。

您可以使用 Youtube API v3 从您自己的视频下载字幕。

与此类似的东西可以完成这项工作。响应将采用 XML 格式:

   $.ajax({
        type: "POST",
        url: "https://video.google.com/timedtext?lang=en&v=5MgBikgcWnY"
    }).done(function (response) {
        console.log(response);
    }).fail(function (response) {
        console.log();
    });

关于javascript - 获取 YouTube 字幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32142656/

相关文章:

javascript - EmberJS 链接助手的问题

php - 谷歌地图实现导致谷歌页面速度问题

javascript - 如何使用自耕农生成器的分支

java - Liferay 链接到具有特定操作的另一个 portlet

python - 通过命令行python批量上传视频到youtube

python - 用于基本视频编辑的最佳 python 工具是什么?

javascript - 在javascript中动态添加属性

java - 如何将 add() 添加到扩展 arraylist 的静态类?

java - 数据驱动设计,引用数据

android - 如何在Android Studio中无缝循环播放视频