标签: mjpeg

使用 FFmpeg 的视频有意义的缩略图

FFmpeg 可以从视频中捕获图像,这些图像可以用作缩略图来表示视频。在FFmpeg Wiki中捕获了最常见的方法。

但是,我不想在某些时间间隔内选择随机帧。我发现了一些在 FFmpeg 上使用过滤器来捕捉场景变化的选项:

过滤器thumbnail试图找到视频中最具代表性的帧:

ffmpeg -i input.mp4 -vf  "thumbnail,scale=640:360" -frames:v 1 thumb.png
Run Code Online (Sandbox Code Playgroud)

并且以下命令仅选择与之前相比具有超过 40% 变化的帧(因此可能是场景变化)并生成 5 个 PNG 的序列。

ffmpeg -i input.mp4 -vf  "select=gt(scene\,0.4),scale=640:360" -frames:v 5 thumb%03d.png
Run Code Online (Sandbox Code Playgroud)

以上命令的信息归功于Fabio Sonnati。第二个看起来更好,因为我可以得到 n 个图像并选择最好的。我试过了,它生成了 5 次相同的图像。

更多的调查使我:

ffmpeg -i input.mp4 -vf "select=gt(scene\,0.5)" -frames:v 5 -vsync vfr  out%02d.png
Run Code Online (Sandbox Code Playgroud)

-vsync vfr确保您获得不同的图像。这仍然总是选择视频的第一帧,在大多数情况下,第一帧是署名/标志并且没有意义,所以我添加了一个-ss3 来丢弃视频的前 3 秒。

我的最终命令如下所示:

ffmpeg -ss 3 -i input.mp4 -vf "select=gt(scene\,0.5)" -frames:v 5 -vsync vfr out%02d.jpg
Run Code Online (Sandbox Code Playgroud)

这是我能做的最好的事情。我注意到,由于我只挑选了5个视频,所有视频都来自视频的开头,可能会错过视频后面出现的重要场景。

我想为任何其他更好的选择挑选你的大脑。

thumbnails jpeg ffmpeg thumbnail-generator mjpeg

101
推荐指数
3
解决办法
9万
查看次数

ffmpeg 使用 YUYV 打开网络摄像头,但我想要 MJPEG

我需要 ffmpeg 在 MJPEG 模式下打开网络摄像头(罗技 C910),因为网络摄像头可以使用 MJPEG“协议”提供 ~24 fps,而使用 YUYV 只能提供 ~10 fps。我可以使用 ffmpeg 命令行在它们之间进行选择吗?

xx@(none) ~ $ v4l2-ctl --list-formats
ioctl: VIDIOC_ENUM_FMT
    Index       : 0
    Type        : Video Capture
    Pixel Format: 'YUYV'
    Name        : YUV 4:2:2 (YUYV)

    Index       : 1
    Type        : Video Capture
    Pixel Format: 'MJPG' (compressed)
    Name        : MJPEG
Run Code Online (Sandbox Code Playgroud)

我当前的命令行:

ffmpeg -y -f alsa -i hw:3,0 -f video4linux2 -r 20 -s 1280x720 -i /dev/video0 -acodec libfaac -ab 128k -vcodec libx264 /tmp/web.avi
Run Code Online (Sandbox Code Playgroud)

当我从网络摄像头录制时,ffmpeg 会产生损坏的 h264 流,但是当我从 x11grab 录制时会产生正常的 h264 …

webcam ffmpeg v4l2 mjpeg

19
推荐指数
1
解决办法
5万
查看次数

将 MJPEG 无损压缩为 MP4 的最佳方法是什么?

我有一些以 MJPEG 格式录制的数码相机电影,它们占用了几 GB 的存储空间。我想更好地压缩它们,但尽可能少地丢失细节,或者不丢失。

由于 MJPEG 不跨帧压缩,我认为任何现代电影编解码器都会做得更好,不是吗?

以下 ffmpeg 命令会做我期望的吗?

ffmpeg -i input -c:v libx264 -preset veryslow -qp 0 output.mp4
Run Code Online (Sandbox Code Playgroud)

ffmpeg mpeg4 video-conversion mjpeg

9
推荐指数
1
解决办法
1万
查看次数

使用 FFMPEG 保留时间信息的 Mjpeg 记录

我正在从 IP 摄像机录制 MJPEG 视频并将其保存到文件中,但问题是该文件的持续时间比实际录制时间小得多。它大约 9 秒的视频用于 2 分钟的录制。我尝试按顺序执行以下命令

ffmpeg -f mjpeg -r 8 -i http://c-cam.uchicago.edu/mjpg/video.mjpg -vcodec mpeg4 -b 1000000 -r 8 video_file.avi 
Run Code Online (Sandbox Code Playgroud)

然后我省略了大部分标志并像这样尝试

ffmpeg -f mjpeg -i http://c-cam.uchicago.edu/mjpg/video.mjpg video_file.avi
Run Code Online (Sandbox Code Playgroud)

但问题是录制文件的持续时间为 9 秒,而实际录制时间约为 2 分钟。我终于尝试了应该插入时间戳的setpts过滤器。命令如下

ffmpeg -f mjpeg -i http://c-cam.uchicago.edu/mjpg/video.mjpg -vf "setpts=1*PTS" video_file.avi
Run Code Online (Sandbox Code Playgroud)

但结果还是一样。录制时间远远超过视频时长。

video ffmpeg video-streaming mjpeg

5
推荐指数
1
解决办法
1万
查看次数