Я попытался воспроизвести видео, закодированное в h264, и мультиплексироваться с matroskamux, но я не могу этого добиться. Я на встроенной платформе, iMX6.Gstreamer: mastroskamux error: not connected
Мой трубопровод работает с GST-Lauch:
gst-launch-1.0 filesrc location=video.mkv ! matroskademux ! h264parse ! imxvpudec ! imxipuvideosink
Я создал его в C, но это не работает. Я удалил обработку ошибок, я использовать структуру rep
, содержащую все элементы:
rep->pipeline = gst_pipeline_new("pipeline");
rep->src = gst_element_factory_make("filesrc","source0");
rep->demux = gst_element_factory_make("matroskademux","demux0");
rep->queue = gst_element_factory_make("queue2","queue0");
rep->parser = gst_element_factory_make("h264parse","parser0");
rep->decoder = gst_element_factory_make("imxvpudec","dec0");
rep->sink = gst_element_factory_make("imxipuvideosink","sink0");
gst_bin_add_many (GST_BIN(rep->pipeline), rep->src, rep->demux, rep->queue, rep->parser, rep->decoder,rep->sink, NULL);
g_object_set(rep->src, "location", "video.mkv", NULL);
g_object_set(rep->sink, "use-vsync", TRUE, NULL);
gst_element_link_many(rep->src, rep->demux, rep->queue, rep->parser, rep->decoder, rep->sink, NULL);
g_print("start pipeline\n");
gst_element_set_state (rep->pipeline, GST_STATE_PLAYING);
g_main_loop_run (loop);
видео не отображается, и приложение застревает. С GST_DEBUG = 4 Я получаю много отладки, но в последних строках:
0:00:00.168590667 577 0xe24c0 WARN matroskademux matroska-demux.c:4500:gst_matroska_demux_loop:<demux0> error: stream stopped, reason not-linked
0:00:00.168777333 577 0xe24c0 INFO GST_ERROR_SYSTEM gstelement.c:1835:gst_element_message_full:<demux0> posting message: GStreamer encountered a general stream error.
0:00:00.169084667 577 0xe24c0 INFO GST_ERROR_SYSTEM gstelement.c:1858:gst_element_message_full:<demux0> posted error message: GStreamer encountered a general stream error.
0:00:00.169268000 577 0xe24c0 INFO task gsttask.c:300:gst_task_func:<demux0:sink> Task going to paused
Я пытался заставить увязывание колодки Demuxer, потому что у него есть «иногда» исходный пэд.
Я не знаю, как действовать, чтобы заставить его работать. Спасибо за помощь.
EDIT: Файл журнала here. Это проблема связывания, я не знаю, как ее решить.
Возможно, колпачки не совпадают. Может быть, в матроске больше треков? Попробуйте GST_DEBUG = 5 и переадресуйте журнал в файл. Есть много вещей, которые могут объяснить, что происходит. Я могу заглянуть в журнал. – peper0
@ peper0 Спасибо за ответ, я редактировал свой пост с журналом. – PierreOlivier
Какой именно ваш конвейер был во время запуска, который вы зарегистрировали? [EDIT] Извините, я думал, что это журнал из gst-launch. Теперь я вижу, что это от кода, который вы приложили. – peper0