2014-09-15 14 views
6

Ich brauche einen Videostream von meiner Kamera über RTSP und speichern Sie es in einer Datei. All dies muss über den gstreamer erfolgen.Wie speichere ich einen RTSP-Video-Stream in MP4-Datei über Gstreamer?

Nach einigem Suchen google habe ich versucht, die folgenden:

gst-launch-1.0 rtspsrc location=rtsp://192.168.1.184/live2.sdp ! queue ! rtph264depay ! avdec_h264 ! mp4mux ! filesink location=result3.mp4 

aber es gibt den Fehler: "Falsche Pipeline: konnte nicht verlinken avdec_h264-0 zu mp4mux0"

gst-launch-1.0 rtspsrc location=rtsp://192.168.1.184/live2.sdp ! queue ! rtph264depay ! h264parse ! mp4mux ! filesink location=result3.mp4 

Es beginnt funktioniert, aber die Ergebnisdatei kann nicht über VLC wiedergegeben werden.

Was ist der richtige Befehl zu tun? Und wenn Sie zwischen h264parse und avdec_h264 wählen, können Sie bitte erklären warum?

+2

@ downvote: Ich sehe nichts falsch mit dieser Frage, außer für einen Titel. @Juster: 1) Sie könnten es ohne 'h264parse' überhaupt versuchen. 2) Spielt der Stream überhaupt? –

Antwort

6

Der zweite Befehl sieht korrekt aus. Rohe h264-Videodaten sind ein bisschen knifflig, weil sie zwei Eigenschaften haben - "Ausrichtung" und "Stream-Format", die variieren können. h264parse kann h264-Daten in die Form umwandeln, die für verschiedene h264-verwandte GStreamer-Elemente benötigt wird.

avdec_h264 ist ein Decoderelement. Sie möchten die Daten nicht dekodieren, da Sie sie scheinbar nicht anzeigen. Sie setzen codierte h264-Daten aus einem RTSP-Stream in eine mp4-Containerdatei um.

Wenn die Datei nicht abgespielt wird, sollten Sie überprüfen, ob der Stream gut ist, oder versuchen Sie andere Media Player und sehen Sie, ob sie funktionieren (MPlayer, Media Player, Quicktime, was auch immer).

Sie könnten auch versuchen, eine muxoska-Containerdatei mit dem Element "matroskamux" zu muxen.

+0

Ich habe versucht, Matroska und tsmux, diese Arbeit – Juster

10

Sie müssen -e flag (Ende des Streams) hinzufügen, damit mp4mux die Datei finalisieren kann oder Sie eine nicht spielbare Datei erhalten.

gst-launch -e rtspsrc location=url ! decodebin ! x264enc ! mp4mux ! filesink location=file.mp4 
+0

In meinem Fall machte diesen Befehl abspielbare Datei, aber alle Bilder sehen aus wie das erste Bild. Als wäre das Video eingefroren. – alexolut

+0

Scheint, es ist ein Fehler in [vlc] (https://trac.videolan.org/vlc/ticket/17528). – alexolut

Verwandte Themen