如何让 ffmpeg 丢帧/改变直播源的速率?

如何让 ffmpeg 丢帧/改变直播源的速率?

我有一个网络摄像头,想每秒将一帧转储到磁盘。以下命令可以很好地将每秒 5 帧转储到磁盘:

./ffmpeg -y -f video4linux2 -input_format mjpeg -r 5 -i /dev/video0 -c:v copy -bsf:v mjpeg2jpeg images/frame_%d.jpg

但是 5 FPS 是我的网络摄像头可以达到的最低值。设置任何更低的值,它都会更正回 5 FPS。我还没能弄清楚如何有效地从中获得 1 FPS。似乎选择视频过滤器是一个不错的选择。但是,我已将其放在命令行的多个位置,但无济于事。

./ffmpeg -y -f video4linux2 -input_format mjpeg -r 5 -i /dev/video0 -c:v copy -bsf:v mjpeg2jpeg -vf select='not(mod(n\,5))' images/frame_%d.jpg
./ffmpeg -y -vf select='not(mod(n\,5))' -f video4linux2 -input_format mjpeg -r 5 -i /dev/video0 -c:v copy -bsf:v mjpeg2jpeg images/frame_%d.jpg
./ffmpeg -y -f video4linux2 -input_format mjpeg -r 5 -i /dev/video0 -vf select='not(mod(n\,5))' -c:v copy -bsf:v mjpeg2jpeg images/frame_%d.jpg

有人知道我如何使用 ffmpeg 从网络摄像头获得 1 FPS 吗?这个问题类似于使用 VLC 或 FFmpeg 提取视频中的“每 10 帧中的一个”但我只是无法让选择过滤器工作,我认为这是因为它是一个实时源。

相关内容