php中獲得視頻時(shí)間總長(zhǎng)度的另一種方法
下面在介紹一種:利用ffmpeg返回值Duration的方法,原來(lái)也想過(guò)用,但是沒(méi)有解決,現(xiàn)在可以了,由于ffmpeg支持很多種格式的視頻,所以這個(gè)具體一定的通用性。
ffmpeg獲得視頻時(shí)間長(zhǎng)度的Duration的linux命令:
ffmpeg -i test.flv 2>&1 | grep 'Duration' | cut -d ' ' -f 4 | sed s/,//
可以獲得Duration;看下圖

命令分析:
grep命令:匹配查找文件里符合條件的字符串,這里查找Duration字段
cut:以空格為分割符,查詢(xún)第四個(gè)元素,cut是很好的切割命令
下面附幾個(gè)cut的實(shí)例:
#ffmpeg -i test.flv
輸入下面信息:
①獲得creationdate:文件創(chuàng)建時(shí)間
ffmpeg -i test.flv 2>&1 | grep 'creationdate' | cut -d ' ' -f 5-
說(shuō)明:Cut是文本截取命令:以空格作為分隔符,截取第5位以后的字段,
如果想要截取: 第5個(gè)元素和第8個(gè)元素,應(yīng)該這樣寫(xiě):
ffmpeg -i test.flv 2>&1 | grep 'creationdate' | cut -d ' ' -f 5,8
②獲得視頻尺寸大小
使用cut截取以空格為分隔符的第十個(gè)元素也是視頻尺寸
ffmpeg -i test.flv 2>&1 | grep 'Video' | cut -d ' ' -f 10 | sed s/,//
sed命令:sed ‘s/要替換的字符串/新字符串/g'
例如:sed s/,//:表示:用空白符替換','號(hào)
下面是利用獲得視頻縮略圖和視頻總長(zhǎng)度時(shí)間的代碼:
<?php
/*
* 獲得視頻文件的縮略圖和視頻長(zhǎng)度
*需要ffmpeg支持
* @author PHP淮北
* @date 2011-09-14
* @copyright PHP淮北
*/
//獲得視頻文件的總長(zhǎng)度時(shí)間和創(chuàng)建時(shí)間
function getTime($file){
$vtime = exec("ffmpeg -i ".$file." 2>&1 | grep 'Duration' | cut -d ' ' -f 4 | sed s/,//");//總長(zhǎng)度
$ctime = date("Y-m-d H:i:s",filectime($file));//創(chuàng)建時(shí)間
//$duration = explode(":",$time);
// $duration_in_seconds = $duration[0]*3600 + $duration[1]*60+ round($duration[2]);//轉(zhuǎn)化為秒
return array('vtime'=>$vtime,
'ctime'=>$ctime
);
}
//獲得視頻文件的縮略圖
function getVideoCover($file,$time) {
if(empty($time))$time = '1';//默認(rèn)截取第一秒第一幀
$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;
}
//調(diào)用方法
$duration = getTime('/usr/local/apache/htdocs/test.flv');
echo $duration['vtime'].'<br/>';//總長(zhǎng)度
echo $duration['ctime'].'<br/>';//創(chuàng)建時(shí)間
$videoCoverName = getVideoCover('/usr/local/apache/htdocs/test.flv', 6);
echo $videoCoverName;//獲得縮略圖名稱(chēng)
?>
測(cè)試效果:
視頻長(zhǎng)度是:55秒43
視頻創(chuàng)建時(shí)間;2011-9-13
視頻縮略圖:test.jpg
-----------------------------測(cè)試完全ok
補(bǔ)充:如果想獲得視頻文件的大小可以使用:
filesize()
filesize() 函數(shù)用于取得文件大小默認(rèn)單位是:bytes,成功返回文件大小的字節(jié)數(shù),否則返回 FALSE 。
相關(guān)文章
php設(shè)計(jì)模式 Composite (組合模式)
將對(duì)象組合成樹(shù)形結(jié)構(gòu)以表示"部分-整體"的層次結(jié)構(gòu),使得客戶(hù)對(duì)單個(gè)對(duì)象和復(fù)合對(duì)象的使用具有一致性2011-06-06PHP隨機(jī)數(shù)函數(shù)rand()與mt_rand()的講解
今天小編就為大家分享一篇關(guān)于PHP隨機(jī)數(shù)函數(shù)rand()與mt_rand()的講解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-03-03php流量統(tǒng)計(jì)功能的實(shí)現(xiàn)代碼
用php實(shí)現(xiàn)的流量統(tǒng)計(jì)功能代碼,本代碼僅供學(xué)習(xí)交流,其中必有不妥之處。請(qǐng)見(jiàn)諒2012-09-09PHP中include()與require()的區(qū)別說(shuō)明
引用文件的方法有兩種:require 及 include。兩種方式提供不同的使用彈性。2010-03-03php調(diào)用C代碼的實(shí)現(xiàn)方法
本篇文章主要是對(duì)php調(diào)用C代碼的實(shí)現(xiàn)方法進(jìn)行了介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2014-03-03php中記錄用戶(hù)訪問(wèn)過(guò)的產(chǎn)品,在cookie記錄產(chǎn)品id,id取得產(chǎn)品信息
php中記錄用戶(hù)訪問(wèn)過(guò)的產(chǎn)品,在cookie記錄產(chǎn)品id,id取得產(chǎn)品信息,需要的朋友可以參考下。2011-05-05