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