我使用以下代码
获取视频的持续时间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 :(得分: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是绝对的
答案 1 :(得分:0)
如果您有ffmpeg.exe或已安装使用此功能,因为它对我来说非常好用,我认为对您来说应该是一样的
function getDuration($file){
$dur = shell_exec("ffmpeg -i ".$file." 2>&1");
if(preg_match("/: Invalid /", $dur)){
return false;
}
preg_match("/Duration: (.{2}):(.{2}):(.{2})/", $dur, $duration);
if(!isset($duration[1])){
return false;
}
return $duration[1].":".$duration[2].":".$duration[3];
}
echo getDuration($ input); #input是文件获取持续时间的路径