2015-04-22 7 views
5

Ich arbeite auf gstreamer zum ersten Mal und versuchen, eine MP4-Videodatei von einem Server zu Client mit Gstreamer (RTP und UDP) zu streamen. Die Befehlszeile, die ich zu verwenden Ich versuche:Streaming MP4 Videodatei auf Gstreamer

Auf Server-Seite:

gst-launch-1.0 -v filesrc location = file_name.mp4 ! decodebin ! x264enc ! rtph264pay ! udpsink host=192.1XX.XX.XX port=9001 

Auf Client-Seite:

gst-launch-1.0 -v udpsrc port=9001 caps = "application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, payload=(int)96" ! rtpstreamdepay ! decodebin ! videoconvert ! autovideosink 

Ich bin in der Lage das Video erfolgreich zu streamen. Aber ich will nicht decodebin und x264enc Operationen auf der Serverseite. So entfernte ich diese Operationen und verwenden diese Befehlszeile auf der Serverseite

gst-launch-1.0 -v filesrc location =file_name.MP4 ! rtpstreampay ! udpsink host=192.1XX.XX.XX port=9001 

, an den ich nicht in der Lage war, das Video zu streamen.

Könnte mir jemand sagen, warum wir in diesem Szenario die Dekodier- und Encodierungsoperationen benötigen, während wir die Daten senden. Gibt es eine Möglichkeit, Daten ohne diese Operationen zu senden.

Danke.

Antwort

1

Decodierung und Neucodierung ist nicht erforderlich. Das Element, nach dem Sie suchen, ist Demultiplexer und in diesem Fall qtdemux.

Hier ein Clip aus dem Dokument es ist:

eine Quicktime-Datei in Audio- und Video-Demultiplex-Streams Basis ISO Mediendateiformat-Unterstützung (mp4, 3GPP, qt, mj2)

Es ist Genug, um den geöffneten Videocontainer zu demultiplexen und den codierten Videostream direkt aus dem Container zu lesen. mp4 Container enthalten in der Regel H.264 kodierte Videos, so dass Ihre serverseitige Pipeline vereinfacht würde in:

gst-launch-1.0 -v filesrc location = file_name.mp4 ! qtdemux ! video/x-h264 ! rtph264pay ! udpsink host=192.1XX.XX.XX port=9001 
Verwandte Themen