Take snapshot from running pipeline in gstreamer with iOS

Macjon jonah.hulselmans at flowpilots.com
Mon Jul 4 16:12:51 UTC 2016


I'm trying to create a snapshot from a running pipeline in iOS. I use a
button to take the snapshot.

I have the following pipeline:
udpsrc auto-multicast=true address=224.1.1.1 port=5004"
+ " ! application/x-rtp, media=(string)video, clock-rate=(int)90000,
encoding-name=(string)H264,
sprop-parameter-sets=(string)\"Z0JAH6aAQAYZAA\\,aM4wpIAA\", payload=(int)96,
ssrc=(uint)19088743, timestamp-offset=(uint)0, seqnum-offset=(uint)0"
+ " ! rtpjitterbuffer latency=400"
+ " ! rtph264depay ! avdec_h264 ! videoconvert"
+ " ! tee name=snapshot snapshot. ! queue ! valve name=snap drop=true !
jpegenc ! filesink name=filepath location=screenshot.jpg async=false
snapshot. ! queue"
+ " ! autovideosink

So I use the following code in my button to handle the valve:
GstElement *element = gst_bin_get_by_name (GST_BIN (pipeline), "snap");
if (strcmp("drop", "drop") == 0)
{
    gboolean prop_val = FALSE;

    // if the property value is true, then send an EOS.
    if ( strcmp("false", "true") == 0 )
    {
        gst_element_send_event(element, gst_event_new_eos());
        prop_val = TRUE;
    } else {
        prop_val = FALSE;
    }

    g_object_set (element, "drop", prop_val, NULL);
}

But with this code I can only take one screenshot. And I can't set the
filename of the image.

How can I save the screenshot without blocking the stream and save the image
in the documents folder with a custom name every time the button is clicked?



--
View this message in context: http://gstreamer-devel.966125.n4.nabble.com/Take-snapshot-from-running-pipeline-in-gstreamer-with-iOS-tp4678410.html
Sent from the GStreamer-devel mailing list archive at Nabble.com.


More information about the gstreamer-devel mailing list