我正在尝试从RTSP流的URL中每秒(也可以是每1分钟)提取图像文件并覆盖此图像文件。
我的下面代码可以工作,但会输出多个图像JPG文件:img1.jpg、img2.jpg、img3.jpg...
ffmpeg -i rtsp://IP_ADDRESS/live.sdp -f image2 -r 1 img%01d.jpg
如何在Linux中使用ffmpeg或bash脚本以非高频率(例如1分钟或10秒)连续提取图像的同时覆盖相同的图像文件?
我正在尝试从RTSP流的URL中每秒(也可以是每1分钟)提取图像文件并覆盖此图像文件。
我的下面代码可以工作,但会输出多个图像JPG文件:img1.jpg、img2.jpg、img3.jpg...
ffmpeg -i rtsp://IP_ADDRESS/live.sdp -f image2 -r 1 img%01d.jpg
如何在Linux中使用ffmpeg或bash脚本以非高频率(例如1分钟或10秒)连续提取图像的同时覆盖相同的图像文件?
因此,我的有效命令版本为
ffmpeg -i rtsp://<rtsp_source_addr> -vf fps=fps=1/20 -update 1 img.jpg
由于某些原因,我无法达到的最低帧速率为1/20或0.05。
还有视频过滤缩略图,它从一系列帧中选择图像,但这需要更多的处理,因此我不建议使用它。
我在FFMpeg在线文档中找到了大部分内容和更多信息。
对于那些使用avconv的人来说,它非常相似。毕竟,它们曾经是一个共同的库的分支。AVconv image2文档在此处找到。
avconv -i rtsp://<rtsp_source_addr> -vf fps=fps=1/20 -update 1 img.jpg
正如Xianlin指出的那样,可能还有其他几个有趣的选项可供使用:
-an:禁用音频记录。
-r < fps >:设置帧率
导致另一个版本:
avconv -i rtsp://<rtsp_source_addr> -r 1/20 -an -update 1 img.jpg
希望这有助于理解可能需要进一步调整的内容;)
avconv -i rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov -r 1/20 -an -y -update 1 test.jpg
。 - Xianlin以下命令行应该适用于您。
ffmpeg -i rtsp://IP_ADDRESS/live.sdp -f image2 -updatefirst 1 img.jpg
updatefirst
? - chubao-updatefirst
选项已被删除并不再起作用。请改用-y
选项。 - Sean Ferons我无法使用选项-update覆盖.jpg文件。通过一些实验,我找到了一个可行的解决方案(至少对我有效),在命令末尾加上选项-y(大写不起作用)。我还需要使用http://而不是rstp://来访问此摄像头。
ffmpeg -i http://xx:yy@192.168.1.xx:yyy/snapshot.cgi /tmp/Capture2.jpg -y
每10秒从RTSP视频流中抓取一个快照。
#!/bin/bash
#fetch-snapshots.sh
url='rtsp://IP_ADDRESS/live.sdp'
avconv -i $url -r 0.1 -vsync 1 -qscale 1 -f image2 images%09d.jpg
-r rate 将帧率设置为每秒 0.1 帧(相当于每 10 秒钟一帧)。 感谢 westonruter,参见 https://gist.github.com/westonruter/4508842
此外,请查看 FFMPEG:从可变长度的视频中提取 20 张图像
ffmpeg -i rtsp://root:password@192.168.1.1/mpeg4 -ss 00:00:01 -f image2 -vframes 1 thumb.jpg