2011-02-11 70 views
4

你如何使用php來計算mp4視頻的持續時間/長度?如何計算使用php的mp4視頻的持續時間/長度?

I tried using this但它只適用於f4v。 :<你能幫助我的MP4案件?

+1

谷歌的一些命令行實用程序,並調用它使用PHP –

+0

看看http://ffmpeg-php.sourceforge.net/ –

+0

可能重複[如何提取持續時間從ffmpeg輸出?](http:///stackoverflow.com/questions/6239350/how-to-extract-duration-time-from-ffmpeg-output) – MondKin

回答

2

我最近也想這樣做。我做了很多研究,並且在php中沒有本地方式。一個建議是ffmpeg-php,但它似乎沒有爲我工作。另一種方法是使用命令行的ffmpeg:通過使用php-reader

exec("ffmpeg -i \"{$videofile}\" 2>&1"); 
$search='/Duration: (.*?),/'; 
$duration=preg_match($search, $duration, $matches, PREG_OFFSET_CAPTURE, 3); 
+0

我創建了一個基於這種方法的PHP類:https://github.com/bfanger/sledgehammer_ffmpeg/blob/ master/classes/FFVideo.php –

1

這可以以純PHP來完成。這個庫是純PHP中的ISO Base Media File Format, or ISO/IEC 14496-12的完整實現。然後,您可以在該持續時間內信任元數據標題,也可以基於stbl框自行計算它。

4

我無法獲得tandu的解決方案。

下面是最終爲我工作:

$ffmpeg_output = shell_exec("ffmpeg -i \"$file\" 2>&1"); 
if(preg_match('/.*Duration: ([0-9:]+).*/', $ffmpeg_output, $matches)) { 
    echo $matches[1]; 
} else { 
    echo "$file failed\n"; 
} 

希望這可以幫助別人。

+0

簡單而完美。感謝發佈@Henno – Radhakrishna

+0

這可能導致0秒的持續時間。由於ffmpeg也會返回毫秒。所以輸出是這樣的:** 00:00:05.66 **和上面的正則表達式將忽略十進制** 00:00:05 **。你需要的是:'/.*Duration:((\ d +)(?:\:)(\ d +)(?:\:)(\ d +))*/i'。 –