<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>Using Our CommunityのトピックGStreamer - Stop pipeline when pipeline is using splitmuxsink.</title>
    <link>https://community.nxp.com/t5/Using-Our-Community/GStreamer-Stop-pipeline-when-pipeline-is-using-splitmuxsink/m-p/1134877#M497</link>
    <description>&lt;DIV class="js-vote-count grid--cell fc-black-500 fs-title grid fd-column ai-center"&gt;&lt;SPAN&gt;I'm using splitmuxsink in Gstreamer with C language to record video. This is my pipeline:&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="postcell post-layout--right"&gt;&lt;DIV class="s-prose js-post-body"&gt;&lt;BLOCKQUOTE&gt;&lt;P&gt;source -&amp;gt; frameratefilter -&amp;gt; encoder -&amp;gt; h264parse -&amp;gt; splitmuxsink&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;This is my code in simple:&lt;/P&gt;&lt;PRE&gt;&lt;SPAN class="kwd"&gt;static&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; gchar&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;*&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; cb_FormatLocation&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="typ"&gt;GstElement&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;*&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; splitmuxsink&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; guint fragment_id&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt; &lt;SPAN class="kwd"&gt;const&lt;/SPAN&gt; &lt;SPAN class="typ"&gt;int&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;*&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; offset&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;){&lt;/SPAN&gt;
  &lt;SPAN class="com"&gt;//Set filename&lt;/SPAN&gt;
  &lt;SPAN class="kwd"&gt;return&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; filename&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="pun"&gt;}&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;gboolean timeout_callback&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;gpointer data&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;){&lt;/SPAN&gt;
  &lt;SPAN class="kwd"&gt;if&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;(&lt;/SPAN&gt; &lt;SPAN class="com"&gt;//meet signal stop video ){&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;    g_main_loop_quit&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;((&lt;/SPAN&gt;&lt;SPAN class="typ"&gt;GMainLoop&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;*)&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;data&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;
    &lt;SPAN class="kwd"&gt;return&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; FALSE&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;;&lt;/SPAN&gt;
  &lt;SPAN class="pun"&gt;}&lt;/SPAN&gt;
  &lt;SPAN class="kwd"&gt;return&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; TRUE&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="pun"&gt;}&lt;/SPAN&gt;

