辅助自动塞(切割)uridecodebin

时间:2015-12-09 16:22:17

标签: gstreamer

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。

0 个答案:

没有答案