filesink and file durations

Guillaume Denis gdenispro at
Thu Jun 10 07:33:02 UTC 2021


I am trying to have this pipeline end correctly, recorded files being
corrupted (invalid duration):

appsrc format=time is-live=true do-timestamp=true name=src !
application/x-rtp,encoding-name=H264 ! tee name=teein ! queue
max-size-buffers=0 max-size-bytes=0 max-size-time=5000000000 !
rtpjitterbuffer latency=100 ! rtph264depay ! h264parse ! matroskamux !
filesink location=logs/raw.mkv teein. ! queue max-size-buffers=0
max-size-bytes=0 ! appsink name=sink qos=true

At some point the pipeline is stopped by a:
gst_element_send_event(pipeline, gst_event_new_eos());

Then a bus watch callback stops the pipeline: gst_element_set_state(pipeline,
(I thought that when a bus watch callback receives a GST_MESSAGE_EOS it
meant EOS has been propagated to all sinks)

I am wondering if this may be due to tee and queue in the pipeline.
I could also catch EOS(s) on every appsink and filesink before ending the
pipeline but that seems weird.

Two additional observations:

   - on rare occasions, the recorded file does have a duration
   - I've tried waiting (g_usleep) between receiving GST_MESSAGE_EOS and
   setting pipeline state to GST_STATE_NULL with no effect

Would you have any suggestions?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the gstreamer-devel mailing list