3

嗨,我正在使用以下 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 将该格式分成两半。

示例代码将不胜感激。

谢谢你。

4

1 回答 1

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

然后将您的命令与$realMinutesand一起使用$realSeconds

/usr/local/bin/ffmpeg -ss $realMinutes:$realSeconds:1 -i $fileName.flv -s 150x100 -vframes 1 $fileName.jpg
于 2013-02-13T20:36:55.867 回答