Get frames from rtsp video stream

bsonbudak bsonbudak at gmail.com
Thu Apr 5 06:26:28 UTC 2018


Thanks, the errors are gone now. However I need help with another issue now.

Using the code fragment above, I want to write a C++ program that gets RTSP
stream frames and put it in openCV mat. Below is my code. I get an error
when trying to get a sample from the appsink. I highlighted the code step
bold.

Do you have any idea how to get the sample from appsink?


#include <gst/gst.h>
#include <opencv2/opencv.hpp>
#include <gstappsink.h>
#ifdef HAVE_GTK
#include <gtk/gtk.h>
#include <gdk-pixbuf/gdk-pixbuf.h>
#endif
#include <stdlib.h>

int main (int argc, char *argv[])
{
    GstElement *pipeline;
    gint width, height;
    gchar *descr;
    GError *error = NULL;
    gint64 duration, position;
    GstStateChangeReturn ret;
    gboolean res;
    GstBus *bus;
    GstMessage *msg;

    gst_init (0, NULL);
    pipeline = gst_parse_launch ("rtspsrc
location=rtsp://admin:admin@192.168.1.109:554/stream1 latency=0 ! decodebin
! appsink name=sink ",NULL);

    GstElement *sink = gst_bin_get_by_name (GST_BIN (pipeline), "sink");
    if(!sink){
        printf("sink is NULL\n");
        exit(1);
    }

    GstAppSink *appsink = GST_APP_SINK(sink);
    if(!appsink){
        printf("appsink is NULL\n");
        exit(1);
    }

   * GstSample *sample = gst_app_sink_pull_sample(appsink);*
    if(!sample){
        printf("sample is NULL\n");
        exit(1);
    }

    GstBuffer *buffer = gst_sample_get_buffer(sample);
    GstMapInfo map;

    gst_buffer_map (buffer, &map, GST_MAP_READ);

    cv::Mat frame(cv::Size(320, 240), CV_8UC3, (char*)map.data,
cv::Mat::AUTO_STEP);

    imwrite("XYZ.jpg",frame);
}



--
Sent from: http://gstreamer-devel.966125.n4.nabble.com/


More information about the gstreamer-devel mailing list