&lt;SPAN class="typ"&gt;int&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; main&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="typ"&gt;int&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; argc&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt; &lt;SPAN class="kwd"&gt;char&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;*&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; argv&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;[]){&lt;/SPAN&gt;
  &lt;SPAN class="typ"&gt;GstElement&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;*&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;pipeline&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;*&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;source&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;*&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;frameratefilter_&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;*&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;h264parse&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;*&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;encoder&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;*&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;splitmuxsink&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;;&lt;/SPAN&gt;

  &lt;SPAN class="com"&gt;/* Initialize GStreamer */&lt;/SPAN&gt;
  &lt;SPAN class="com"&gt;/* Create the empty pipeline */&lt;/SPAN&gt;
  &lt;SPAN class="com"&gt;/* Create the elements */&lt;/SPAN&gt;

  &lt;SPAN class="com"&gt;// Set parameters for some elements&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;  g_object_set&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;G_OBJECT&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;source&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;),&lt;/SPAN&gt; &lt;SPAN class="str"&gt;"device"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt; &lt;SPAN class="str"&gt;"/dev/video0"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; NULL&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;  g_object_set&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;G_OBJECT&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;splitmuxsink&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;),&lt;/SPAN&gt; &lt;SPAN class="str"&gt;"location"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; filename&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; NULL&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;  g_object_set&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;G_OBJECT&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;splitmuxsink&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;),&lt;/SPAN&gt; &lt;SPAN class="str"&gt;"max-size-time"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; nanoDuration&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; NULL&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;  g_object_set&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;G_OBJECT&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;splitmuxsink&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;),&lt;/SPAN&gt; &lt;SPAN class="str"&gt;"async-handling"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt; &lt;SPAN class="lit"&gt;1&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; NULL&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;  g_signal_connect &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;G_OBJECT&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;splitmuxsink&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;),&lt;/SPAN&gt; &lt;SPAN class="str"&gt;"format-location"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; G_CALLBACK&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;cb_FormatLocation&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;),&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;&amp;amp;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;offset&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;

  &lt;SPAN class="com"&gt;/* Build the pipeline */&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;  gst_bin_add_many &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;GST_BIN &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;pipeline&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;),&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; source&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; frameratefilter&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; encoder&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; h264parse&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; splitmuxsink&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;  NULL&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;
  &lt;SPAN class="kwd"&gt;if&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; gst_element_link_many&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;source&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; frameratefilter&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; encoder&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; h264parse&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; splitmuxsink&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; NULL&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;)&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;!=&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; TRUE &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;){&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;    g_error&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="str"&gt;"Failed to link save elements!"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;    gst_object_unref &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;pipeline&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;
    &lt;SPAN class="kwd"&gt;return&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;-&lt;/SPAN&gt;&lt;SPAN class="lit"&gt;1&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;;&lt;/SPAN&gt;
  &lt;SPAN class="pun"&gt;}&lt;/SPAN&gt;

  &lt;SPAN class="com"&gt;/* Start playing */&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;  ret &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;=&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; gst_element_set_state &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;pipeline&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; GST_STATE_PLAYING&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;
  &lt;SPAN class="kwd"&gt;if&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;ret &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;==&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; GST_STATE_CHANGE_FAILURE&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;)&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;{&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;    g_printerr &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="str"&gt;"Unable to set the pipeline to the playing state.\n"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;    gst_object_unref &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;pipeline&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;
    &lt;SPAN class="kwd"&gt;return&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;-&lt;/SPAN&gt;&lt;SPAN class="lit"&gt;1&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;;&lt;/SPAN&gt;
  &lt;SPAN class="pun"&gt;}&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;                

  g_timeout_add_seconds_full &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;G_PRIORITY_DEFAULT&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt; &lt;SPAN class="lit"&gt;1&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; timeout_callback &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; loop&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; NULL&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;  g_main_loop_run &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;loop&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;  g_main_loop_unref&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;loop&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;  bus &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;=&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; gst_element_get_bus &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;pipeline&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;  gst_element_send_event&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;source&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; gst_event_new_eos&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;());&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;  gst_element_set_state &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;splitmuxsink&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; GST_STATE_PAUSED&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;  gst_element_set_state &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;splitmuxsink&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; GST_STATE_READY&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;  gst_element_set_state &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;splitmuxsink&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; GST_STATE_NULL&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;  gst_element_send_event&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;splitmuxsink&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; gst_event_new_eos&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;());&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;  gst_element_send_event&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;frameratefilter&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; gst_event_new_eos&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;());&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;  gst_element_send_event&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;encoder&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; gst_event_new_eos&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;());&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;  gst_element_send_event&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;h264parse&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; gst_event_new_eos&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;());&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;  gst_element_send_event&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;pipeline&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; gst_event_new_eos&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;());&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; 
  gst_object_unref &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;bus&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;  gst_element_set_state &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;pipeline&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; GST_STATE_NULL&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;  gst_object_unref &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;pipeline&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;
  &lt;SPAN class="kwd"&gt;return&lt;/SPAN&gt; &lt;SPAN class="lit"&gt;0&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="pun"&gt;}&lt;/SPAN&gt;&lt;/PRE&gt;&lt;P&gt;I set video duration to 5 minutes. If I close the pipeline earlier, my video will be broken. I can't play it with error:&lt;/P&gt;&lt;BLOCKQUOTE&gt;&lt;P&gt;ERROR GStreamer encountered a general stream error. for file://video1.mp4 ERROR debug information: ../../../imx-gst1.0-plugin-4.1.6/plugins/aiurdemux/aiurdemux.c(1015): aiurdemux_pull_task (): /GstPlayBin:playbin/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0/GstAiurDemux:aiurdemux0: streaming stopped, reason error, state 1 Reached end of play list.&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;And this is output after send EOS event which I get from gst-debug level 5 with GST_EVENT* keyword.&lt;/P&gt;&lt;BLOCKQUOTE&gt;&lt;P&gt;0:00:14.927594335 20227 0x55ce3e40 DEBUG GST_EVENT gstevent.c:302:gst_event_new_custom: creating new event 0x55b6b170 eos 28174 0:00:14.946297335 20227 0x55ce3e40 DEBUG GST_EVENT gstevent.c:302:gst_event_new_custom: creating new event 0x55b6b128 eos 28174 0:00:14.946422335 20227 0x55ce3e40 DEBUG GST_EVENT gstevent.c:302:gst_event_new_custom: creating new event 0x55b6b0e0 eos 28174 0:00:14.946506335 20227 0x55ce3e40 DEBUG GST_EVENT gstevent.c:302:gst_event_new_custom: creating new event 0x55b6b098 eos 28174 0:00:14.946583668 20227 0x55ce3e40 DEBUG GST_EVENT gstevent.c:302:gst_event_new_custom: creating new event 0x55b6b050 eos 28174 0:00:14.946658002 20227 0x55ce3e40 DEBUG GST_EVENT gstevent.c:302:gst_event_new_custom: creating new event 0x55b6b008 eos 28174 0:00:14.946733335 20227 0x55ce3e40 DEBUG GST_EVENT gstevent.c:302:gst_event_new_custom: creating new event 0x55b6af60 eos 28174 0:00:14.946809002 20227 0x55ce3e40 DEBUG GST_EVENT gstevent.c:302:gst_event_new_custom: creating new event 0x55b6af60 eos 28174 0:00:14.946920002 20227 0x55ce3e40 DEBUG GST_EVENT gstevent.c:302:gst_event_new_custom: creating new event 0x55b6b008 eos 28174 0:00:14.949387668 20227 0x55ce3e40 DEBUG GST_EVENT gstevent.c:302:gst_event_new_custom: creating new event 0x55b6b050 eos 28174&lt;/P&gt;&lt;P&gt;0:00:14.949892002 20227 0x55ce3e40 DEBUG GST_EVENT gstpad.c:5517:gst_pad_send_event_unchecked:splitmuxsink0:video have event type eos event: 0x55b6b050, time 99:99:99.999999999, seq-num 8610, (NULL) 0:00:14.950435002 20227 0x55ce3e40 INFO&lt;BR /&gt;GST_EVENT gstpad.c:5622:gst_pad_send_event_unchecked:splitmuxsink0:video Received event on flushing pad. Discarding 0:00:14.951042002 20227 0x55ce3e40 DEBUG GST_EVENT gstevent.c:302:gst_event_new_custom: creating new event 0x55b6b098 eos 28174 0:00:14.951594668 20227 0x55ce3e40 DEBUG GST_EVENT gstpad.c:5517:gst_pad_send_event_unchecked:capsfilter0:sink have event type eos event: 0x55b6b098, time 99:99:99.999999999, seq-num 8611, (NULL) 0:00:14.951859002 20227 0x55ce3e40 DEBUG&lt;BR /&gt;GST_EVENT gstpad.c:5517:gst_pad_send_event_unchecked:&amp;lt;vpuenc_h264-0:sink&amp;gt; have event type eos event: 0x55b6b098, time 99:99:99.999999999, seq-num 8611, (NULL) 0:00:14.952538668 20227 0x55ce3e40 DEBUG&lt;BR /&gt;GST_EVENT gstpad.c:5517:gst_pad_send_event_unchecked:h264parse0:sink have event type eos event: 0x55b6b098, time 99:99:99.999999999, seq-num 8611, (NULL) 0:00:14.950342002 20227 0x55ca28f0 DEBUG&lt;BR /&gt;GST_EVENT gstpad.c:5517:gst_pad_send_event_unchecked:textoverlay:video_sink have event type eos event: 0x55b6b170, time 99:99:99.999999999, seq-num 8587, (NULL) 0:00:14.953315335 20227 0x55ca28f0 DEBUG&lt;BR /&gt;GST_EVENT gstpad.c:5517:gst_pad_send_event_unchecked:capsfilter0:sink have event type eos event: 0x55b6b170, time 99:99:99.999999999, seq-num 8587, (NULL) 0:00:14.953753335 20227 0x55ce3e40 DEBUG&lt;BR /&gt;GST_EVENT gstpad.c:5517:gst_pad_send_event_unchecked:splitmuxsink0:video have event type eos event: 0x55b6b098, time 99:99:99.999999999, seq-num 8611, (NULL) 0:00:14.953990335 20227 0x55ce3e40 INFO&lt;BR /&gt;GST_EVENT gstpad.c:5622:gst_pad_send_event_unchecked:splitmuxsink0:video Received event on flushing pad. Discarding 0:00:14.954883668 20227 0x55ce3e40 DEBUG GST_EVENT gstevent.c:302:gst_event_new_custom: creating new event 0x55b6b0e0 eos 28174 0:00:14.955373668 20227 0x55ce3e40 DEBUG GST_EVENT gstpad.c:5517:gst_pad_send_event_unchecked:&amp;lt;vpuenc_h264-0:sink&amp;gt; have event type eos event: 0x55b6b0e0, time 99:99:99.999999999, seq-num 8612, (NULL) 0:00:14.956013335 20227 0x55ce3e40 DEBUG&lt;BR /&gt;GST_EVENT gstevent.c:302:gst_event_new_custom: creating new event 0x55b6b128 eos 28174 0:00:14.956592668 20227 0x55ce3e40 DEBUG&lt;BR /&gt;GST_EVENT gstpad.c:5517:gst_pad_send_event_unchecked:h264parse0:sink have event type eos event: 0x55b6b128, time 99:99:99.999999999, seq-num 8613, (NULL) 0:00:14.957167002 20227 0x55ce3e40 DEBUG&lt;BR /&gt;GST_EVENT gstevent.c:302:gst_event_new_custom: creating new event 0x55b6b1b8 eos 28174&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;As my code above, I send EOS event to each elements to stop pipeline. The pipeline also stop but video can't be played. Then, I tried to send EOS to only pipeline and wait EOS on bus message to set pipeline to NULL state. But my program is hang.&lt;/P&gt;&lt;P&gt;This is the way which I mentioned:&lt;/P&gt;&lt;PRE&gt;&lt;SPAN class="pln"&gt;  gst_element_send_event&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;pipeline&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; gst_event_new_eos&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;());&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;  
  msg &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;=&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; gst_bus_timed_pop_filtered &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;bus&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; GST_CLOCK_TIME_NONE&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;GST_MESSAGE_ERROR &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;|&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; GST_MESSAGE_EOS&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;
  &lt;SPAN class="kwd"&gt;if&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;msg &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;!=&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; NULL&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;){&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;    gst_message_unref &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;msg&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;
  &lt;SPAN class="pun"&gt;}&lt;/SPAN&gt;&lt;/PRE&gt;&lt;P&gt;How can I close video by the right way ?&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;</description>
    <pubDate>Thu, 03 Sep 2020 04:59:49 GMT</pubDate>
    <dc:creator>toanjunifer</dc:creator>
    <dc:date>2020-09-03T04:59:49Z</dc:date>
    <item>
      <title>GStreamer - Stop pipeline when pipeline is using splitmuxsink.</title>
      <link>https://community.nxp.com/t5/Using-Our-Community/GStreamer-Stop-pipeline-when-pipeline-is-using-splitmuxsink/m-p/1134877#M497</link>
      <description>&lt;DIV class="js-vote-count grid--cell fc-black-500 fs-title grid fd-column ai-center"&gt;&lt;SPAN&gt;I'm using splitmuxsink in Gstreamer with C language to record video. This is my pipeline:&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class="postcell post-layout--right"&gt;&lt;DIV class="s-prose js-post-body"&gt;&lt;BLOCKQUOTE&gt;&lt;P&gt;source -&amp;gt; frameratefilter -&amp;gt; encoder -&amp;gt; h264parse -&amp;gt; splitmuxsink&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;This is my code in simple:&lt;/P&gt;&lt;PRE&gt;&lt;SPAN class="kwd"&gt;static&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; gchar&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;*&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; cb_FormatLocation&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="typ"&gt;GstElement&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;*&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; splitmuxsink&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; guint fragment_id&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt; &lt;SPAN class="kwd"&gt;const&lt;/SPAN&gt; &lt;SPAN class="typ"&gt;int&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;*&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; offset&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;){&lt;/SPAN&gt;
  &lt;SPAN class="com"&gt;//Set filename&lt;/SPAN&gt;
  &lt;SPAN class="kwd"&gt;return&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; filename&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="pun"&gt;}&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;gboolean timeout_callback&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;gpointer data&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;){&lt;/SPAN&gt;
  &lt;SPAN class="kwd"&gt;if&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;(&lt;/SPAN&gt; &lt;SPAN class="com"&gt;//meet signal stop video ){&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;    g_main_loop_quit&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;((&lt;/SPAN&gt;&lt;SPAN class="typ"&gt;GMainLoop&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;*)&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;data&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;
    &lt;SPAN class="kwd"&gt;return&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; FALSE&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;;&lt;/SPAN&gt;
  &lt;SPAN class="pun"&gt;}&lt;/SPAN&gt;
  &lt;SPAN class="kwd"&gt;return&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; TRUE&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="pun"&gt;}&lt;/SPAN&gt;

