Qtmux error when using gstreamer pipeline to record

Hi

I ran the recording pipeline on NX Jetpack 4.6. I encountered some qtmux plugin error “qtmux error: Buffer has no PTS”, then the pipeline changes to NULL state and the recording is stopped. The issue reproducible rate is about 2%, it impact our app stability.
Could you help to solve the issue?
Below is my pipeline and the error message:

GST_DEBUG=3 gst-launch-1.0
alsasrc name=alsasrc0 device=plughw:2,0
! capsfilter name=capsfilter0 caps=audio/x-raw,format=S16LE,layout=interleaved,rate=44100,channels=2
! volume name=volume0 volume=0.75
! voaacenc ! tee name=AudioTee
nvv4l2camerasrc device=/dev/video0
! ‘video/x-raw(memory:NVMM),format=(string)UYVY,width=1920,height=1080,framerate=30/1’
! tee name=t0
t0.src_0 ! queue name=queuet01
! nvvidconv name=nvvidconvv01
! capsfilter name=capsfiltert02 caps=“video/x-raw(memory:SystemMemory),format=(string)UYVY,width=1920,height=1080,framerate=30/1”
! xvimagesink name=xvimagesinkt00 sync=false
t0.src_1 ! queue name=queuet02
! nvvidconv name=nvvidconvrd0 ! omxh264enc name=omxh264encrd0
! h264parse name=h264parsepu0 config-interval=-1 ! queue name=qq0 ! muxaudio0.
AudioTee.src_0 ! queue name=queueAudioTee1 ! muxaudio0.
qtmux name=muxaudio0 fragment-duration=1000
! filesink name=filesinkrd0 buffer-mode=2 enable-last-sample=false location=file1.mp4
t0.src_2 ! queue name=queuet03
! nvvidconv name=nvvidconvv03
! capsfilter name=capsfiltert03 caps=“video/x-raw(memory:SystemMemory),format=(string)UYVY,width=1920,height=1080,framerate=30/1”
! xvimagesink name=xvimagesinkt01 sync=false

0:00:00.107294011 4841 0x557ba09aa0 WARN omx gstomx.c:2826:plugin_init: Failed to load configuration file: (searched in: /home/user/.config:/etc/xdg/xdg-LXDE:/etc/xdg as per GST_OMX_CONFIG_DIR environment variable, the xdg user config directory (or XDG_CONFIG_HOME) and the system config directory (or XDG_CONFIG_DIRS)
0:00:00.190323582 4841 0x557ba6f800 FIXME default gstutils.c:3981:gst_pad_create_stream_id_internal:alsasrc0:src Creating random stream-id, consider implementing a deterministic way of creating a stream-id
0:00:00.190330238 4841 0x557ba6f8f0 FIXME default gstutils.c:3981:gst_pad_create_stream_id_internal:nvv4l2camerasrc0:src Creating random stream-id, consider implementing a deterministic way of creating a stream-id
0:00:00.192400989 4841 0x557ba6f8f0 WARN nvv4l2camerasrc gstnvv4l2camerasrc.cpp:734:gst_nv_v4l2_camera_fixate: Unable to fixate caps structure
0:00:00.199180283 4841 0x557ba6f990 FIXME videoencoder gstvideoencoder.c:661:gst_video_encoder_setcaps: GstVideoEncoder::reset() is deprecated
0:00:00.207649816 4841 0x557ba6f990 WARN omxvideoenc gstomxvideoenc.c:1860:gst_omx_video_enc_set_format: Error setting temporal_tradeoff 0 : Vendor specific error (0x00000001)
0:00:00.253863399 4841 0x557ba6fe30 WARN audiosrc gstaudiosrc.c:197:audioringbuffer_thread_func: failed to set thread priority
0:00:00.299734167 4841 0x7f50004770 WARN h264parse gsth264parse.c:2752:gst_h264_parse_set_caps: H.264 AVC caps, but no codec_data
0:00:00.299974711 4841 0x7f50004770 WARN h264parse gsth264parse.c:2778:gst_h264_parse_set_caps: refused caps video/x-h264, alignment=(string)au, profile=(string)baseline, level=(string)4, stream-format=(string)avc, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1, interlace-mode=(string)progressive, colorimetry=(string)bt709, chroma-site=(string)mpeg2
0:00:00.300044663 4841 0x7f50004770 WARN h264parse gsth264parse.c:2752:gst_h264_parse_set_caps: H.264 AVC caps, but no codec_data
0:00:00.300092279 4841 0x7f50004770 WARN h264parse gsth264parse.c:2778:gst_h264_parse_set_caps: refused caps video/x-h264, alignment=(string)au, profile=(string)baseline, level=(string)4, stream-format=(string)avc, width=(int)1920, height=(int)1080, pixel-aspect-ratio=(fraction)1/1, framerate=(fraction)30/1, interlace-mode=(string)progressive, colorimetry=(string)bt709, chroma-site=(string)mpeg2
0:00:00.300117975 4841 0x7f50004770 WARN GST_PADS gstpad.c:4226:gst_pad_peer_query:omxh264encrd0:src could not send sticky events
0:00:00.301983959 4841 0x557ba43b20 FIXME basesink gstbasesink.c:3145:gst_base_sink_default_event: stream-start event without group-id. Consider implementing group-id handling in the upstream elements
0:00:00.359736867 4841 0x557ba43b70 WARN qtmux gstqtmux.c:4561:gst_qt_mux_add_buffer: error: Buffer has no PTS.

Hi,
We have deprecated omx plugins and please try v4l2 plugins such as nvv4l2h264enc. And do you send EoS at terminating the pipeline? For generating a valid mp4 file you would need to send EoS message and wait for it like this sample:
Nvv4l2decoder sometimes fails to negotiate with downstream after several pipeline re-launches - #16 by DaneLLL

Hi DaneLLL

Thanks for reply.

We had already tried nvv4l2h264enc, the same issue was seen after running about 50 iterations.
And we used gst-launch-1.0 commad to try the pipeline with “-e” so the EOS was sent when stopping pipeline.
In such failure case, the pipeline was aborted for the qtmux error message before the pipeline ends since the gst-launch-1.0 monitors the BUS error message and aborts the pipeline when any error occurs.

Hi,
Could you try matroskamux? Would like to make sure it is not specific to using qtmux.

We have tried mp4mux and flvmux.
mp4mux has the same issue.
flvmux doesn’t have the issue.
But we need to record MP4 file, is there any other availble muxer plugin supporting mp4?

Hi,
Could you try audiotestsrc and videotestsrc to clarify which source triggers the issue? Replace alsasrc with audiotestsrc and nvv4l2camerasrc with videotestsrc, to know whether either source trigger the issue, and which one.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.