I want to know the syntax or command on how I can save all frames as jpg images from my 20 mins mp4 video using GStreamer. With FFmpeg I am able to do it but not sure about gst-launch-1.0
Asked
Active
Viewed 1,259 times
1
-
1Save it as what? – Florian Zwoch Aug 13 '21 at 06:56
-
@FlorianZwoch a jpg image – devl Aug 13 '21 at 07:27
1 Answers
1
Should be something along these lines:
gst-launch-1.0 filesrc location=<video_file> ! decodebin ! videoconvert ! jpegenc ! multifilesink location=%05d.jpg

Florian Zwoch
- 6,764
- 2
- 12
- 21
-
jetson@jetson-desktop:~/Downloads$ gst-launch-1.0 filesrc location=toy_cars.mp4 ! decodebin ! videoconvert ! jpegenc ! multifilesink location=images/img%05d.jpg Setting pipeline to PAUSED ... Pipeline is PREROLLING ... Opening in BLOCKING MODE Opening in BLOCKING MODE NvMMLiteOpen : Block : BlockType = 261 – devl Aug 13 '21 at 18:24
-
That sounds like a jetson specific error. Probably it wants to use a hardware decoder which is failing for some reason. – Florian Zwoch Aug 13 '21 at 18:26
-
WARNING: from element /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstCapsFilter:capsfilter0: not negotiated Additional debug info: gstbasetransform.c(1415): gst_base_transform_reconfigure (): /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstCapsFilter:capsfilter0: not negotiated ERROR: from element /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstQTDemux:qtdemux0: Internal data stream error. Additional debug info: qtdemux.c(6073): gst_qtdemux_loop (): /GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstQTDemux:qtdemux0: streaming stopped, reason not-negotiated (-4) – devl Aug 13 '21 at 18:26
-
-
You try setting decoder manually. Replace `decodebin` with `qtdemux ! h264parse ! avdec_h264 ! `. If the video codec is H.264. Else you need to adjust and hoe you have the decoders installed. If you want it on hardware you needs to investigate more. I dont have a jetson. – Florian Zwoch Aug 13 '21 at 18:32
-
Thanks I tried the same and it worked. Do you know how to replicate the same using CPP code of Gstreamer and Deepstream? – devl Aug 13 '21 at 18:42
-
Look at the `gst_parse_launch()` function. It is a helper to create a pipeline from these launch pipelines. For the rest check the Gstreamer tutorial. – Florian Zwoch Aug 13 '21 at 19:17
-