23

Javaクライアントライブラリを使用して、AndroidデバイスでYouTubeAPIのv3を使い始めました。私が興味を持っているいくつかのビデオには、Webインターフェイスでアクセスできるトランスクリプトがあります(教育用ビデオなど)。v3 APIを使用して、トランスクリプトが存在する場合はそれにアクセスする方法はありますか?

ありがとう

4

5 に答える 5

39

私はこれと同じ問題を抱えていました...そして、これに到達するまで、解決策を探すのに1週間ほど費やしました:

https://stackoverflow.com/questions/10036796/how-to-extract-subtitles-from-youtube-videos

http://video.google.com/timedtext?lang= {LANG}&v={VIDEOID}で GET リクエストを実行するだけです。api/oauth/etc は必要ありません。これにアクセスします。

于 2014-02-04T10:49:08.353 に答える
9

私は間違っているかもしれませんが、APIのv3を介してキャプショントラックを取得するための文書化された方法はまだないと思います。ただし、oAuth2を使用して認証している場合、認証はAPIのv2にも適しているため、このフィードをすばやく呼び出すことができます。

http://gdata.youtube.com/feeds/api/videos/[VIDEOID]/captiondata/[CAPTION TRACKID]

必要なデータを取得します。APIのv2で可能なキャプショントラックIDのリストを取得するには、次のフィードにアクセスします。

https://gdata.youtube.com/feeds/api/videos/[VIDEOID]/captions

このフィードリクエストは、言語、max-resultsなど、いくつかのオプションのパラメータも受け入れます。詳細については、キャプショントラックリストの返される形式を示すサンプルとともに、https://developers.google.comのドキュメントを参照してください。 /youtube/2.0/developers_guide_protocol_captions#Retrieve_Caption_Set

于 2012-12-28T06:49:33.710 に答える
6

APIを使用せずに、YouTubeビデオからすべてのキャプショントラックを取得する、私が書いたコードを次に示します。動画の URL を$video_url変数に挿入するだけです。

// get video id from url
$video_url = 'https://www.youtube.com/watch?v=kYX87kkyubk';
preg_match("#(?<=v=)[a-zA-Z0-9-]+(?=&)|(?<=v\/)[^&\n]+(?=\?)|(?<=v=)[^&\n]+|(?<=youtu.be/)[^&\n]+#", $video_url, $matches);

// get video info from id
$video_id = $matches[0];
$video_info = file_get_contents('http://www.youtube.com/get_video_info?&video_id='.$video_id);
parse_str($video_info, $video_info_array);

if (isset($video_info_array['caption_tracks'])) {
    $tracks = explode(',', $video_info_array['caption_tracks']);

    // print info for each track (including url to track content)
    foreach ($tracks as $track) {
        parse_str($track, $output);
        print_r($output);
    }
}
于 2016-09-29T04:30:23.560 に答える