ffmpeg - 从剪辑持续时间中间提取缩略图

时间:2013-02-13 20:30:57

标签: php ffmpeg

您好我使用以下ffmpeg命令使用ffmpeg从剪辑的开头提取缩略图:

/usr/local/bin/ffmpeg -ss 00:00:1 -i $fileName.flv -s 150x100 -vframes 1 $fileName.jpg

仅使用ffmpeg从剪辑持续时间中间提取缩略图是否可行?

每个剪辑的长度不同。

如果ffmpeg没有提供此选项,我知道可以将剪辑持续时间设置为00:00:01.26这种格式,然后我想我可以把它分成两半,但我不确定这是不是最好的方法,我也(不好意思)不完全确定如何将这种格式与PHP分成两半。

示例代码将不胜感激。

谢谢。

1 个答案:

答案 0 :(得分:3)

你可以像这样得到中间人:

<?php
// get duration
$time =  exec("/local/bin/ffmpeg -i $fileName.flv 2>&1 | grep 'Duration' | cut -d ' ' -f 4 | sed s/,//");   

// duration in seconds; half the duration = middle
$duration = explode(":",$time);   
$durationInSeconds = $duration[0]*3600 + $duration[1]*60+ round($duration[2]);
$durationMiddle = $durationInSeconds/2;

// recalculte to minutes and seconds
$minutes = $durationMiddle/60;
$realMinutes = floor($minutes);
$realSeconds = round(($minutes-$real_minutes)*60);
?>

然后在$realMinutes$realSeconds使用您的命令:

/usr/local/bin/ffmpeg -ss $realMinutes:$realSeconds:1 -i $fileName.flv -s 150x100 -vframes 1 $fileName.jpg