如何使用 gstreamer / 关闭流从视频流中提取单帧

How extract single frame from video stream using gstreamer / closing stream

我需要从网络摄像头的视频流中取出一帧并将其写入文件。 在 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 等中对此进行编码...

非常感谢。

尝试对元素 queue 使用 属性 number of buffers,并将其限制为 1。这将有望为您提供一个框架。

我能够做到这一点:

! jpegenc snapshot=TRUE

参见jpegenc - snapshot

但我的来源不同,所以你的里程可能会有所不同。