gstreamer filesink dropping majority of frames

I’m a gstreamer noob. My goal is to show a live video preview while recording and encoding a compressed video file in the background on its own time.

1. Preiew and record mjpeg:
Preview and file recording work well. No frames noticeably dropped in either sink. Problem is a HUGE video file size.

gst-launch-1.0 -vv v4l2src device=/dev/video0 io-mode=2 do-timestamp=true ! image/jpeg,width=2592,height=1944,framerate=25/1 ! tee name=t t. ! queue ! jpegparse ! jpegdec ! videocrop top=0 left=160 right=160 bottom=0 ! nvoverlaysink sync=false t. ! queue ! qtmux ! filesink location=test.mp4 sync=false -e

2. Preiew and record h265:
Preview works great but the video file ends up with less than 1fps. Drops vast majority of frames.

gst-launch-1.0 -vv v4l2src device=/dev/video0 io-mode=2 do-timestamp=true ! image/jpeg,width=2592,height=1944,framerate=25/1 ! jpegparse ! jpegdec ! tee name=t t. ! queue ! videocrop top=0 left=160 right=160 bottom=0 ! nvoverlaysink sync=false t. ! queue ! nvvidconv ! nvv4l2h265enc ! 'video/x-h265, stream-format=(string)byte-stream' ! h265parse ! qtmux ! filesink location=test.mp4 sync=false -e

Hoping someone with gstreamer experience can point out why my frames are dropping so hard.

Thanks!

Hi,
Please share information about the camera so that we can suggest next.

$ v4l2-ctl -d /dev/video0 --list-formats-ext
ioctl: VIDIOC_ENUM_FMT
	Index       : 0
	Type        : Video Capture
	Pixel Format: 'MJPG' (compressed)
	Name        : Motion-JPEG
		Size: Discrete 3840x2160
			Interval: Discrete 0.040s (25.000 fps)
			Interval: Discrete 0.050s (20.000 fps)
			Interval: Discrete 0.067s (15.000 fps)
			Interval: Discrete 0.100s (10.000 fps)
			Interval: Discrete 0.200s (5.000 fps)
		Size: Discrete 1920x1080
			Interval: Discrete 0.040s (25.000 fps)
			Interval: Discrete 0.050s (20.000 fps)
			Interval: Discrete 0.067s (15.000 fps)
			Interval: Discrete 0.100s (10.000 fps)
			Interval: Discrete 0.200s (5.000 fps)
		Size: Discrete 1280x720
			Interval: Discrete 0.040s (25.000 fps)
			Interval: Discrete 0.050s (20.000 fps)
			Interval: Discrete 0.067s (15.000 fps)
			Interval: Discrete 0.100s (10.000 fps)
			Interval: Discrete 0.200s (5.000 fps)
		Size: Discrete 2592x1944
			Interval: Discrete 0.040s (25.000 fps)
			Interval: Discrete 0.050s (20.000 fps)
			Interval: Discrete 0.067s (15.000 fps)
			Interval: Discrete 0.100s (10.000 fps)
			Interval: Discrete 0.200s (5.000 fps)
		Size: Discrete 2048x1536
			Interval: Discrete 0.040s (25.000 fps)
			Interval: Discrete 0.050s (20.000 fps)
			Interval: Discrete 0.067s (15.000 fps)
			Interval: Discrete 0.100s (10.000 fps)
			Interval: Discrete 0.200s (5.000 fps)
		Size: Discrete 1600x1200
			Interval: Discrete 0.040s (25.000 fps)
			Interval: Discrete 0.050s (20.000 fps)
			Interval: Discrete 0.067s (15.000 fps)
			Interval: Discrete 0.100s (10.000 fps)
			Interval: Discrete 0.200s (5.000 fps)
		Size: Discrete 1280x960
			Interval: Discrete 0.033s (30.000 fps)
			Interval: Discrete 0.040s (25.000 fps)
			Interval: Discrete 0.050s (20.000 fps)
			Interval: Discrete 0.067s (15.000 fps)
			Interval: Discrete 0.100s (10.000 fps)
			Interval: Discrete 0.200s (5.000 fps)
		Size: Discrete 1024x768
			Interval: Discrete 0.033s (30.000 fps)
			Interval: Discrete 0.040s (25.000 fps)
			Interval: Discrete 0.050s (20.000 fps)
			Interval: Discrete 0.067s (15.000 fps)
			Interval: Discrete 0.100s (10.000 fps)
			Interval: Discrete 0.200s (5.000 fps)
		Size: Discrete 800x600
			Interval: Discrete 0.033s (30.000 fps)
			Interval: Discrete 0.040s (25.000 fps)
			Interval: Discrete 0.050s (20.000 fps)
			Interval: Discrete 0.067s (15.000 fps)
			Interval: Discrete 0.100s (10.000 fps)
			Interval: Discrete 0.200s (5.000 fps)
		Size: Discrete 640x480
			Interval: Discrete 0.033s (30.000 fps)
			Interval: Discrete 0.040s (25.000 fps)
			Interval: Discrete 0.050s (20.000 fps)
			Interval: Discrete 0.067s (15.000 fps)
			Interval: Discrete 0.100s (10.000 fps)
			Interval: Discrete 0.200s (5.000 fps)
		Size: Discrete 320x240
			Interval: Discrete 0.033s (30.000 fps)
			Interval: Discrete 0.040s (25.000 fps)
			Interval: Discrete 0.050s (20.000 fps)
			Interval: Discrete 0.067s (15.000 fps)
			Interval: Discrete 0.100s (10.000 fps)
			Interval: Discrete 0.200s (5.000 fps)
		Size: Discrete 3840x2880
			Interval: Discrete 0.067s (15.000 fps)
			Interval: Discrete 0.100s (10.000 fps)
			Interval: Discrete 0.200s (5.000 fps)
		Size: Discrete 3264x2448
			Interval: Discrete 0.067s (15.000 fps)
			Interval: Discrete 0.100s (10.000 fps)
			Interval: Discrete 0.200s (5.000 fps)

	Index       : 1
	Type        : Video Capture
	Pixel Format: 'YUYV'
	Name        : YUYV 4:2:2
		Size: Discrete 3840x2160
			Interval: Discrete 1.000s (1.000 fps)
		Size: Discrete 1920x1080
			Interval: Discrete 0.200s (5.000 fps)
		Size: Discrete 1280x720
			Interval: Discrete 0.100s (10.000 fps)
			Interval: Discrete 0.200s (5.000 fps)
		Size: Discrete 2592x1944
			Interval: Discrete 1.000s (1.000 fps)
		Size: Discrete 2048x1536
			Interval: Discrete 0.333s (3.000 fps)
		Size: Discrete 1600x1200
			Interval: Discrete 0.200s (5.000 fps)
		Size: Discrete 1280x960
			Interval: Discrete 0.200s (5.000 fps)
		Size: Discrete 1024x768
			Interval: Discrete 0.067s (15.000 fps)
			Interval: Discrete 0.100s (10.000 fps)
			Interval: Discrete 0.200s (5.000 fps)
		Size: Discrete 800x600
			Interval: Discrete 0.050s (20.000 fps)
			Interval: Discrete 0.067s (15.000 fps)
			Interval: Discrete 0.100s (10.000 fps)
			Interval: Discrete 0.200s (5.000 fps)
		Size: Discrete 640x480
			Interval: Discrete 0.033s (30.000 fps)
			Interval: Discrete 0.040s (25.000 fps)
			Interval: Discrete 0.050s (20.000 fps)
			Interval: Discrete 0.067s (15.000 fps)
			Interval: Discrete 0.100s (10.000 fps)
			Interval: Discrete 0.200s (5.000 fps)
		Size: Discrete 320x240
			Interval: Discrete 0.033s (30.000 fps)
			Interval: Discrete 0.040s (25.000 fps)
			Interval: Discrete 0.050s (20.000 fps)
			Interval: Discrete 0.067s (15.000 fps)
			Interval: Discrete 0.100s (10.000 fps)
			Interval: Discrete 0.200s (5.000 fps)
		Size: Discrete 3840x2880
			Interval: Discrete 1.000s (1.000 fps)
		Size: Discrete 3264x2448
			Interval: Discrete 1.000s (1.000 fps)

