我安装了FFMpeg并且我知道它的功能正常,但我正在尝试从flv视频到PHP获取持续时间,但是当我使用此代码时:
function mbmGetFLVDuration($ file){
/*
* Determine video duration with ffmpeg
* ffmpeg should be installed on your server.
*/
//$time = 00:00:00.000 format
$ffmpeg = "../ffmpeg/ffmpeg";
$time = exec("$ffmpeg -i $file 2>&1 | grep 'Duration' | cut -d ' ' -f 4 | sed s/,//");
$duration = explode(":",$time);
$duration_in_seconds = $duration[0]*3600 + $duration[1]*60+ round($duration[2]);
return $duration_in_seconds;
}
和
$ duration = mbmGetFLVDuration('http://www.videoaddsite.com/videos/intro.flv'); echo $ duration;
我输出220.视频是3:40。可以帮我解决我做错了什么,或者我还能用什么其他东西?
答案 0 :(得分:3)
我没有看到问题。 220秒是3:40。
要获得分钟和秒数,请使用此转换:
<?php
$seconds = 220;
$minutes = $seconds/60;
$real_minutes = floor($minutes);
$real_seconds = round(($minutes-$real_minutes)*60);
?>
$real_minutes
将为3,$real_seconds
将为40。
答案 1 :(得分:0)
$ffmpeg = "../ffmpeg/ffmpeg";
$time = exec("$ffmpeg -i $file 2>&1 | grep 'Duration' | cut -d ' ' -f 4 | sed s/,//");
$duration = explode(":", $time);
$duration_in_seconds = ($duration[0] * 3600) + ($duration[1] * 60) + round($duration[2]);
return $duration_in_seconds;
答案 2 :(得分:0)
以下代码对我有用
$file='http://techslides.com/demos/sample-videos/small.mp4';
$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;
}
$hours = $duration[1];
$minutes = $duration[2];
$seconds = $duration[3];
echo $seconds + ($minutes*60) + ($hours*60*60);