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