• 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
    

    本文为博主原创文章,转载请在明显位置注明出处: http://www.cnblogs.com/sweng

    本作品采用知识共享署名-非商业性使用-禁止演绎 3.0 未本地化版本许可协议进行许可。

  • 相关阅读:
    寻找回文数
    【C/C++语言入门篇】 位运算
    怎样判断输入是否结束
    命名那个数字
    Broken Necklace
    C#打造邮件接受器VS2005版
    C#应用程序打包时自动安装MSDE
    SQL6.5到2005发布的版本号搜集整理
    SQL无限分类存储过程整理2
    ASP.NET调用SWF代码文件
  • 原文地址:https://www.cnblogs.com/sweng/p/9338403.html
Copyright © 2020-2023  润新知