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

Php ffmpeg-从剪辑持续时间的中间提取缩略图,php,ffmpeg,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,然后我想我可以将其分成两半,但我不确定这是否是最好的方法,我也(不好意思说

您好,我正在使用以下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);
?>
/usr/local/bin/ffmpeg -ss $realMinutes:$realSeconds:1 -i $fileName.flv -s 150x100 -vframes 1 $fileName.jpg