2012-12-16 11 views
7

Ich streame eine mp4 (mpeg-4) -Datei von einem Gerät zu einem anderen mit gstreamer über RTP-Stream. Im Grunde teile ich die mp4-Datei in ihre Audio- und Videodatei auf und sende sie dann an das andere Gerät, wo sie gestreamt wird. Jetzt möchte ich die mp4-Datei auf dem anderen Gerät auf der Festplatte speichern, aber mein Problem ist, dass ich die Audio- und Videodateien getrennt speichern kann und es nicht einzeln abgespielt werden kann.Kombinieren eines Audio- und Video-Streams mit gstreamer

Ich bin verwirrt darüber, wie die Audio- und Video-RTP-Streams kombinieren, um meine mp4-Datei zurück zu bilden und speichern Sie es in eine Datei in dem anderen Gerät.

Hier sind die Befehlszeilencode:

Sender (Server)

gst-launch-0.10 -v filesrc location=/home/kuber/Desktop/sample.mp4 \ 
      ! qtdemux name=d \ 
      ! queue \ 
      ! rtpmp4vpay \ 
      ! udpsink port=5000 \ 
      d. \ 
      ! queue \ 
      ! rtpmp4gpay \ 
      ! udpsink port=5002 

Reciever (Client)

gst-launch-0.10 udpsrc port=5000 caps = "application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)MP4V-ES, profile-level-id=(string)243, config=(string)000001b0f3000001b50ee040c0cf0000010000000120008440fa282fa0f0a21f, payload=(int)96, ssrc=(uint)4291479415, clock-base=(uint)4002140493, seqnum-base=(uint)57180" \ 
      ! rtpmp4vdepay \ 
      ! ffdec_mpeg4 \ 
      ! xvimagesink sync=false \ 
      udpsrc port=5002 caps="application/x-rtp, media=(string)audio, clock-rate=(int)32000, encoding-name=(string)MPEG4-GENERIC, encoding-params=(string)2, streamtype=(string)5, profile-level-id=(string)2, mode=(string)AAC-hbr, config=(string)1290, sizelength=(string)13, indexlength=(string)3, indexdeltalength=(string)3, payload=(int)96, ssrc=(uint)501975200, clock-base=(uint)4248495069, seqnum-base=(uint)37039"\ 
      ! rtpmp4gdepay \ 
      ! faad \ 
      ! alsasink sync=false 
+0

eine Lösung, die ich dachte, war der Encoder im Empfänger und den Absender nämlich zu entfernen: rtpmp4gpay und rtpmp4gdepay und faad. Dies würde dazu führen, dass die Audio- und Videodatei statt der codierten Streams streamt und dann im Empfänger qtmux verwendet wird, um sowohl den Audio- als auch den Videostream zusammenzuführen, aber ich bekomme Fehler bei der Inkompatibilität von qtmux mit udpsrc. Wo genau sollte ich diese Änderung vornehmen? – user1795516

+0

@ av501 ........ – user1795516

+0

gst-launch-0.10 udpsrc port = 5000 caps = "anwendung/x-rtp, media = (string) video, taktfrequenz = (int) 90000, codierungsname = (String) MP4V-ES, Profil-Ebene-ID = (Zeichenfolge) 243, Konfig = (Zeichenfolge) 000001b0f3000001b50ee040c0cf0000010000000120008440fa282fa0f0a21f, Nutzlast = (Int) 96, ssrc = (Uint) 4291479415, Taktbasis = (Uint) 4002140493, Seqnum- Basis = (Uint) 57180 "! rtpmp4vdepay! Warteschlange ! qtmux name = muxer udpsrc port = 5002 caps = "anwendung/x-rtp, media = (string) audio, taktfrequenz = (int) 32000, codierungsname = (string) MPEG4-GENERIC, encoding-params = (string) 2, – user1795516

Antwort

1

Sie können die folgende Pipeline versuchen Audio Mux und Video in eine einzige Datei. Pipeline hierfür ist wie folgt:

gst-launch-0.10 udpsrc port=5000 caps = "application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)MP4V-ES, profile-level-id=(string)243, config=(string)000001b0f3000001b50ee040c0cf0000010000000120008440fa282fa0f0a21f, payload=(int)96, ssrc=(uint)4291479415, clock-base=(uint)4002140493, seqnum-base=(uint)57180" \ 
      ! rtpmp4vdepay \ 
      ! ffdec_mpeg4 \ 
      ! mux. \ 
     udpsrc port=5002 caps="application/x-rtp, media=(string)audio, clock-rate=(int)32000, encoding-name=(string)MPEG4-GENERIC, encoding-params=(string)2, streamtype=(string)5, profile-level-id=(string)2, mode=(string)AAC-hbr, config=(string)1290, sizelength=(string)13, indexlength=(string)3, indexdeltalength=(string)3, payload=(int)96, ssrc=(uint)501975200, clock-base=(uint)4248495069, seqnum-base=(uint)37039"\ 
      ! rtpmp4gdepay \ 
      ! faad \ 
      ! mux. 
     matroskamux name=mux 
      ! filesink location=video.mp4 
+0

Ich konnte keine Pipeline von diesem Syntex erstellen –

Verwandte Themen