如何使用FFmpeg从视频中间创建缩略图



如何使用ffmpeg从视频中间生成缩略图。。

例如,我有一个持续时间为1分钟的视频,我想在第30秒上生成缩略图

我使用了以下代码,但它在第59秒生成缩略图。因为我提到了-ss59,我们如何才能让它动态到视频持续时间的中间。

ffmpeg -i input.mp4 -deinterlace -an -ss 59 -f mjpeg -t 1 -r 1 -y -s 256x160 output.jpg

我试过了,但我得到了错误,没有找到目录。

ffmpeg -i input.mp4 -vcodec mjpeg -vframes 1 -an -f rawvideo -ss `ffmpeg -i clip.mp4 2>&1 | grep Duration | awk '{print $2}' | tr -d , | awk -F ':' '{print $3/2}'` output.jpg

提前谢谢。

您可以使用ffprobe来获取输入的持续时间,然后使用它来确定-ss值。

ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 input.mp4
30.24

然后根据自己的喜好编写脚本。使用bash的示例(我不是PHP用户,所以我不能给你一个交钥匙的解决方案):

input=input.mp4
dur=$(ffprobe -loglevel error -show_entries format=duration -of default=nk=1:nw=1 "$input")
ffmpeg -y -i "$input" -ss "$(echo "$dur / 2" | bc -l)" -vframes 1 -q:v 2 output.jpg

这是一种更加PHP友好的方式

$dur = "ffprobe -loglevel error -show_entries format=duration -of default=nk=1:nw=1 $input";

$durt = system($dur);

$cmd = "ffmpeg -i $input -an -ss ".($durt/2)." -s 426x240 output.png";

system($cmd);

相关内容

  • 没有找到相关文章

最新更新