如何从Gstreamer管道中逐帧获取视频流? (没有OpenCV)

时间:2019-11-15 14:04:39

标签: c gstreamer pipeline rtsp

我正在研究一个Gstreamer项目,需要从RTSP流中提取图像。 我能够使用multifilesink从gst_parse_launch保存图像,但是无法在管道中添加“监听器”以获取缓冲区并从中提取图像。

到目前为止我所拥有的:

pipeline = gst_parse_launch("-e -v rtspsrc location="IPADDRESS" ! rtph264depay ! h264parse ! 
decodebin ! jpegenc ! appsink name=sink",
        NULL);
bus = gst_element_get_bus(pipeline);
gst_element_set_state(pipeline, GST_STATE_PLAYING);

bus = gst_element_get_bus(pipeline);


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);

`

如何在不使用OpenCV的情况下执行此操作? (仅字节即可获取图像) 以及如何循环浏览管道中缓冲的帧?

谢谢。

0 个答案:

没有答案