動画 (FLV) ファイルへの実際のホット リンクではなく、埋め込みプレーヤーへのリンクしかないので、その取得方法がわからないことを前提としています。
方法は次のとおりです。
リンクの末尾に数字があり、これは1606356
です。その番号が動画 ID で、再生したい動画を表します。これで動画 ID が得られました。元のページを読み込む必要があります。このページは、ユーザーが元のサイトから (埋め込みプレーヤーではなく) 動画を視聴しようとしたときにアクセスする場所です。元のページのリンクは次のとおりhttp://www.xvideos.com/video1606356
です。そのリンクの最後にも同じ動画 ID が表示されますか?
元のページをロードする必要があるのは、実際にはいくつかのフラッシュ変数が含まれているためです。そのうちの 1 つに、特定のビデオへの FLV ホット リンクがあります。そのため、元のページの HTML からそのホットリンクを削除する必要があります。
コーディングしよう!
//load the original page
$originalPage = file_get_contents( 'http://www.xvideos dot com/video1606356' );
//strip the FLV link
if ( !preg_match( '|flv_url=(.*)&url_bigthumb|', $originalPage , $match ) )
{
echo "Sorry, I could not find the hot link.";
//bye
exit();
}
$hotLink = $match[1];
//decode the hotlink (because it's URL encoded)
$hotLink = urldecode( $hotLink );
これでホットリンクができました!次に、flv
ファイルをダウンロードしてローカルに保存し、使用できるようにする必要がありますfopen()
。これにより速度が低下しますが、サーバーにセキュリティホールを開く必要がないことも意味します.
//download the flv and store it in a folder called 'videos'
file_put_contents( 'videos/myVideoFileName.flv' , file_get_contents( $hotLink ) );
これで、flv ビデオのコピーがダウンロードされました。ここで、長さを取得するために、ここから盗んだメソッドを使用する必要があります。
$flv = fopen("videos/myVideoFileName.flv", "rb");
fseek($flv, -4, SEEK_END);
$arr = unpack('N', fread($flv, 4));
$last_tag_offset = $arr[1];
fseek($flv, -($last_tag_offset + 4), SEEK_END);
fseek($flv, 4, SEEK_CUR);
$t0 = fread($flv, 3);
$t1 = fread($flv, 1);
$arr = unpack('N', $t1 . $t0);
$milliseconds_duration = $arr[1];
そして、あなたはそれを持っています。
最後に、あなたがここでやっていることは、XVIDEOS が受け入れられないと私が思うことです (ホットリンク泥棒が好きな人はいません)。上記のコード/コンテンツのいずれかを使用して、あなたが行うことについて、私は責任を負いません。