FFmpeg - 从视频片段中提取中间的缩略图。

3

你好,我正在使用以下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个回答

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接