<div dir="ltr"><br><br>> I think one solution for you would be to add a buffer probe on the audio<br>> stream and drop any audio before the first video frame arrives.<br><div><br></div><div>This solution works for me. Here's the prototype code I used to test</div><div><br></div><div>gulong audioprobe_id;<br>GstPad *audioparse_pad;<br><br>GstPadProbeReturn audioparse_drop_buffer (GstPad *pad, GstPadProbeInfo *info,<br>                                          gpointer user_data) {<br>  g_message ("Need to drop this audio buffer");<br>  return GST_PAD_PROBE_DROP;<br>}<br><br>//Need To Drop Audio buffers until video arrives<br>static void<br>handle_media_stream (GstPad *pad, GstElement *pipe, const char *convert_name,<br>  const char *sink_name) {<br>    GstElement *q, *audioconvert, *videoconvert, *faac, *aacparse;<br>    GstElement *audiosink, *videosink;<br>    GstPad *qpad, *p1, *p2;<br>    static GstElement *hlssink2 = NULL;<br><br>    GstElement *x264enc, *h264parse;<br>    GstPad *videoparse_pad;<br><br>    gboolean ret;<br><br>    if (g_str_equal (convert_name, "audioconvert")) {<br>      g_message ("Received Audio");<br>      q = gst_element_factory_make ("queue", "queue");<br>      audioconvert = gst_element_factory_make ("audioconvert", "audioconvert");<br>      hlssink2 = gst_element_factory_make ("hlssink2", "hlssink2");<br>      g_object_set (hlssink2, "max-files", 5, "target-duration", 4, NULL);<br>      faac = gst_element_factory_make ("avenc_aac", "avenc_aac");<br>      aacparse = gst_element_factory_make ("aacparse", "aacparse");<br><br>      /*audiosink = gst_element_factory_make ("autoaudiosink", "autoaudiosink");<br>      gst_bin_add_many (GST_BIN (pipe), q, audioconvert, audiosink, NULL);*/<br><br>      gst_bin_add_many (GST_BIN (pipe), q, audioconvert, faac, aacparse,<br>                        hlssink2, NULL);<br>      gst_element_sync_state_with_parent (q);<br>      gst_element_sync_state_with_parent (audioconvert);<br>      gst_element_sync_state_with_parent (faac);<br>      gst_element_sync_state_with_parent (aacparse);<br>      //gst_element_sync_state_with_parent (audiosink);<br>      //gst_element_link_many (q, audioconvert, audiosink, NULL);<br>      gst_element_link_many (q, audioconvert, faac, aacparse, NULL);<br><br>      //Drop Audio Buffers<br>      audioparse_pad = gst_element_get_static_pad (aacparse, "src");<br>      audioprobe_id = gst_pad_add_probe (audioparse_pad, GST_PAD_PROBE_TYPE_BUFFER,<br>              audioparse_drop_buffer, NULL, NULL);<br><br>      //Regular pad linking<br>      p1 = gst_element_get_request_pad (hlssink2, "audio");<br>      audioparse_pad = gst_element_get_static_pad (aacparse, "src");<br>      ret = gst_pad_link (audioparse_pad, p1);<br><br>      g_message ("Audio Pad Link: %d", ret);<br>      g_assert_cmphex (ret, ==, GST_PAD_LINK_OK);<br><br>      qpad = gst_element_get_static_pad (q, "sink");<br>      ret = gst_pad_link (pad, qpad);<br>      g_assert_cmphex (ret, ==, GST_PAD_LINK_OK);<br>    }<br>    else if (g_str_equal (convert_name, "videoconvert")) {<br>      g_message ("Received Video");<br>      q = gst_element_factory_make ("queue", "videoqueue");<br>      videoconvert = gst_element_factory_make ("videoconvert", "videoconvert");<br>      x264enc = gst_element_factory_make ("x264enc", "x264enc");<br>      h264parse = gst_element_factory_make ("h264parse", "h264parse");<br><br>      gst_bin_add_many (GST_BIN (pipe), q, videoconvert, x264enc, h264parse,<br>                        NULL);<br>      gst_element_sync_state_with_parent (q);<br>      gst_element_sync_state_with_parent (videoconvert);<br>      gst_element_sync_state_with_parent (x264enc);<br>      gst_element_sync_state_with_parent (h264parse);<br>      //gst_element_sync_state_with_parent (audiosink);<br>      //gst_element_link_many (q, audioconvert, audiosink, NULL);<br>      gst_element_link_many (q, videoconvert, x264enc, h264parse, NULL);<br><br>      //Regular pad linking<br>      p1 = gst_element_get_request_pad (hlssink2, "video");<br>      videoparse_pad = gst_element_get_static_pad (h264parse, "src");<br>      ret = gst_pad_link (videoparse_pad, p1);<br>      g_message ("Video Pad Link: %d", ret);<br>      g_assert_cmphex (ret, ==, GST_PAD_LINK_OK);<br><br>      qpad = gst_element_get_static_pad (q, "sink");<br>      ret = gst_pad_link (pad, qpad);<br>      g_assert_cmphex (ret, ==, GST_PAD_LINK_OK);<br>      gst_pad_remove_probe (audioparse_pad, audioprobe_id);<br>    }<br>} <br></div></div>