Time-lapse of images to video Using GPU encoding

I’m running an Xavier and have a time-lapse script running the following…

ffmpeg -f concat -i /media/nvidia/SCOUT/timelapse/concat.txt -y -r 30 -vcodec libx264 /media/nvidia/SCOUT/timelapse/cam3.mp4

I’ve just done some reading that I cannot use GPU in FFmpeg, does anyone know how I can achieve a similar output from Gstreamer?

Basically reading an input of image files from the concat file and then writing out to h264; but toooo slow on FFmpeg

Hi,
We have not supported hardware encoding in ffmpeg. It is under implementation. For hardware decoding, please check development guide.

Thanks, its my understanding GStreamer should be able to do it, but I just cant find a way of providing it an input type of concat

root@nvidia-desktop:/media/nvidia/SCOUT/timelapse# head /media/nvidia/SCOUT/timelapse/concat.txt

file 202005281257-cam3.jpeg
file 202005281257-cam3.jpeg
file 202005281257-cam3.jpeg
file 202005281316-cam3.jpeg
file 202005281316-cam3.jpeg
file 202005281316-cam3.jpeg
file 202005281318-cam3.jpeg
file 202005281318-cam3.jpeg
file 202005281318-cam3.jpeg
file 202005281320-cam3.jpeg

Hi,
In gstreamer, you can use multifilesrc. Please refer to

And gstreamer user guide

Tried the multifilesrc but it wants format of 0,1,2,3,4 , mine are in a date format specified in file /media/nvidia/SCOUT/timelapse/concat.txt

I can have it look at the directory rather than the file, but I need the images in the date format to do excluding of night times, weekends and bad weather days.

root@nvidia-desktop:/media/nvidia/SCOUT/timelapse# gst-launch-1.0 videotestsrc num-buffers=60 ! pngenc ! multifilesink location=%06d.png

Setting pipeline to PAUSED ...

Pipeline is PREROLLING ...

Pipeline is PREROLLED ...

Setting pipeline to PLAYING ...

New clock: GstSystemClock

Got EOS from element "pipeline0".

Execution ended after 0:00:00.732731562

Setting pipeline to PAUSED ...

Setting pipeline to READY ...

Setting pipeline to NULL ...

Freeing pipeline ...

root@nvidia-desktop:/media/nvidia/SCOUT/timelapse# $ gst-launch-1.0 multifilesrc location="%06d.png" caps="image/png" ! decodebin ! videoconvert ! 'video/x-raw,format=NV12' ! nvvidconv ! 'video/x-raw(memory:NVMM),format=NV12' ! nvegltransform ! nveglglessink

-su: $: command not found

root@nvidia-desktop:/media/nvidia/SCOUT/timelapse# gst-launch-1.0 multifilesrc location="%06d.png" caps="image/png" ! decodebin ! videoconvert ! 'video/x-raw,format=NV12' ! nvvidconv ! 'video/x-raw(memory:NVMM),format=NV12' ! nvegltransform ! nveglglessink

Setting pipeline to PAUSED ...

Using winsys: x11

Pipeline is PREROLLING ...

Got context from element 'eglglessink0': gst.egl.EGLDisplay=context, display=(GstEGLDisplay)NULL;

ERROR: from element /GstPipeline:pipeline0/GstMultiFileSrc:multifilesrc0: Internal data stream error.

Additional debug info:

gstbasesrc.c(3055): gst_base_src_loop (): /GstPipeline:pipeline0/GstMultiFileSrc:multifilesrc0:

streaming stopped, reason error (-5)

ERROR: pipeline doesn't want to preroll.

Setting pipeline to NULL ...

Freeing pipeline ...

root@nvidia-desktop:/media/nvidia/SCOUT/timelapse# gst-launch-1.0 multifilesrc location="%06d.png" caps="image/png" ! decodebin ! videoconvert ! 'video/x-raw,format=NV12' ! nvvidconv ! 'video/x-raw(memory:NVMM),format=NV12' ! nvivafilter cuda-process=true customer-lib-name="libnvsample_cudaprocess.so" ! 'video/x-raw(memory:NVMM),format=RGBA' ! nvegltransform ! nveglglessink

Setting pipeline to PAUSED ...

Using winsys: x11

Pipeline is PREROLLING ...

Got context from element 'eglglessink0': gst.egl.EGLDisplay=context, display=(GstEGLDisplay)NULL;

ERROR: from element /GstPipeline:pipeline0/GstMultiFileSrc:multifilesrc0: Internal data stream error.

Additional debug info:

gstbasesrc.c(3055): gst_base_src_loop (): /GstPipeline:pipeline0/GstMultiFileSrc:multifilesrc0:

streaming stopped, reason error (-5)

ERROR: pipeline doesn't want to preroll.

Setting pipeline to NULL ...

Freeing pipeline ...

root@nvidia-desktop:/media/nvidia/SCOUT/timelapse#


