bool demuxDone = false;
gboolean
autopluggerCallback (GstElement * elem, GstPad *pad, GstCaps * caps)
{
if (cmpType(caps, "video/x-h264")) {
relayVideoPad = pad;
demuxDone = true;
}
if (cmpType(caps, "audio/x-ac3")) {
relayAudioPad = pad;
demuxDone = true;
}
if (demuxDone) {
return FALSE;
}
return TRUE;
}
我将autoplug-continue
信号处理程序连接到uridecodebin
。我的目标是阻止它在tsdemux
之后创建任何内容,然后将视频/音频连接到flvmux
。
但我遇到的问题是仍然创建了一个元素,multiqueue
正在tsdemux0
之后连接。为什么?我试图通过捕获element-added
信号而不是等待video/x-h264
来检测分路器的创建,但结果是一样的。
生成的管道被转储到点: http://pastebin.com/acBUdfpi
好吧,我可以将multiqueue
连接到flvmux
,但后来我不知道如何获取多队列指针。我尝试gst_pad_get_peer
- > gst_get_pad_parent_element
,(从demuxer src-video-pad转到下一个元素),但gst_get_pad_parent_element
返回0,即使对等方为非0。