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

标签 ffmpeg

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

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

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

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 用户,所以我无法为您提供交 key 解决方案):

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

关于ffmpeg - 如何使用 FFmpeg 从视频中间创建缩略图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38741423/

相关文章:

video - -b :v <target bitrate> and -b <target bitrate> FFmpeg flags? 有什么区别

c++ - FFMpeg C++ 如何创建具有多个输出的过滤器?

ffmpeg - 以 1 fps 的帧速率从 rtsp 流式传输视频

iphone - 将 jpeg 实时流式传输到 iPhone 应用程序

ffmpeg 流式传输(mpegts 与 rtmp)错误

ffmpeg - 如何在 Android 中录制 720p 视频而不丢帧

node.js - 如何在 Node JS 上通过 ffmpeg 在视频中添加标题

bash - FFmpeg 破坏 Bash/shell 脚本中的 "while/if"结构 - 如何修复?

python - 在 ffmpeg 中获取 rms 级别的减少数据

ffmpeg - 从 MP4 压缩到 MP4 (libx264) 时 ffmpeg 丢弃最后一帧