Ich habe versucht, ein Video in h264 kodiert und muxed mit Matroskamux, aber ich kann es nicht erreichen. Ich bin auf der Embedded-Plattform, einem iMX6.Gstreamer: mastroskamux Fehler: nicht verknüpft
Meine Pipeline arbeitet mit gst-lauch:
gst-launch-1.0 filesrc location=video.mkv ! matroskademux ! h264parse ! imxvpudec ! imxipuvideosink
ich es in C erstellt, aber es funktioniert nicht. Ich entfernte Fehlerbehandlung, verwende ich eine Struktur rep
alle Elemente enthalten:
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);
Das Video nicht angezeigt wird und die Anwendung fest. Mit GST_DEBUG 4 = bekomme ich eine Menge Debug, aber in den letzten Zeilen:
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
Ich habe versucht, die Verknüpfung von demuxer des Pads zu zwingen, weil es eine „manchmal“ Source-Pad hat.
Ich weiß nicht, wie man vorgeht, damit es funktioniert. Danke für die Hilfe.
EDIT: Protokolldatei here. Es ist ein Verknüpfungsproblem, ich weiß nicht, wie ich es lösen soll.
Wahrscheinlich stimmt die Caps nicht überein. Vielleicht gibt es mehr Spuren in der Matroska? Versuchen Sie GST_DEBUG = 5 und leiten Sie das Protokoll in eine Datei um. Es gibt eine Menge Dinge, die erklären können, was vor sich geht. Ich kann in das Protokoll schauen. – peper0
@ peper0 Danke für die Antwort, ich habe meinen Beitrag mit dem Log bearbeitet. – PierreOlivier
Was genau war Ihre Pipeline während des Laufs, den Sie protokolliert haben? [EDIT] Sorry, ich dachte, es wäre ein Log von gst-launch. Jetzt sehe ich, dass es aus dem Code stammt, den du angehängt hast. – peper0