Restarting GstSplitMuxSink

Presseau, Michael mpresseau at
Fri Jun 4 02:00:15 UTC 2021


We want to record a stream that can be interrupted. So we want to end the file at that time and create a new file only when it will be requested. The "split-now" command is not working well since I want to stop and create my next file later. I try by changing the state of the pipeling but I am having hard time trying to "reset" a GstSplitMuxSink. This is my pipeline: GstAppSrc --> GstVideoConvert --> GstVp8Enc --> GstSplitMuxSink( queue --> GstMatroskaMux --> GstFileSink).

When I send a EOS in pipeline, I am unable to start it again. Here my sequence:
gst_element_send_event(m_pGstPipeline, gst_event_new_eos());
// Waiting callback
cb_busWatch() { if (GST_MESSAGE_TYPE (p_pMsg) == GST_MESSAGE_EOS) { gst_element_set_state (pData->m_pGstPipeline, GST_STATE_NULL); } }

// later
gst_element_set_state (m_pGstPipeline, GST_STATE_PLAYING);

Result: new file is created but previous file is "cleared" to 0K. The previous file was valid before "gst_element_set_state (m_pGstPipeline, GST_STATE_PLAYING);"
Tested using: GStreamer 1.18.4

Best regards

More information about the gstreamer-devel mailing list