我在从YouTube视频中提取自动字幕时遇到问题.
我尝试使用http://video.google.com/timedtext?type=track&v=3wszM2SA12E&name=Automatic&lang=en方法,但该方法仅适用于那些已命名曲目的视频.例如,这个没有任何命名的轨道(只有自动标题)并且没有加载:rrkrvAUbU9Y
有几个网络应用程序可以做到(如http://www.serpsite.com/youtube-subtitles-download-tool/和http://mo.dbxdb.com/),但我需要一个脚本,因为我想用它进行研究.
任何人都有任何想法得到这个的正确方法是什么?YouTube的API有关于字幕的内容,但仅针对注册用户,而上述应用适用于所有视频,我怀疑他们只是从页面中捕获html代码(虽然这也是可能的).一定有办法......请帮忙!
我已经开始使用java客户端库在Android设备上使用YouTube api的v3.我感兴趣的一些视频有我可以在网络界面上访问的成绩单(如教育视频).有没有办法使用v3 apis访问成绩单(如果存在)?
谢谢
如何以编程方式获取正在播放的YouTube视频的字幕?
最初,我尝试通过YouTube API离线进行此操作,但似乎 YouTube禁止获取您不是所有者的视频的字幕。
现在,我正在尝试在线进行。我没有找到用于字幕的YouTube Player Api方法,我也试图通过videojs播放器的方式将 YouTube字幕作为TextTrack与TextTrack一起使用,但是以下方法不起作用:
<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', …Run Code Online (Sandbox Code Playgroud) 我已经构建了一个能够阅读任何 Youtube 视频成绩单 (gapi.client.youtube.captions.download) 的 javascript 代码。auth 2.0 工作正常,我在本地网络服务器上运行我的应用程序一切正常,问题是当我运行请求时出现错误 403:cb=gapi.loaded_0:164 GET https://content.googleapis。 com/youtube/v3/captions/My_API_Key 403 我在 StackOverflow 中没有找到任何解决方案......知道吗?
这是我的js文件:
const CLIENT_ID = 'My_Client_ID';
const DISCOVERY_DOCS = ["https://www.googleapis.com/discovery/v1/apis/youtube/v3/rest"];
const SCOPES = 'https://www.googleapis.com/auth/youtube.readonly';
const authorizeButton = document.getElementById('enter-button');
const signoutButton = document.getElementById('exit-button');
const content = document.getElementById('content');
// default youtube channel
const defaultChannel = 'googledevelopers';
// Load auth2 library
function handleClientLoad(){
gapi.load('client:auth2', initClient);
}
// Init API client library and set up sing in listeners
function initClient(){
gapi.client.init({
discoveryDocs: DISCOVERY_DOCS,
clientId: CLIENT_ID,
scope: SCOPES
}).then(() …Run Code Online (Sandbox Code Playgroud) javascript youtube google-api-js-client google-apis-explorer