php中獲得視頻時間總長度的另一種方法

來源:互聯網
上載者:User

當時獲得視頻長度是採用網上的通用的獲得flv視頻檔案長度的方法,但是這個方法只對flv視頻支援,其他格式的視頻擷取到的值就很差了,
下面在介紹一種:利用ffmpeg傳回值Duration的方法,原來也想過用,但是沒有解決,現在可以了,由於ffmpeg支援很多種格式的視頻,所以這個具體一定的通用性。
ffmpeg獲得視頻時間長度的Duration的linux命令:
ffmpeg -i test.flv 2>&1 | grep 'Duration' | cut -d ' ' -f 4 | sed s/,//
可以獲得Duration;看

命令分析:

grep命令:匹配尋找檔案裡合格字串,這裡尋找Duration欄位

cut:以空格為分割符,查詢第四個元素,cut是很好的切割命令

下面附幾個cut的執行個體:

#ffmpeg -i test.flv

輸入下面資訊:

①獲得creationdate:檔案建立時間

ffmpeg -i test.flv 2>&1 | grep 'creationdate' | cut -d ' ' -f 5-

說明: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 。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.