将 FFmpeg 命令转换为 GStreamer 管道从 rtsp 流解析图像

问题描述 投票:0回答:2

我想将工作 FFmpeg 命令转换为 GStreamer 管道,以从 RTSP 流中提取图像。

ffmpeg -hide_banner -v error -rtsp_transport tcp -stimeout 10000000 -i 'rtsp://{domain}/Streaming/tracks/101?starttime=20220831T103000Z&endtime=20220831T103010Z' -vframes 1 -y image.jpg

这是我尝试转换的 GStreamer 管道:

gst-launch-1.0 rtspsrc location="rtsp://{domain}/Streaming/tracks/101?starttime=20220831T103000Z&endtime=20220831T103010Z" max-rtcp-rtp-time-diff=0 latency=0 is_live=true drop-on-latency=true ! decodebin3 ! videoconvert ! jpegenc snapshot=true ! filesink location="/mnt/c/images/frame3.jpg"

我无法让它工作。它给出了错误的时间戳图像,并且 Gstreamer 管道在提取图像后从未停止过,就像无限循环一样工作。

但是 FFmpeg 命令工作完美,提取了正确的图像,并在成功提取图像后退出命令。

ffmpeg gstreamer gstreamer-1.0
2个回答
1
投票

您可以尝试使用 num-buffers=1 添加 imagefreeze :

gst-launch-1.0 rtspsrc protocols=tcp location="rtsp://{domain}/Streaming/tracks/101?starttime=20220831T103000Z&endtime=20220831T103010Z" max-rtcp-rtp-time-diff=0 latency=0 is-live=true drop-on-latency=true ! decodebin ! videoconvert ! imagefreeze num-buffers=1 ! jpegenc snapshot=true ! filesink location="/mnt/c/images/frame3.jpg"

0
投票

试试这个

gst-launch-1.0 -e rtspsrc location="rtsp://{domain}/Streaming/tracks/101?starttime=20220831T103000Z&endtime=20220831T103010Z" max-rtcp-rtp-time-diff=0 延迟=0 is_live=true 下降-on-latency=true !解码bin3!视频转换! jpegenc快照=真!多文件接收器位置=“/mnt/c/images/frame3.jpg”最大文件=1

© www.soinside.com 2019 - 2024. All rights reserved.