GStreamer 使用 playbin 添加探针

GStreamer add probe with playbin

以下代码在显示每一帧时添加一个回调并且运行良好:

pipeline = gst_parse_launch("filesrc location=/path ! decodebin ! autovideosink", &error);

video_sink = gst_bin_get_by_interface(GST_BIN(pipeline), GST_TYPE_VIDEO_OVERLAY);

GstPad *pad = gst_element_get_static_pad(video_sink, "sink");

gst_pad_add_probe(pad, GST_PAD_PROBE_TYPE_BUFFER, (GstPadProbeCallback)cb_have_data, data, NULL);

以下代码添加了相同的回调,但从未被调用过:

pipeline = gst_parse_launch("playbin uri=file:///path", &error);

video_sink = gst_bin_get_by_interface(GST_BIN(pipeline), GST_TYPE_VIDEO_OVERLAY);

GstPad *pad = gst_element_get_static_pad(video_sink, "sink");

gst_pad_add_probe(pad, GST_PAD_PROBE_TYPE_BUFFER, (GstPadProbeCallback)cb_have_data, data, NULL);

知道为什么以及如何解决这个问题吗?

playbin没有输入垫也没有输出垫,所以你不能放 探头,因为探头必须放在焊盘上。

但是,您可以 运行 获取视频板操作信号 playbin,它可以附加一个探针。