Поток rtp GStreamer для vlc
У меня возникли проблемы с выяснением того, как создать простой поток rtp с gstreamer и отобразить его на vlc.
Я установил GStreamer 0.10.30 и VLC 1.1.3. Мое единственное требование - использовать кодеки MPEG4 или H.264.
Прямо сейчас я могу передать GStreamer videotestsrc через этот простой конвейер:
gst-launch videotestsrc ! ffenc_mpeg4 ! rtpmp4vpay ! udpsink host=127.0.0.1 port=5000
который выводит "колпачки", необходимые клиенту для получения потока:
/GstPipeline:pipeline0/GstUDPSink:udpsink0.GstPad:sink: caps = application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)MP4V-ES, profile-level-id=(string)1, config=(string)000001b001000001b58913000001000000012000c48d8800f50a041e1463000001b24c61766335322e3132332e30, payload=(int)96, ssrc=(uint)365697461, clock-base=(uint)390754204, seqnum-base=(uint)10399
Я также могу отображать поток, используя следующий конвейер:
gst-launch udpsrc uri=udp://127.0.0.1:5000 caps="application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)MP4V-ES, profile-level-id=(string)1, config=(string)000001b001000001b58913000001000000012000c48d88007d0a041e1463000001b24c61766335322e3132332e30, payload=(int)96, ssrc=(uint)298758266, clock-base=(uint)3097828288, seqnum-base=(uint)63478" ! rtpmp4vdepay ! ffdec_mpeg4 ! autovideosink
но когда я пытаюсь получить поток с помощью vlc:
vlc -vvv rtp://127.0.0.1:5000
Я ничего не получаю...
Ответы
Ответ 1
Я решил проблему, ей нужен только файл sdp:
v=0
m=video 5000 RTP/AVP 96
c=IN IP4 127.0.0.1
a=rtpmap:96 MP4V-ES/90000
и параметр "send-config = true" для элемента rtpmp4vpay:
gst-launch videotestsrc ! ffenc_mpeg4 ! rtpmp4vpay send-config=true ! udpsink host=127.0.0.1 port=5000
и затем его можно
vlc <filename>.sdp
Ответ 2
Как для H264 и нового gstreamer (windows)
gst-launch-1.0 videotestsrc ! openh264enc ! rtph264pay config-interval=10 pt=96 ! udpsink host=127.0.0.1 port=5000
sdp файл:
v=0
m=video 5000 RTP/AVP 96
c=IN IP4 127.0.0.1
a=rtpmap:96 H264/90000
для другого кодека см. https://en.wikipedia.org/wiki/RTP_audio_video_profile и соответствующий пример SDP в ссылке RFC