&lt;SPAN class="typ"&gt;int&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; main&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="typ"&gt;int&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; argc&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt; &lt;SPAN class="kwd"&gt;char&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;*&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; argv&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;[]){&lt;/SPAN&gt;
  &lt;SPAN class="typ"&gt;GstElement&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;*&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;pipeline&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;*&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;source&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;*&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;frameratefilter_&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;*&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;h264parse&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;*&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;encoder&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;*&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;splitmuxsink&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;;&lt;/SPAN&gt;

  &lt;SPAN class="com"&gt;/* Initialize GStreamer */&lt;/SPAN&gt;
  &lt;SPAN class="com"&gt;/* Create the empty pipeline */&lt;/SPAN&gt;
  &lt;SPAN class="com"&gt;/* Create the elements */&lt;/SPAN&gt;

  &lt;SPAN class="com"&gt;// Set parameters for some elements&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;  g_object_set&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;G_OBJECT&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;source&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;),&lt;/SPAN&gt; &lt;SPAN class="str"&gt;"device"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt; &lt;SPAN class="str"&gt;"/dev/video0"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; NULL&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;  g_object_set&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;G_OBJECT&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;splitmuxsink&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;),&lt;/SPAN&gt; &lt;SPAN class="str"&gt;"location"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; filename&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; NULL&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;  g_object_set&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;G_OBJECT&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;splitmuxsink&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;),&lt;/SPAN&gt; &lt;SPAN class="str"&gt;"max-size-time"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; nanoDuration&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; NULL&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;  g_object_set&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;G_OBJECT&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;splitmuxsink&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;),&lt;/SPAN&gt; &lt;SPAN class="str"&gt;"async-handling"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt; &lt;SPAN class="lit"&gt;1&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; NULL&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;  g_signal_connect &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;G_OBJECT&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;splitmuxsink&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;),&lt;/SPAN&gt; &lt;SPAN class="str"&gt;"format-location"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; G_CALLBACK&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;cb_FormatLocation&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;),&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;&amp;amp;&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;offset&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;

  &lt;SPAN class="com"&gt;/* Build the pipeline */&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;  gst_bin_add_many &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;GST_BIN &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;pipeline&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;),&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; source&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; frameratefilter&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; encoder&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; h264parse&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; splitmuxsink&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;  NULL&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;
  &lt;SPAN class="kwd"&gt;if&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; gst_element_link_many&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;source&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; frameratefilter&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; encoder&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; h264parse&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; splitmuxsink&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; NULL&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;)&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;!=&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; TRUE &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;){&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;    g_error&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="str"&gt;"Failed to link save elements!"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;    gst_object_unref &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;pipeline&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;
    &lt;SPAN class="kwd"&gt;return&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;-&lt;/SPAN&gt;&lt;SPAN class="lit"&gt;1&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;;&lt;/SPAN&gt;
  &lt;SPAN class="pun"&gt;}&lt;/SPAN&gt;

  &lt;SPAN class="com"&gt;/* Start playing */&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;  ret &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;=&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; gst_element_set_state &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;pipeline&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; GST_STATE_PLAYING&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;
  &lt;SPAN class="kwd"&gt;if&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;ret &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;==&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; GST_STATE_CHANGE_FAILURE&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;)&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;{&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;    g_printerr &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="str"&gt;"Unable to set the pipeline to the playing state.\n"&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;    gst_object_unref &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;pipeline&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;
    &lt;SPAN class="kwd"&gt;return&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;-&lt;/SPAN&gt;&lt;SPAN class="lit"&gt;1&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;;&lt;/SPAN&gt;
  &lt;SPAN class="pun"&gt;}&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;                

  g_timeout_add_seconds_full &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;G_PRIORITY_DEFAULT&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt; &lt;SPAN class="lit"&gt;1&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; timeout_callback &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; loop&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; NULL&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;  g_main_loop_run &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;loop&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;  g_main_loop_unref&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;loop&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;  bus &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;=&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; gst_element_get_bus &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;pipeline&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;  gst_element_send_event&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;source&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; gst_event_new_eos&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;());&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;  gst_element_set_state &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;splitmuxsink&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; GST_STATE_PAUSED&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;  gst_element_set_state &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;splitmuxsink&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; GST_STATE_READY&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;  gst_element_set_state &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;splitmuxsink&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; GST_STATE_NULL&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;  gst_element_send_event&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;splitmuxsink&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; gst_event_new_eos&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;());&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;  gst_element_send_event&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;frameratefilter&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; gst_event_new_eos&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;());&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;  gst_element_send_event&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;encoder&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; gst_event_new_eos&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;());&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;  gst_element_send_event&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;h264parse&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; gst_event_new_eos&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;());&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;  gst_element_send_event&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;pipeline&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; gst_event_new_eos&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;());&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; 
  gst_object_unref &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;bus&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;  gst_element_set_state &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;pipeline&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; GST_STATE_NULL&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;  gst_object_unref &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;pipeline&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;
  &lt;SPAN class="kwd"&gt;return&lt;/SPAN&gt; &lt;SPAN class="lit"&gt;0&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="pun"&gt;}&lt;/SPAN&gt;&lt;/PRE&gt;&lt;P&gt;I set video duration to 5 minutes. If I close the pipeline earlier, my video will be broken. I can't play it with error:&lt;/P&gt;&lt;BLOCKQUOTE&gt;&lt;P&gt;ERROR GStreamer encountered a general stream error. for file://video1.mp4 ERROR debug information: ../../../imx-gst1.0-plugin-4.1.6/plugins/aiurdemux/aiurdemux.c(1015): aiurdemux_pull_task (): /GstPlayBin:playbin/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0/GstAiurDemux:aiurdemux0: streaming stopped, reason error, state 1 Reached end of play list.&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;And this is output after send EOS event which I get from gst-debug level 5 with GST_EVENT* keyword.&lt;/P&gt;&lt;BLOCKQUOTE&gt;&lt;P&gt;0:00:14.927594335 20227 0x55ce3e40 DEBUG GST_EVENT gstevent.c:302:gst_event_new_custom: creating new event 0x55b6b170 eos 28174 0:00:14.946297335 20227 0x55ce3e40 DEBUG GST_EVENT gstevent.c:302:gst_event_new_custom: creating new event 0x55b6b128 eos 28174 0:00:14.946422335 20227 0x55ce3e40 DEBUG GST_EVENT gstevent.c:302:gst_event_new_custom: creating new event 0x55b6b0e0 eos 28174 0:00:14.946506335 20227 0x55ce3e40 DEBUG GST_EVENT gstevent.c:302:gst_event_new_custom: creating new event 0x55b6b098 eos 28174 0:00:14.946583668 20227 0x55ce3e40 DEBUG GST_EVENT gstevent.c:302:gst_event_new_custom: creating new event 0x55b6b050 eos 28174 0:00:14.946658002 20227 0x55ce3e40 DEBUG GST_EVENT gstevent.c:302:gst_event_new_custom: creating new event 0x55b6b008 eos 28174 0:00:14.946733335 20227 0x55ce3e40 DEBUG GST_EVENT gstevent.c:302:gst_event_new_custom: creating new event 0x55b6af60 eos 28174 0:00:14.946809002 20227 0x55ce3e40 DEBUG GST_EVENT gstevent.c:302:gst_event_new_custom: creating new event 0x55b6af60 eos 28174 0:00:14.946920002 20227 0x55ce3e40 DEBUG GST_EVENT gstevent.c:302:gst_event_new_custom: creating new event 0x55b6b008 eos 28174 0:00:14.949387668 20227 0x55ce3e40 DEBUG GST_EVENT gstevent.c:302:gst_event_new_custom: creating new event 0x55b6b050 eos 28174&lt;/P&gt;&lt;P&gt;0:00:14.949892002 20227 0x55ce3e40 DEBUG GST_EVENT gstpad.c:5517:gst_pad_send_event_unchecked:splitmuxsink0:video have event type eos event: 0x55b6b050, time 99:99:99.999999999, seq-num 8610, (NULL) 0:00:14.950435002 20227 0x55ce3e40 INFO&lt;BR /&gt;GST_EVENT gstpad.c:5622:gst_pad_send_event_unchecked:splitmuxsink0:video Received event on flushing pad. Discarding 0:00:14.951042002 20227 0x55ce3e40 DEBUG GST_EVENT gstevent.c:302:gst_event_new_custom: creating new event 0x55b6b098 eos 28174 0:00:14.951594668 20227 0x55ce3e40 DEBUG GST_EVENT gstpad.c:5517:gst_pad_send_event_unchecked:capsfilter0:sink have event type eos event: 0x55b6b098, time 99:99:99.999999999, seq-num 8611, (NULL) 0:00:14.951859002 20227 0x55ce3e40 DEBUG&lt;BR /&gt;GST_EVENT gstpad.c:5517:gst_pad_send_event_unchecked:&amp;lt;vpuenc_h264-0:sink&amp;gt; have event type eos event: 0x55b6b098, time 99:99:99.999999999, seq-num 8611, (NULL) 0:00:14.952538668 20227 0x55ce3e40 DEBUG&lt;BR /&gt;GST_EVENT gstpad.c:5517:gst_pad_send_event_unchecked:h264parse0:sink have event type eos event: 0x55b6b098, time 99:99:99.999999999, seq-num 8611, (NULL) 0:00:14.950342002 20227 0x55ca28f0 DEBUG&lt;BR /&gt;GST_EVENT gstpad.c:5517:gst_pad_send_event_unchecked:textoverlay:video_sink have event type eos event: 0x55b6b170, time 99:99:99.999999999, seq-num 8587, (NULL) 0:00:14.953315335 20227 0x55ca28f0 DEBUG&lt;BR /&gt;GST_EVENT gstpad.c:5517:gst_pad_send_event_unchecked:capsfilter0:sink have event type eos event: 0x55b6b170, time 99:99:99.999999999, seq-num 8587, (NULL) 0:00:14.953753335 20227 0x55ce3e40 DEBUG&lt;BR /&gt;GST_EVENT gstpad.c:5517:gst_pad_send_event_unchecked:splitmuxsink0:video have event type eos event: 0x55b6b098, time 99:99:99.999999999, seq-num 8611, (NULL) 0:00:14.953990335 20227 0x55ce3e40 INFO&lt;BR /&gt;GST_EVENT gstpad.c:5622:gst_pad_send_event_unchecked:splitmuxsink0:video Received event on flushing pad. Discarding 0:00:14.954883668 20227 0x55ce3e40 DEBUG GST_EVENT gstevent.c:302:gst_event_new_custom: creating new event 0x55b6b0e0 eos 28174 0:00:14.955373668 20227 0x55ce3e40 DEBUG GST_EVENT gstpad.c:5517:gst_pad_send_event_unchecked:&amp;lt;vpuenc_h264-0:sink&amp;gt; have event type eos event: 0x55b6b0e0, time 99:99:99.999999999, seq-num 8612, (NULL) 0:00:14.956013335 20227 0x55ce3e40 DEBUG&lt;BR /&gt;GST_EVENT gstevent.c:302:gst_event_new_custom: creating new event 0x55b6b128 eos 28174 0:00:14.956592668 20227 0x55ce3e40 DEBUG&lt;BR /&gt;GST_EVENT gstpad.c:5517:gst_pad_send_event_unchecked:h264parse0:sink have event type eos event: 0x55b6b128, time 99:99:99.999999999, seq-num 8613, (NULL) 0:00:14.957167002 20227 0x55ce3e40 DEBUG&lt;BR /&gt;GST_EVENT gstevent.c:302:gst_event_new_custom: creating new event 0x55b6b1b8 eos 28174&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;As my code above, I send EOS event to each elements to stop pipeline. The pipeline also stop but video can't be played. Then, I tried to send EOS to only pipeline and wait EOS on bus message to set pipeline to NULL state. But my program is hang.&lt;/P&gt;&lt;P&gt;This is the way which I mentioned:&lt;/P&gt;&lt;PRE&gt;&lt;SPAN class="pln"&gt;  gst_element_send_event&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;pipeline&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; gst_event_new_eos&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;());&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;  
  msg &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;=&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; gst_bus_timed_pop_filtered &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;bus&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; GST_CLOCK_TIME_NONE&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;,&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;GST_MESSAGE_ERROR &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;|&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; GST_MESSAGE_EOS&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;
  &lt;SPAN class="kwd"&gt;if&lt;/SPAN&gt; &lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;msg &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;!=&lt;/SPAN&gt;&lt;SPAN class="pln"&gt; NULL&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;){&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;    gst_message_unref &lt;/SPAN&gt;&lt;SPAN class="pun"&gt;(&lt;/SPAN&gt;&lt;SPAN class="pln"&gt;msg&lt;/SPAN&gt;&lt;SPAN class="pun"&gt;);&lt;/SPAN&gt;
  &lt;SPAN class="pun"&gt;}&lt;/SPAN&gt;&lt;/PRE&gt;&lt;P&gt;How can I close video by the right way ?&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Thu, 03 Sep 2020 04:59:49 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Using-Our-Community/GStreamer-Stop-pipeline-when-pipeline-is-using-splitmuxsink/m-p/1134877#M497</guid>
      <dc:creator>toanjunifer</dc:creator>
      <dc:date>2020-09-03T04:59:49Z</dc:date>
    </item>
  </channel>
</rss>

