J'ai du mal à trouver comment créer un simple flux rtp avec gstreamer et l'afficher sur vlc.
J'ai installé GStreamer 0.10.30 et VLC 1.1.3. Ma seule exigence est d'utiliser des codecs MPEG4 ou H.264.
En ce moment, je peux diffuser le GStreamer videotestsrc via ce pipeline simple:
gst-launch videotestsrc ! ffenc_mpeg4 ! rtpmp4vpay ! udpsink Host=127.0.0.1 port=5000
qui sort les "caps" nécessaires au client pour recevoir le flux:
/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
Je peux également afficher le flux en utilisant le pipeline suivant:
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
mais quand j'essaie de recevoir le flux avec vlc:
vlc -vvv rtp://127.0.0.1:5000
Je ne reçois rien ...
J'ai résolu le problème, il a juste besoin d'un fichier sdp comme celui-ci:
v=0
m=video 5000 RTP/AVP 96
c=IN IP4 127.0.0.1
a=rtpmap:96 MP4V-ES/90000
et l'option "send-config = true" pour l'élément rtpmp4vpay:
gst-launch videotestsrc ! ffenc_mpeg4 ! rtpmp4vpay send-config=true ! udpsink Host=127.0.0.1 port=5000
puis, il peut être joué avec
vlc <filename>.sdp
Comment faire pour H264 et nouveau gstreamer (Windows)
gst-launch-1.0 videotestsrc ! openh264enc ! rtph264pay config-interval=10 pt=96 ! udpsink Host=127.0.0.1 port=5000
fichier sdp:
v=0
m=video 5000 RTP/AVP 96
c=IN IP4 127.0.0.1
a=rtpmap:96 H264/90000
pour les autres codecs, voir https://en.wikipedia.org/wiki/RTP_audio_video_profile et l'exemple SDP correspondant dans le lien RFC