PHP提取链接批量下载

2014年年初的时候,曾经受委托完成一个视频网站,那时最大的技术障碍是一个大视频比如500MB,在一个带宽环境不怎么快的服务器(比如1Mbps)上提供播放的问题。

这里会遇到两种情况,第一种情况是客户机加载完整个视频,然后播放。第二种情况是客户机正在加载这个视频,视频卡在页面上,无法播放。

于是,我就研究了一下目前几大主流的视频网站的播放技术,发觉绝大多数网站都使用了一种视频切片的技术,把大视频切成小片,然后分段加载进来。因为小片的视频是完全可以在几秒内全部加载的,所以如果用户移动进度条,是可以实现“移到哪里就可以马上看哪里”。

当然,后面因为实力有限,并没有做视频分片,而是用了Flash播放器把项目“马马虎虎”应付了,具体技术细节也并不清楚。

今天,我在网上看到了一个很好的视频,用地址解析后发现视频被分割成了300多片,于是我用PHP的正则表达式批量下载了链接地址

$path="*";

$str='';
if(file_exists($path)){
	$str=file_get_contents($path);
}

$a=[];
preg_match_all('/https:\S*.mp4/',$str,$a);
var_dump($a);

这里已经把链接地址都存放进了数组$a

然后使用file_put_contents函数下载这个URL资源

for($i=0;$i<count($a[0]);++$i){
	$content = file_get_contents($a[0][$i]);
	file_put_contents('download/'.$i.'.mp4',$content);
}

把视频都下载到一个文件夹后,就开始合并,合并只需要用最简单的命令行工具

copy /b *.mp4 new.mp4

 

posted @ 2018-07-19 21:16  编程老头  阅读(1639)  评论(0编辑  收藏  举报