您好我使用以下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分成两半。
示例代码将不胜感激。
谢谢。
答案 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