<div dir="ltr"><br>        data.source = gst_element_factory_make ("uridecodebin", "source");<br>        data.convert = gst_element_factory_make ("videoconvert", "convert");<br>        data.sink = gst_element_factory_make ("autovideosink", "sink");<br>        data.videoconvert1 = gst_element_factory_make("videoconvert", "videoconvert1");<br>        data.videoconvert2 = gst_element_factory_make("videoconvert", "videoconvert2");<br>        data.queue1 = gst_element_factory_make("queue", "queue1");<br>        data.queue2 = gst_element_factory_make("queue", "queue2");<br>        data.tee = gst_element_factory_make("tee", "tee");<br>  <br>        data.frameratefilter = gst_element_factory_make("capsfilter", NULL);<br>        data.videorate = gst_element_factory_make("videorate", NULL);<br>        data.avenc = gst_element_factory_make("avenc_mpeg2video", NULL);<br>        data.avimux = gst_element_factory_make("avimux", NULL);<br>        data.filesink = gst_element_factory_make("multifilesink", "filesink");<br>        data.splitmuxsink = gst_element_factory_make("splitmuxsink", "splitmuxsink");<br>      //  data.getchararray = gst_element_factory_make("/home/shubham/splintng/Videos", "getchararray");<br><br>       // data.filesink2 = gst_element_factory_make("filesink2", NULL);<br>  <br><br>     /* Create the empty pipeline */<br>       data.pipeline = gst_pipeline_new ("test-pipeline");<br><br>  if (!data.pipeline || !data.source || !data.convert || !data.videoconvert1 || !data.videoconvert2 || !data.queue1 || !data.queue2 || !data.tee || !data.sink || !data.filesink || !data.splitmuxsink ) {<br>    g_printerr ("Not all elements could be created.\n");<br>    return -1;<br>  }<br><br>        g_object_set(G_OBJECT(data.frameratefilter), "caps", gst_caps_from_string("video/x-raw,framerate=50/1"), NULL);<br>       /<br>  /* Build the pipeline. Note that we are NOT linking the source at this<br>   * point. We will do it later. */<br>  gst_bin_add_many (GST_BIN (data.pipeline), data.source, data.convert , data.videoconvert1, data.videoconvert2, data.queue1, data.queue2, data.tee, data.sink, data.frameratefilter, data.videorate, data.avenc, data.avimux, data.filesink,data.filesink2,NULL);<br>  if (!gst_element_link (data.convert, data.tee)) {<br>    g_printerr ("Elements could not be linked.\n");<br>    gst_object_unref (data.pipeline);<br>    return -1;<br>  }<br>if (!gst_element_link_many(data.queue1, data.videoconvert1, data.sink, NULL))<br>        g_error("Failed to link display elements!");<br>    if (!gst_element_link_many(data.queue2, data.videorate, data.frameratefilter, data.videoconvert2, data.avenc,data.avimux, data.filesink, NULL))<br>        g_error("Failed to link save elements!");<br><br>    if ( !(data.tee_src_pad_template = gst_element_class_get_pad_template (GST_ELEMENT_GET_CLASS (data.tee), "src_%u"))) {<br>      g_critical ("Unable to get pad template!");<br>      return;<br>     }<br><br>        data.qpad1 = gst_element_get_static_pad(data.queue1, "sink");<br>    data.qpad2 = gst_element_get_static_pad(data.queue2, "sink");<br>    data.teepad1 = gst_element_request_pad (data.tee, data.tee_src_pad_template, NULL, NULL);<br>    g_print ("Obtained request pad %s for queue1 branch.\n", gst_pad_get_name (data.teepad1));<br>    data.teepad2 = gst_element_request_pad (data.tee, data.tee_src_pad_template, NULL, NULL);<br>    g_print ("Obtained request pad %s for queue2 branch.\n", gst_pad_get_name (data.teepad2));<br><br>    if(!data.teepad1 || !data.teepad2 || !data.qpad1 || !data.qpad2){<br>        g_error("Creation of one tee pad failed.");<br>        return;<br>    }<br><br>    gst_pad_link (data.teepad1, data.qpad1);<br>    gst_pad_link (data.teepad2, data.qpad2);<br><br>    gst_object_unref (GST_OBJECT (data.qpad1));<br>    gst_object_unref (GST_OBJECT (data.qpad2));<br>    gst_object_unref (GST_OBJECT (data.teepad1));<br>    gst_object_unref (GST_OBJECT (data.teepad2));<br><br>     <br>    GST_DEBUG_BIN_TO_DOT_FILE(GST_BIN(data.pipeline), GST_DEBUG_GRAPH_SHOW_ALL, "pipeline_graph");<br><br>  /* Set the URI to play */<br>  g_object_set (data.source, "uri","ipaddress", NULL);<br><br>  /* Connect to the pad-added signal */<br>  g_signal_connect (data.source, "pad-added", G_CALLBACK (pad_added_handler), &data);<br>  //printf("%s",*prop);<br>  /* Start playing */<br>  printf("start playing..\n");<br>  ret = gst_element_set_state (data.pipeline, GST_STATE_PLAYING);<br>  if (ret == GST_STATE_CHANGE_FAILURE) {<br>    g_printerr ("Unable to set the pipeline to the playing state.\n");<br>    gst_object_unref (data.pipeline);<br>    return -1;<br><div>  }</div><div><br></div><div>         g_object_set (G_OBJECT (data.filesink), "location","/home/shubham/Videos/video%03d.mp4","async",0, NULL);<br>         g_object_set(G_OBJECT (data.filesink),"post-messages", TRUE, "multifilesink", 0, NULL);   <br>      <br>        g_object_set(G_OBJECT (data.filesink),"next-file", 4,"multifilesink", 0, NULL);<br>       <br>        g_object_set(G_OBJECT (data.filesink), "max-file-size", 1000000, "multifilesink", 0, NULL);<br>        <br>        g_object_set(G_OBJECT (data.filesink), "max-files", 5, "multifilesink", 0, NULL);</div><div><br></div><div><br></div><div><br></div><div>/* This function will be called by the pad-added signal */<br>static void pad_added_handler (GstElement *src, GstPad *new_pad, CustomData *data) {<br>  GstPad *sink_pad = gst_element_get_static_pad (data->convert, "sink");<br>  GstPadLinkReturn ret;<br>  GstCaps *new_pad_caps = NULL;<br>  GstStructure *new_pad_struct = NULL;<br>  const gchar *new_pad_type = NULL;<br><br>  g_print ("Received new pad '%s' from '%s':\n", GST_PAD_NAME (new_pad), GST_ELEMENT_NAME (src));<br><br>  /* If our converter is already linked, we have nothing to do here */<br>  if (gst_pad_is_linked (sink_pad)) {<br>    g_print ("  We are already linked. Ignoring.\n");<br>    goto exit;<br>  }<br><br>  /* Check the new pad's type */<br>  new_pad_caps = gst_pad_query_caps (new_pad, NULL);<br>  new_pad_struct = gst_caps_get_structure (new_pad_caps, 0);<br>  new_pad_type = gst_structure_get_name (new_pad_struct);<br>  if (!g_str_has_prefix (new_pad_type, "video/x-raw")) {<br>    g_print ("  It has type '%s' which is not raw audio. Ignoring.\n", new_pad_type);<br>    goto exit;<br>  }<br><br>  /* Attempt the link */<br>  ret = gst_pad_link (new_pad, sink_pad);<br>  if (GST_PAD_LINK_FAILED (ret)) {<br>    g_print ("  Type is '%s' but link failed.\n", new_pad_type);<br>  } else {<br>    g_print ("  Link succeeded (type '%s').\n", new_pad_type);<br>  }<br><br>exit:<br>  /* Unreference the new pad's caps, if we got them */<br>  if (new_pad_caps != NULL)<br>    gst_caps_unref (new_pad_caps);<br><br>  /* Unreference the sink pad */<br>  gst_object_unref (sink_pad);<br>}</div><div><br></div><div><br></div><div><br></div><div>Through this code i can save a file of video at specific location.</div><div>But i m trying to record audio as well and sync it with video.</div><div>Please Help.<br></div><div><br></div></div>