2013-06-26 33 views
12

Jestem początkującym z gstreamer i próbuję z nim korzystać. Moim pierwszym celem jest stworzenie prostego strumienia rtp wideo h264 pomiędzy dwoma urządzeniami. Używam tych dwóch rurociągów:Strumień wideo H.264 przez rtp przy użyciu gstreamer

Nadawca: gst-launch-1.0 -v filesrc location=c:\\tmp\\sample_h264.mov ! x264enc ! rtph264pay ! udpsink host=127.0.0.1 port=5000

Odbiornik: gst-launch-1.0 -v udpsrc port=5000 ! rtpmp2tdepay ! decodebin ! autovideosink

Ale z pierwszym (nadawcy) mam następujący błąd:

Setting pipeline to PAUSED ... 
Pipeline is PE*R*O L(LgIsNtG- l.a.u.n 
h-1.0:5788): CRITICAL **: gst_adapter_map: assertion `size > 0' failed 
ERROR: from element /GstPipeline:pipeline0/GstFileSrc:filesrc0: Internal data flow error. 
Additional debug info: 
gstbasesrc.c(2812): gst_base_src_loop(): /GstPipeline:pipeline0/GstFileSrc:filesrc0: 
streaming task paused, reason not-negotiated (-4) 
ERROR: pipeline doesn't want to preroll. 
Setting pipeline to NULL ... 
Freeing pipeline ... 

próbowałem wiele innych konfiguracji, ale nie mogłem znaleźć odpowiedniego rurociągu.

Niektóre inne informacje: wersja Gstreamer: 1.0.7 OS: Windows 7

Każdy pomysł/sugestię? Thx,

Odpowiedz

8

filesrc odczyta dane z podanego pliku jako surowe bajty; nie możesz po prostu zakodować tych surowych bajtów za pomocą x264enc, do tego będziesz potrzebować danych wideo. spróbuj przed dodaniem dekodowania demultiputera /dekoder), np. coś takiego:

Nadawca:

gst-launch-1.0 -v \ 
    filesrc location=/tmp/sample_h264.mov 
    ! qtdemux \ 
    ! h264parse \ 
    ! ffdec_h264 \ 
    ! ffmpegcolorspace \ 
    ! x264enc \ 
    ! rtph264pay \ 
    ! udpsink host=127.0.0.1 port=5000 

Należy zrobić szybkie sprawdzenie, czy to działa przy użyciu Soure Test wideo:

gst-launch-1.0 -v \ 
    videotestsrc 
    ! x264enc \ 
    ! rtph264pay \ 
    ! udpsink host=127.0.0.1 port=5000 
+0

Dziękuję za dane wskazówkę raw/wideo, ale myślę, że rozwiązuje to tylko jedną z par problemu. Próbowałem klasycznego potoku z videotestsrc, ale nic nie przechodzi na drugą stronę. Nawet z następującym potokiem nie mogę otrzymać niczego po drugiej stronie: 'gst-launch-1.0 -v videotestsrc! host udpsink = 192.128.52.128 port = 9001' Mam przeczucie, że udpsink nic nie wysyła! PS: nie jest problemem z zaporą ogniową, więc wszystkie te dezaktywuję. – abir

+0

Próba wykonania: 'ffmpeg -i C: \ tmp \ sample_h264.mov -f mpegts udp: //192.168.52.128: 9001' ... i strumienia jest odbierany po drugiej stronie. Ale chcę to zrobić z gstreamer – abir

+0

'videotestsrc! udpsink' to * nie * strumień RTP. musisz dodać payloadera –

Powiązane problemy