2017-07-18 73 views
0

我使用下面的代碼獲取視頻的持續時間,以獲得視頻長度,如何使用的ffmpeg

if (substr(php_uname(), 0, 7) == "Windows"){    
    $time = exec("{$ffmpeg} -i $path 2>&1 | findstr Duration"); 

    echo $time; 
    exit; 

    $duration = explode(":", $time);     
    $seconds = ($duration[0] * 3600) + ($duration[1] * 60) + round($duration[2]); 
    $minutes = $seconds/60; 
    $real_minutes = floor($minutes); 
    $real_seconds = round(($minutes-$real_minutes)*60); 
    $length = $real_minutes.':'.$real_seconds; 
} 

$time節目,如Duration: 00:00:06.52, start: 0.000000, bitrate: 350 kb/s$duration輸出顯示只喜歡Array ANS $length顯示0:0只爲所有視頻。所以,我怎麼能得到的視頻長度,請幫助我。

+0

由於'$ duration'包含的'爆炸()'的結果,它_should_是一個數組。做一個'的var_dump($時間)',並檢查它包含什麼。 –

+0

@MagnusEriksson的var_dump($持續時間)示出了類似這樣的 陣列(6){ [0] => 串(10) 「持續時間」 [1] => 串(3) 「00」 [2] = > 串(2) 「00」 [3] => 串(12) 「06.52,啓動」 [4] => 串(18) 「0.000000,比特率」 [5] => 串( 9) 「350 kb/s的」 } – Kevin

回答

1

使用此函數來獲取時間。傳遞文件的絕對路徑作爲參數:

public static function getDuration($filePath) 
{ 
    exec('ffmpeg -i'." '$filePath' 2>&1 | grep Duration | awk '{print $2}' | tr -d ,",$O,$S); 
    if(!empty($O[0])) 
    { 
     return $O[0]; 
    }else 
    { 
     return false; 
    } 
} 

**確保你的$ filepath是絕對