Ich versuche, einen H264 RTP-Stream von einem Raspberry Pi 3 mit einem Kameramodul zu einem Video-Tag zu machen.H264 RTP-Stream mit gstreamer-1.0
Verwendung des folgenden Codes zum Starten des Streamings
raspivid -t 0 -h 720 -w 1080 -fps 25 -hf -b 2000000 -o - | \
gst-launch-1.0 -v fdsrc \
! h264parse \
! rtph264pay \
! gdppay \
! udpsink host="192.168.0.11" port=5000
Dann stelle ich eine einfache Webseite mit einem Video tag:
<video id="videoTag" src="h264.sdp" autoplay>
<p class="warning">Your browser does not support the video tag.</p>
</video>
Das src verweist auf die folgenden SDP-Datei:
v=0
m=video 5000 RTP/AVP 96
c=IN IP4 192.168.0.51
a=rtpmap:96 H264/90000
Wenn ich die Webseite lade passiert nichts und die js Konsole ist komplett leer. So
Ich habe versucht, den Stream mit VLC zu sehen, und bekam die folgende Fehlermeldung:
[00007efd80c03ea8] es demux error: cannot peek
[00007efd80c03ea8] es demux error: cannot peek
[00007efd80c03ea8] live555 demux error: no data received in 10s, aborting
Ich dachte, dass es keine überhaupt UDP-Kommunikation gewesen war, also ich getestet es von einem entfernten Rechner:
gst-launch-1.0 udpsrc port=5000 \
caps="application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, payload=(int)96" \
! fakesink dump=true
ans empfangene UDP-Pakete. Also habe ich recherchiert vorwärts und fanden diese:
https://cardinalpeak.com/blog/the-many-ways-to-stream-video-using-rtp-and-rtsp/
Nun ist es klar, dass ich zwei Ports eine Daten streamen und RTP Control Protocol zu etablieren. Allerdings habe ich keine Ahnung wie ich das mit gstreamer machen kann.
Am schlimmsten ist, wenn ich laufen:
gst-inspect-1.0 | grep -i rtcp
ich nichts.
Wie kann der Videostream mit gstreamer-1.0 zu einem Video-Tag innerhalb einer Webseite mit dem RTP-Protokoll gestartet werden?
Update
Mit videotestsrc als gstreamer videosoruce und Entfernen gdppay (ungültig RTP Payload Fehler verursacht) konnte ich den Video-Stream von einem Remote-Client mit VLC und mit diesem gstreamer Code anzuzeigen :
gst-launch-1.0 udpsrc port=5000 \
caps="application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, payload=(int)96" \
! rtph264depay \
! avdec_h264 \
! autovideosink
Warum denkst du, dass der Browser einen RTP-Stream abspielen wird? Es gibt eine begrenzte Auswahl an Support-Formaten für HTML5-Video und H.264 über RTP gehört nicht dazu. –