2015-04-22 28 views
5

Pracuję nad gstreamerem po raz pierwszy i próbuję przesyłać strumieniowo plik wideo MP4 z serwera do klienta za pomocą Gstreamer (RTP i UDP). Linia poleceń, które staram się używać:Przesyłanie strumieniowe plików wideo MP4 na Gstreamer

Na Server Side:

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

po stronie klienta:

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 

jestem w stanie strumienia wideo pomyślnie. Ale nie chcę wykonywać operacji po stronie serwera: decodebin i x264enc. Więc usunąłem te operacje i używane ten wiersz polecenia po stronie serwera

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

na którym nie był w stanie strumienia wideo.

Czy ktokolwiek mógłby mnie prowadzić, dlaczego potrzebujemy mieć dekodowania i kodowania operacji w tym scenariuszu podczas wysyłania danych. Czy istnieje sposób przesyłania danych bez użycia tych operacji.

Dzięki.

Odpowiedz

1

Dekodowanie i ponowne kodowanie nie jest konieczne. Element, którego szukasz, to demultiplekser, w tym przypadku qtdemux.

Oto klip od jego dokumentu:

Demultipleksacja plik QuickTime do audio i wideo strumieni baza ISO Format pliku multimedialnego wsparcia (MP4, 3GPP, qt, MJ2)

To jest wystarczy, aby zdemultipleksować kontener wideo, i po prostu odczytać zakodowany strumień wideo bezpośrednio z kontenera. mp4 Kontenery zwykle zawierają kodowane wideo w postaci H.264, więc Twój rurociąg po stronie serwera może uprościć do:

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