GStreamer。rtph265pay之后的探测器从未调用

GStreamer。rtph265pay之后的探测器从未调用,gstreamer,rtp,Gstreamer,Rtp,我有rtsp服务器,我想扩展rtp缓冲区标头。为此,我向rtph265pay的src添加了probe,但它从未调用。我的管道: ( appsrc name=vsrc ! nvvidconv ! video/x-raw(memory:NVMM),format=NV12 ! omxh265enc MeasureEncoderLatency=true bitrate=20000000 control-rate=2 ! rtph265pay name=pay0 pt=96 ) 连接探针的代码: st

我有rtsp服务器,我想扩展rtp缓冲区标头。为此,我向rtph265pay的src添加了probe,但它从未调用。我的管道:

( appsrc name=vsrc ! nvvidconv ! video/x-raw(memory:NVMM),format=NV12 !
omxh265enc MeasureEncoderLatency=true bitrate=20000000 control-rate=2 !
rtph265pay name=pay0 pt=96 ) 
连接探针的代码:

static GstPadProbeReturn test_probe (GstPad *pad, GstPadProbeInfo *info,
gpointer user_data)
{
    cout << "i'm here";
}



 void mediaConfigure (GstRTSPMediaFactory* factory, GstRTSPMedia* media,
gpointer user_data)
{
        GstElement *element, *rtph265pay; GstPad *pad;
        element = gst_rtsp_media_get_element (media);
        rtph265pay = gst_bin_get_by_name_recurse_up (GST_BIN (element), "pay0");
        pad = gst_element_get_static_pad (rtph265pay, "src");
        gst_pad_add_probe (pad, GST_PAD_PROBE_TYPE_BUFFER,
        (GstPadProbeCallback) test_probe, NULL, NULL);
        gst_object_unref (pad);
}
静态GstPadProbeReturn测试探头(GstPad*pad、GstPadProbeInfo*info、,
gpointer用户(U数据)
{

cout可能是因为rtph265pay的src pad没有链接到任何其他pad-这意味着rtph265pay是管道的末端-元素没有向其src pad传递任何缓冲区?

尝试在rtph265pay之后附加一个fakesink。

谢谢,你是对的,我在pay之后添加了identity元素,现在一切正常。但我还有一个问题。如果数据大于16位,我应该如何向扩展添加数据?例如,我想添加long-long。这是否意味着我应该拆分数据并调用set扩展函数4次?实际上我不确定——当我使用它时,我需要传递两个值,每个值16位。因此,因为我没有时间进行实验,也不想弄糟什么,我将管道分成两个流(每个流都有自己的rtph264pay)并在其中一个的扩展名中设置x值,在另一个的扩展名中设置y值。很抱歉,我无法帮助回答这个问题,我很高兴我可以帮助回答您的第一个问题:)