1

いらっしゃいませ、

YouTubeビデオを可能な限り最高の形式でダウンロードできるYouTube APIを探しています。

数年前、URL には「fmt=22」や「fmt=6」などの品質に関する情報が含まれていたため、この作業はより単純でした。現在は将来ライブになり、その情報はプレーヤーに埋め込まれます。

今はもっと複雑です... Googleはキャッシュサーバーを使用しており、get_videoは機能しません。

例を探してください: http://www.youtube.com/watch?v=XIz-MmKeoCs (これは HD の単なる例であり、音楽にコメントを付けないでください)

現在、古い PHPtube クラス (2007 年) を使用しています。phpclasses.org/browse/package/3966.html flv 経由で最低品質のファイルをダウンロードすることのみを許可します。

私の質問は、可能な限り最高のダウンロードを許可するクラスを持っている人はいますか?

ビデオ ID を指定します -> XIz-MmKeoCs ダウンロード可能な品質を確認する必要があります。入手方法は今のところわかりませんが…

ダウンロードリンクを提供します。(もちろん、私は IP で使用されるセキュリティについて知っており、file_contents を使用してサーバーにファイルをダウンロードしたいのですが)、そのダウンロード リンクを取得することだけで問題が発生しました。

私はどんな助けにも大いに役立ちます...

4

2 に答える 2

2

この投稿をガイドラインとして使用してください: youtube get_video not working

その例の $ytarr['fmt_url_map'] を使用すると、explode() でさまざまな利用可能な形式に変換できます。

$fmt_array = array('5','34','35');    
$fmt_available = explode(',', $ytarr['fmt_stream_map']);
foreach ($fmt_array as $val) {
    foreach ($fmt_available as $fmtstr) {
        if (strpos($fmtstr,"$val|") !== false){
            $format = explode('|', $fmtstr);
            break 2;
        }
    }
}
echo $format['1'];

$fmt_array は、必要なすべての形式を優先順に保持します。この例では、最初にフォーマット 5 への直接リンクを出力し、5 が使用できない場合は 34 を出力し、以降も同様です。その配列を最初に最高のフォーマットをリストするように変更したいことは明らかです。

于 2011-03-01T10:46:43.520 に答える
0

動画ページを取得する場合は、解析して &fmt_url_map= を探します。この後の部分は、フォーマット ID => ダウンロード リンクのマップです。少し解析する必要がありますが、見てみるとそれほど複雑ではありません。

問題は、これを自分のマシンで開発している場合は動作しますが、ダウンロード URL には、ビデオ ページをプルしたマシンにのみ適用される何らかの署名があるため、動作しないことです。この場合、これはローカル マシンと一致しません。

于 2010-04-11T20:52:15.650 に答える