root@nvidia-desktop:/media/nvidia/SCOUT/timelapse# ls
202005281257-cam3.jpeg  202005281348-cam3.jpeg  202005281422-cam3.jpeg  202005281456-cam3.jpeg  202005281530-cam3.jpeg  202005281604-cam3.jpeg  202005281638-cam3.jpeg  202005281712-cam3.jpeg  202005281746-cam3.jpeg
202005281316-cam3.jpeg  202005281350-cam3.jpeg  202005281424-cam3.jpeg  202005281458-cam3.jpeg  202005281532-cam3.jpeg  202005281606-cam3.jpeg  202005281640-cam3.jpeg  202005281714-cam3.jpeg  202005281748-cam3.jpeg
202005281318-cam3.jpeg  202005281352-cam3.jpeg  202005281426-cam3.jpeg  202005281500-cam3.jpeg  202005281534-cam3.jpeg  202005281608-cam3.jpeg  202005281642-cam3.jpeg  202005281716-cam3.jpeg  202005281750-cam3.jpeg
202005281320-cam3.jpeg  202005281354-cam3.jpeg  202005281428-cam3.jpeg  202005281502-cam3.jpeg  202005281536-cam3.jpeg  202005281610-cam3.jpeg  202005281644-cam3.jpeg  202005281718-cam3.jpeg  202005281752-cam3.jpeg
202005281322-cam3.jpeg  202005281356-cam3.jpeg  202005281430-cam3.jpeg  202005281504-cam3.jpeg  202005281538-cam3.jpeg  202005281612-cam3.jpeg  202005281646-cam3.jpeg  202005281720-cam3.jpeg  202005281754-cam3.jpeg
202005281324-cam3.jpeg  202005281358-cam3.jpeg  202005281432-cam3.jpeg  202005281506-cam3.jpeg  202005281540-cam3.jpeg  202005281614-cam3.jpeg  202005281648-cam3.jpeg  202005281722-cam3.jpeg  202005281756-cam3.jpeg
202005281326-cam3.jpeg  202005281400-cam3.jpeg  202005281434-cam3.jpeg  202005281508-cam3.jpeg  202005281542-cam3.jpeg  202005281616-cam3.jpeg  202005281650-cam3.jpeg  202005281724-cam3.jpeg  bin
202005281328-cam3.jpeg  202005281402-cam3.jpeg  202005281436-cam3.jpeg  202005281510-cam3.jpeg  202005281544-cam3.jpeg  202005281618-cam3.jpeg  202005281652-cam3.jpeg  202005281726-cam3.jpeg  cam3.mkv
202005281330-cam3.jpeg  202005281404-cam3.jpeg  202005281438-cam3.jpeg  202005281512-cam3.jpeg  202005281546-cam3.jpeg  202005281620-cam3.jpeg  202005281654-cam3.jpeg  202005281728-cam3.jpeg  cam3.mp4
202005281332-cam3.jpeg  202005281406-cam3.jpeg  202005281440-cam3.jpeg  202005281514-cam3.jpeg  202005281548-cam3.jpeg  202005281622-cam3.jpeg  202005281656-cam3.jpeg  202005281730-cam3.jpeg  concat.txt
202005281334-cam3.jpeg  202005281408-cam3.jpeg  202005281442-cam3.jpeg  202005281516-cam3.jpeg  202005281550-cam3.jpeg  202005281624-cam3.jpeg  202005281658-cam3.jpeg  202005281732-cam3.jpeg
202005281336-cam3.jpeg  202005281410-cam3.jpeg  202005281444-cam3.jpeg  202005281518-cam3.jpeg  202005281552-cam3.jpeg  202005281626-cam3.jpeg  202005281700-cam3.jpeg  202005281734-cam3.jpeg
202005281338-cam3.jpeg  202005281412-cam3.jpeg  202005281446-cam3.jpeg  202005281520-cam3.jpeg  202005281554-cam3.jpeg  202005281628-cam3.jpeg  202005281702-cam3.jpeg  202005281736-cam3.jpeg
202005281340-cam3.jpeg  202005281414-cam3.jpeg  202005281448-cam3.jpeg  202005281522-cam3.jpeg  202005281556-cam3.jpeg  202005281630-cam3.jpeg  202005281704-cam3.jpeg  202005281738-cam3.jpeg
202005281342-cam3.jpeg  202005281416-cam3.jpeg  202005281450-cam3.jpeg  202005281524-cam3.jpeg  202005281558-cam3.jpeg  202005281632-cam3.jpeg  202005281706-cam3.jpeg  202005281740-cam3.jpeg
202005281344-cam3.jpeg  202005281418-cam3.jpeg  202005281452-cam3.jpeg  202005281526-cam3.jpeg  202005281600-cam3.jpeg  202005281634-cam3.jpeg  202005281708-cam3.jpeg  202005281742-cam3.jpeg
202005281346-cam3.jpeg  202005281420-cam3.jpeg  202005281454-cam3.jpeg  202005281528-cam3.jpeg  202005281602-cam3.jpeg  202005281636-cam3.jpeg  202005281710-cam3.jpeg  202005281744-cam3.jpeg

Hi,
Not sure how to run the gstreamer pipeline exact same as the ffmpeg command. Suggest you go to
http://gstreamer-devel.966125.n4.nabble.com/

Once you have a working pipeline, please replace software encoder with hardware encoder nvv4l2h264enc, to enable hardware acceleration.