命令分析:
grep命令:匹配查找文件里符合條件的字符串,這里查找Duration字段
cut:以空格為分割符,查詢第四個元素,cut是很好的切割命令
下面附幾個cut的實例:
#ffmpeg -i test.flv
輸入下面信息:
說明:Cut是文本截取命令:以空格作為分隔符,截取第5位以后的字段,
如果想要截?。?第5個元素和第8個元素,應該這樣寫:
ffmpeg -i test.flv 2>&1 | grep 'creationdate' | cut -d ' ' -f 5,8
②獲得視頻尺寸大小
使用cut截取以空格為分隔符的第十個元素也是視頻尺寸
ffmpeg -i test.flv 2>&1 | grep 'Video' | cut -d ' ' -f 10 | sed s/,//
sed命令:sed ‘s/要替換的字符串/新字符串/g'
例如:sed s/,//:表示:用空白符替換','號
下面是利用獲得視頻縮略圖和視頻總長度時間的代碼: 
復制代碼 代碼如下:
 
<?php 
/* 
* 獲得視頻文件的縮略圖和視頻長度 
*需要ffmpeg支持 
* @author PHP淮北 
* @date 2011-09-14 
* @copyright PHP淮北 
*/ 
//獲得視頻文件的總長度時間和創建時間 
function getTime($file){ 
$vtime = exec("ffmpeg -i ".$file." 2>&1 | grep 'Duration' | cut -d ' ' -f 4 | sed s/,//");//總長度 
$ctime = date("Y-m-d H:i:s",filectime($file));//創建時間 
//$duration = explode(":",$time); 
// $duration_in_seconds = $duration[0]*3600 + $duration[1]*60+ round($duration[2]);//轉化為秒 
return array('vtime'=>$vtime, 
'ctime'=>$ctime 
); 
} 
//獲得視頻文件的縮略圖 
function getVideoCover($file,$time) { 
if(empty($time))$time = '1';//默認截取第一秒第一幀 
$strlen = strlen($file); 
$videoCover = substr($file,0,$strlen-4); 
$videoCoverName = $videoCover.'.jpg';//縮略圖命名 
exec("ffmpeg -i ".$file." -y -f mjpeg -ss ".$time." -t 0.001 -s 320x240 ".$videoCoverName."",$out,$status); 
if($status == 0)return $videoCoverName; 
elseif ($status == 1)return FALSE; 
} 
//調用方法 
$duration = getTime('/usr/local/apache/htdocs/test.flv'); 
echo $duration['vtime'].'<br/>';//總長度 
echo $duration['ctime'].'<br/>';//創建時間 
$videoCoverName = getVideoCover('/usr/local/apache/htdocs/test.flv', 6); 
echo $videoCoverName;//獲得縮略圖名稱 
?> 
測試效果:
視頻長度是:55秒43
視頻創建時間;2011-9-13
視頻縮略圖:test.jpg
-----------------------------測試完全ok
補充:如果想獲得視頻文件的大小可以使用:
filesize()filesize() 函數用于取得文件大小默認單位是:bytes,成功返回文件大小的字節數,否則返回 FALSE 。
新聞熱點
疑難解答