Shell 如何使用gstreamer/closing stream从视频流中提取单个帧

Shell 如何使用gstreamer/closing stream从视频流中提取单个帧,shell,command-line,gstreamer,rtsp,Shell,Command Line,Gstreamer,Rtsp,我需要从网络摄像机的视频流中提取一帧并将其写入文件。 在ffmpeg中,我可以这样做: ffmpeg -i rtsp://10.6.101.40:554/video.3gp -t 1 img.png 我的GStreamer命令: gst-launch-1.0 rtspsrc location="rtsp://10.6.101.40:554/video.3gp" is_live=true ! decodebin ! jpegenc ! filesink location=img.jpg 问题

我需要从网络摄像机的视频流中提取一帧并将其写入文件。 在ffmpeg中,我可以这样做:

ffmpeg -i rtsp://10.6.101.40:554/video.3gp -t 1 img.png
我的GStreamer命令:

gst-launch-1.0  rtspsrc location="rtsp://10.6.101.40:554/video.3gp" is_live=true ! decodebin ! jpegenc ! filesink location=img.jpg
问题是,gstreamer进程一直在运行,并没有结束。如何在写入文件后仅获取一帧并强制关闭流? 是否可以从命令行执行此操作,或者是否应该用c/python等编写此代码


非常感谢。

尝试使用元素<代码>队列的属性<代码>缓冲区数,并将其限制为1。这将给你一个单一的框架

我可以通过以下方式实现:

! jpegenc snapshot=TRUE


但我的来源不同,因此您的里程数可能会有所不同。

非常感谢您的帮助,但我无法使其正常工作。老实说,我无法重新运行此功能。废弃的老项目早已过时,我将接受这一答案,并希望它是正确的。谢谢。