从RTSP捕获jpeg图像-gStreamer

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

我正在建立视频流传输管道。我想捕获实时视频流的缩略图。我已经使用jpegenc将缓冲区编码为jpeg,并通过filesink保存它。我不想保存每个帧,我只想保存第10帧(即模10,这应该是可配置的)。我怎样才能做到这一点? (该流来自rtsp源)

video-streaming jpeg gstreamer rtsp
1个回答
0
投票

以下解决方案在数学上可能不正确(例如,以100%的精度捕获每10帧),但也许值得一提。它基于gstreamer的videorate元素,该元素可以处理视频FPS(每秒帧数)。

假设我们有rtsp源,如下所示:

rtsp://freja.hiof.no:1935 / rtplive / _definst_ / hessdalen03.stream

((公共摄像机,H264视频,帧速率= 60000/1001 =〜60帧每秒)。

管道

gst-launch-1.0 -v rtspsrc location="rtsp://freja.hiof.no:1935/rtplive/_definst_/hessdalen03.stream" \
! rtph264depay ! avdec_h264 \
! timeoverlay halignment=right valignment=bottom \
! videorate ! video/x-raw,framerate=60000/1001 ! jpegenc ! multifilesink location="./frame%08d.jpg"

应该捕获每个接收到的视频帧并将其另存为jpg图像。

但是如果您像这样修改viderate上限

video/x-raw,framerate=6000/1001

捕获帧的速率约为6 fps(少10倍,理论上应捕获第6帧)。

因此,知道输入视频的帧速率后,您可以修改viderate“输出”上限以达到所需的“输出”帧率。

[Note我添加了timeoverlay halignment=right valignment=bottom,它将为视频/ jpg图像添加管道运行时间戳,以便于跟踪。

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