Попытка реализовать трубопровод GStreamer с тройником, используя следующие элементы.Труба GStreamer с тройником, включая две раковины, не работает
gst_bin_add_many(GST_BIN (pipeline), <rpicamsrc>, <capsfilter>, <h264parse>, tee, <queue>, <rtph264pay>, <fakesink>, <queue>, <avdec_h264>, <videoconvert>, <capsfilter>, <customplugin>, <fakesink>, nullptr);
Для лучшего понимания при условии, что имена элементов. Целью является создание трубопровода Трой следующим образом:
rpicamsrc ! capsfilter ! h264parse ! tee name=t t. ! queue ! rtph264pay ! fakesink t. ! queue ! avdec_h264 ! videoconvert ! capsfilter ! customplugin ! fakesink
Но он не всегда и не сообщает об ошибке. Но видеокадры не захватываются. После некоторых испытаний установлено, что не удается даже для этого простого трубопровода:
gst_element_link_many (<rpicamsrc>, <capsfilter>, <h264parse>, <rtph264pay>, <fakesink>, nullptr))
Интересно, если я удалю второй fakesink от этого выше gst_bin_add_many строки кода она работает. Не знаете, в чем проблема с этим. Пытался использовать другой раковину, как autovideosink, но не повезло. Когда он терпит неудачу, он не получает сообщение GST типа GST_MESSAGE_ASYNC_DONE в gst bus, но для успеха это делает. Получает GST_STREAM_STATUS_TYPE_CREATE, GST_STREAM_STATUS_TYPE_ENTER и GST_MESSAGE_STREAM_START для обоих неудачи и успех дела. Что я делаю неправильно, какие-то идеи?
Попробуйте запустить свой конвейер, используя gst-launch на терминале, установите GST_DEBUG = 4, чтобы получить журнал. – cxphong