2016-08-02 22 views
2

Ich bin ein Neuling für gstreamer, also würde ich geschätzt werden, wenn Sie mir helfen könnten.Wie man eine Pipeline aufzeichnet, auch wenn der Absender keine Daten im gstreamer sendet

Ich versuche, eine Pipeline zu hören und Frames in eine Datei aufzunehmen. Ich habe die folgende Pipeline versucht:

gst-launch-1.0 udpsrc port=5600 do-timestamp=true ! application/x-rtp, payload=96 ! rtph264depay ! avdec_h264 ! clockoverlay ! jpegenc ! avimux ! filesink location=stream.avi 

ich ganze Timeline selbst aufnehmen möchten, wenn der Absender keine Rahmendaten liefert. Standardmäßig hängt der Rekorder die Frames an, wenn die Pipeline einige gültige Frames empfängt. Aber ich möchte einige schwarze Rahmen sehen, wenn der Sender keine Daten sendet.

Antwort

1

Ich experimentierte ein bisschen und ich glaube nicht, dass Sie in der Lage sein werden, dies mit einem einfachen gst-launch Befehl zu tun. Unglücklicherweise würde es wahrscheinlich bedeuten, eine Anwendung zu schreiben, die erkennt, wenn Pakete/Puffer nicht mehr kommen, und dann die Pipeline zu modifizieren. Wenn Sie es doch probieren wollen würde ich das input-selector Element in so etwas wie dies vorschlagen:

gst-launch-1.0 videotestsrc pattern=black ! video/x-raw ! input-selector name=selector ! clockoverlay ! jpegenc ! avimux ! filesink location=stream.avi

Dann würde ich eine Methode erstellen, den Strom an den Eingang-Selektor anbringt:

udpsrc port=5600 do-timestamp=true ! application/x-rtp, payload=96 ! rtph264depay ! avdec_h264 ! identity name=buffer-checker

um keine Pakete kommen in zu erfassen, können Sie für das handoff Signal auf dem identity Element hören, und dann den Strom entfernen, wenn es mal aus und schalten Sie auf den schwarzen Testmuster aus dem videotestsrc unter Verwendung die active-pad Eigenschaft auf der input-selector.

Mit dem videomixer Element funktioniert fast funktioniert, aber ich glaube nicht, dass es mehrere Stops und Starts des Streams behandelt.

Wie auch immer, hoffe jemand anderes kommt mit einer besseren Idee. Sie könnten auch Ihre Top-Level-Ansatz analysieren und sehen, ob es eine Möglichkeit gibt, mit mehreren Videoclips statt der einen zu arbeiten.

+0

Ich würde sagen, der Videomixer würde funktionieren .. was genau macht es bei mehreren Pausen/Stops von Stream? Was ist mit der Verwendung von Identitäts-Single-Segment? – nayana

+0

Sobald der Stream an den Videomixer angeschlossen ist, scheint der Videomixer zu erwarten, dass er sich verhält und Frames liefert. Wenn Frames nicht von einer eingehenden Senke geliefert werden, hält sie die ausgehende Quelle an. Ich müsste mich über Single-Segment informieren, es ist neu für mich. – mpr