源代码 basic-tutorial-1.c 如下:
#include <gst/gst.h>
int main (int argc, char *argv[])
{
GstElement *pipeline;
GstBus *bus;
GstMessage *msg;
/* Initialize GStreamer */
gst_init (&argc, &argv);
/* Build the pipeline */
pipeline =
gst_parse_launch
("playbin uri=https://www.freedesktop.org/software/gstreamer-sdk/data/media/sintel_trailer-480p.webm",
NULL);
/* Start playing */
gst_element_set_state (pipeline, GST_STATE_PLAYING);
/* Wait until error or EOS */
bus = gst_element_get_bus (pipeline);
msg =
gst_bus_timed_pop_filtered (bus, GST_CLOCK_TIME_NONE,
GST_MESSAGE_ERROR | GST_MESSAGE_EOS);
/* Free resources */
if (msg != NULL)
gst_message_unref (msg);
gst_object_unref (bus);
gst_element_set_state (pipeline, GST_STATE_NULL);
gst_object_unref (pipeline);
return 0;
}
这段代码简单概括如下
gst_init(...);
pipeline = gst_parse_launch("...", NULL);
gst_element_set_state (pipeline, GST_STATE_PLAYING);
bus = gst_element_get_bus (pipeline);
msg = gst_bus_timed_pop_filtered (bus, GST_CLOCK_TIME_NONE, GST_MESSAGE_ERROR | GST_MESSAGE_EOS);
...
正好手头有一个大华IP摄像机,把连接串改一下连上看看:
pipeline =
gst_parse_launch
("playbin uri=rtsp://admin:xxx@192.168.xxx.xxx:554/cam/realmonitor?channel=1&subtype=0",
NULL);
当然,在命令行下直接输入下面的命令也可以达到同样效果:
gst-launch-1.0 rtspsrc location="rtsp://admin:xxx@192.168.xxx.xxx:554/cam/realmonitor?channel=1&subtype=0" latency=0 ! decodebin ! videoconvert ! xvimagesink