Hi,
Please execute ‘sudo jetson_clocks’ and try

$ gst-launch-1.0 v4l2src num-buffers=600 device=/dev/video0 io-mode=2  ! image/jpeg,width=1920,height=1080,framerate=25/1 ! nvjpegdec ! video/x-raw ! nvvidconv ! 'video/x-raw(memory:NVMM)' ! tee name=t t. ! queue ! nvv4l2h264enc maxperf-enable=1 ! h264parse ! qtmux ! filesink location=a.mp4 t. ! queue ! fpsdisplaysink text-overlay=false video-sink=nvoverlaysink -v

Let’s check if 1080p25 is working.

[EDIT]there is a known memleak in nvjpegdec. please apply libnvjpeg.so in
https://elinux.org/L4T_Jetson/r32.2.1_patch
[MMAPI][DS4.0] Memory leak in MJPEG decoding

Thanks for the answer.

I tried to apply libnvjpeg.so and nvjpegdec stopped working entirely. In fact when I run

gst-inspect-1.0 nvjpegdec

I get

Segmentation fault (core dumped)

Can you provide details on how to replace libnvjpeg.so correctly?

Thanks!

Hi,
Are you on r32.2.1?

How can I check? I tried

cat /etc/nv_tegra_release

and also

head -n 1 /etc/nv_tegra_release

and in both cases got

No such file or directory

.

Update:
This worked

dpkg-query --showformat='${Version}' --show nvidia-l4t-core

and shows

32.2.3-20191105135548

Hi,
r32.3.1 is fresh out of oven. Please give it a try. The fix is included and you don’t need to replace libnvjpeg.so.