Hello,
I’m working on an embedded project on an i.MX8 platform (Yocto Linux).
I want to record video at 1 fps to reduce memory usage. My GStreamer pipeline is similar to this:
rtspsrc location=rtsp://<ip> latency=100 !
rtph264depay ! h264parse !
v4l2h264dec ! imxvideoconvert_g2d !
video/x-raw,format=RGBA,width=512,height=300 !
videorate !
video/x-raw,framerate=1/1 !
appsink name=myappsink
The problem:
When I record at 1 fps, the first 3 seconds of the video show the same frozen frame (the very first frame). After ~3 seconds, the recording continues correctly with 1 fps as expected.
When I test with higher fps (e.g. 3 fps), the problem disappears.
I suspect this may be related to:
-
Missing/incorrect timestamps (PTS/DTS) from decoder,
-
Keyframe (GOP/IDR) interval issues at low fps,
-
mp4mux or encoder waiting for the first IDR frame.
Has anyone experienced this issue?
Is there a recommended way to:
-
Force every frame to be treated as a keyframe, or
-
Normalize timestamps after decoder (e.g.
identity single-segment=true sync=true), or -
Configure
videorate/encoder to avoid frozen initial frames at 1 fps?
Any suggestions or working pipeline examples would be greatly appreciated.
Thanks in advance!