Ich erstelle eine Web-App, die einen RTSP / RTP-Stream von einem Server http://lscube.org/projects/feng wiedergeben soll .
Unterstützt das HTML5-Video- / Audio-Tag RTSP oder RTP? Wenn nicht, was wäre die einfachste Lösung? Vielleicht fallen Sie zu einem VLC-Plugin oder so etwas.
Antworten:
Technisch 'Ja'
(aber nicht wirklich...)
Das HTML 5-
<video>
Tag ist protokollunabhängig - es ist ihm egal. Sie platzieren das Protokoll imsrc
Attribut als Teil der URL. Z.B:oder vielleicht
Das heißt, die Umsetzung der
<video>
Tags ist jedoch browserspezifisch. Da HTML 5 noch in den Anfängen steckt, erwarte ich häufig wechselnde Unterstützung (oder mangelnde Unterstützung).Aus der HTML5-Spezifikation des W3C ( Das Videoelement ):
quelle
GET rtp://239.255.0.1:6970 net::ERR_UNKNOWN_URL_SCHEME
. Es scheint, dass nur HTTP [S] -Schemata fürvideo
Elemente zulässig sind.Ich denke, der Geist der Frage wurde nicht wirklich beantwortet. Nein, Sie können derzeit kein Video-Tag zum Abspielen von RTSP-Streams verwenden. Die andere Antwort bezüglich des Links zu "nie" von Chromium Guy ist etwas irreführend, da sich der verknüpfte Thread / die verknüpfte Antwort nicht direkt auf Chrome bezieht, das RTSP über das Video-Tag spielt. Lesen Sie den gesamten verknüpften Thread, insbesondere die Kommentare ganz unten und Links zu anderen Threads.
Die eigentliche Antwort lautet: Nein, Sie können nicht einfach ein Video-Tag auf eine HTML 5-Seite setzen und RTSP abspielen. Sie müssen eine Javascript-Bibliothek verwenden (es sei denn, Sie möchten mit Flash- und Silverlight-Playern spielen), um Streaming-Videos abzuspielen. {IMHO} Angesichts der Geschwindigkeit, mit der die Diskussion und Implementierung von HTML 5-Videos voranschreitet, sind die verschiedenen Anbieter von proprietären Videostandards nicht daran interessiert, diesen Fortschritt voranzutreiben. Zählen Sie also nicht auf die versprochene Benutzerfreundlichkeit des Video-Tags, es sei denn, die Browser-Hersteller nimm es auf dich, das Problem irgendwie zu lösen ... wieder unwahrscheinlich. {/ IMHO}
quelle
Dies ist eine alte Frage, aber ich musste es kürzlich selbst tun und habe etwas erreicht, das funktioniert (abgesehen von einer Antwort wie meiner, die mir einige Zeit sparen würde): Verwenden Sie im Grunde genommen ffmpeg, um den Container in HLS zu ändern, die meisten IPCams-Streams h264 und einige Grundtyp des PCM, verwenden Sie also so etwas:
Verwenden Sie dann video.js mit dem HLS-Plugin Dies wird den Live-Stream gut wiedergeben. Es gibt auch ein jsfiddle-Beispiel unter dem zweiten Link.
Hinweis: Obwohl dies keine native Unterstützung ist, ist im Benutzer-Frontend nichts extra erforderlich.
quelle
ffmpeg -v info -rtsp_transport tcp -i rtsp://host:port/[sdp] -c:v copy -c:a copy -maxrate 400k -bufsize 1835k -pix_fmt yuv420p -flags -global_header -hls_time 10 -hls_list_size 6 -hls_wrap 10 -start_number 1 /var/www/html/test.m3u8
ffmpeg.exe -fflags nobuffer -rtsp_transport tcp -i rtsp://[SOURCE] -flags +cgop -g 30 -hls_flags delete_segments [DESTINATION]
Chrome wird niemals RTSP-Streaming unterstützen.
Zumindest mit den Worten eines Chromium-Entwicklers hier :
quelle
In HTML5 gibt es drei Streaming-Protokolle / -Technologien:
Live-Streaming, geringe Latenz - WebRTC - Websocket
VOD- und Live-Streaming, hohe Latenz - HLS
1. WebRTC
Tatsächlich ist WebRTC SRTP (Secure RTP Protocol). Wir können also sagen, dass Video-Tags RTP (SRTP) indirekt über WebRTC unterstützen.
Um einen RTP-Stream auf Ihrem Chrome, Firefox oder einem anderen HTML5-Browser zu erhalten, benötigen Sie einen WebRTC-Server, der den SRTP-Stream an den Browser übermittelt.
2. Websocket
Es basiert auf TCP, hat jedoch eine geringere Latenz als HLS. Auch hier benötigen Sie einen Websocket-Server.
3. HLS
Das beliebteste Streaming-Protokoll mit hoher Latenz für VoD (aufgezeichnetes Video).
quelle
Mit VLC kann ich einen Live-RTSP-Stream (mpeg4) in einen HTTP-Stream im OGG-Format (Vorbis / Theora) umcodieren. Die Qualität ist schlecht, aber das Video funktioniert in Chrome 9. Ich habe auch mit einer Trancodierung in WEBM (VP8) getestet, aber es scheint nicht zu funktionieren (VLC hat die Option, aber ich weiß nicht, ob es jetzt wirklich implementiert ist. .)
Der erste, der ein Dokument dazu hat, sollte uns benachrichtigen;)
quelle
"C:\Program Files\VideoLAN\VLC\vlc.exe" -I dummy screen:// :screen-fps=16.000000 :screen-caching=100 :sout=#transcode{vcodec=theo,vb=800,scale=1,width=600,height=480,acodec=mp3}:http{mux=ogg,dst=127.0.0.1:8080/desktop.ogg} :no-sout-rtp-sap :no-sout-standard-sap :ttl=1 :sout-keep
- Dies ist ein VLC-Befehl, der Ihre Eingabe (z. B. Bildschirmaufnahmegerät) an einen bestimmten Ausgabestream (z. B. 127.0.0.1:8080/desktop.ogg ) überträgt.<video id="video" src="http://localhost:8080/desktop.ogg" autoplay="autoplay">
.my_ip:port
Adresse eingestellt und dann das HTML5-<video>
Tag wie folgt verwendet :<video width="640"><source src="http://my_ip:port/test" type="video/ogg">HTML5 not supported</video>
.Meine Beobachtungen bezüglich der HTML 5-Video-Tag- und RTSP-Streams (RTP) lauten, dass es nur mit Konqueror funktioniert (KDE 4.4.1, Phonon-Backend auf GStreamer eingestellt). Ich habe nur Video (kein Audio) mit einem H.264 / AAC RTSP (RTP) -Stream.
Die Streams von http://media.esof2010.org/ funktionierten nicht mit konqueror (KDE 4.4.1, Phonon-Backend auf GStreamer eingestellt).
quelle
Chrome implementiert kein RTSP-Streaming. Ein wichtiges Projekt, um es WebRTC zu überprüfen.
"WebRTC ist ein kostenloses, offenes Projekt, das Browsern und mobilen Anwendungen RTC-Funktionen (Real-Time Communications) über einfache APIs bietet."
Unterstützte Browser:
Chrome, Firefox und Opera.
Unterstützte mobile Plattformen:
Android und IOS
http://www.webrtc.org/
quelle