如何使用FFMPEG从RTSP流中获取单个图像

26

我看到了其他相关的问题,但它们似乎都与每X秒抓取一张静态图像有关。如何在运行命令时抓取1张图像。

我尝试过

ffmpeg -y -i rtsp://admin:admin@192.168.10.113:554/live -f image2 -updatefirst 1 do.jpg

为什么要使用“-f image2 -updatefirst 1”?你只需要一个输出。 - Gyan
当我没有使用时运行它,会得到以下错误信息:[image2 @ 0x2886980] Could not get frame filename number 2 from pattern 'do.jpg' (either set updatefirst or use a pattern like %03d within the filename pattern) av_interleaved_write_frame(): Invalid argument - sealfab
5个回答

37

尝试

ffmpeg -y -i rtsp://admin:admin@192.168.10.113:554/live -vframes 1 do.jpg

5
我已经使用这个命令有一段时间了,但大约有20%的时间我会得到一个损坏的帧。 - user230910
3
如果使用UDP,RTSP可能会丢失数据包。尝试使用TCP。 - Gyan
12
对于那些想知道如何在上述命令中使用TCP的人,请添加:-rtsp_transport tcp - Pathead
5
如果你像我一样遇到了困难,这里有两个专业提示:在-i ...选项之前加上-rtsp_transport tcp选项,并且-vframes现在已经被弃用,应该使用-frames:v代替。请注意不要改变原意。 - ttous
虽然这在我的 Mac 上可以运行,但在列出以 libpostproc 结尾的库名称后,在 Windows 上会挂起。 - Frak

2

我一直在使用变量来利用我的Ubiquiti摄像头为我提供一个Weather Underground JPG。

tcp传输的添加解决了所有问题。修改后的命令如下。

E $FFMPEG -y -loglevel fatal -rtsp_transport tcp -i $URL1 -frames:v 2 -r 1 -s 320x240 $TMPFILE

为什么在“-frames:v 2”中使用2?这有助于减少损坏吗?我使用tcp仍然会出现一些损坏。 - partofthething

1

对于这个命令,我的看法是不完美的。大约有20%的情况下,我会在错误链接上收到一个损坏的(即不完整或出现故障)图像:

avconv -rtsp_transport tcp -y -i rtsp://user:pass@192.168.0.1:554/live -vframes 1 do.jpg

0
首先,您需要下载ffmpeg.exe文件到您的计算机并解压缩, 其次,在您解压缩的路径中打开Windows终端或PowerShell或CMD,并进入bin目录,输入以下命令:
.\ffmpeg -i rtsp://username:password@192.168.1.1:554/media/video0 -ss 1 -f image2 C:\Users\Desktop\1.jpg

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接