Jor*_*Har 0 php video duration function
我需要一个PHP函数来确定xvideos dot com [NSFW]视频的持续时间,例如:
$video = "http://flashservice.xvideos dot com/embedframe/1606356";
function duration ($video);
echo duration;
Run Code Online (Sandbox Code Playgroud)
这将返回11:49.
请注意:该网站不适合工作.这是一个色情网站.如果您在工作,请谨慎访问.
小智 5
好吧,你只有一个链接到嵌入式播放器,而不是视频(FLV)文件的实际热链接,所以我假设你不知道如何得到它.
这是如何做:
你的链接最后有一个数字,即1606356.该号码是视频ID,因此它代表您要播放的视频.现在我们有视频ID,我们需要加载原始页面,用户在尝试从原始网站(而不是通过嵌入式播放器)观看视频时会访问该页面.原始页面链接是:http://www.xvideos.com/video1606356.也可以在该链接的末尾看到相同的视频ID?
需要加载原始页面的原因实际上是因为它包含一些闪存变量,其中一个是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 );
Run Code Online (Sandbox Code Playgroud)
所以我们现在有了热门链接!接下来,我们需要下载flv文件并将其存储在本地,以便我们可以使用fopen()它.这会减慢速度,但这也意味着我们不必在服务器上打开安全漏洞.
//download the flv and store it in a folder called 'videos'
file_put_contents( 'videos/myVideoFileName.flv' , file_get_contents( $hotLink ) );
Run Code Online (Sandbox Code Playgroud)
所以我们现在有一个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];
Run Code Online (Sandbox Code Playgroud)
你有它.
最后,你在这里做的是我不认为XVIDEOS会好的事情(没有人喜欢热门小偷).使用上述任何代码/内容,我对您所做的任何事情概不负责.