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


extract thumbnail from middle of clip duration

嗨,我使用以下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将该格式一分为二。

示例代码将不胜感激。

谢谢。

你可以得到这样的中间:

<?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