Dieser Artikel behandelt das einfache Streamen eines mit dem Kameramodul des Raspberry Pi aufgenommenen Videostreams über das Netzwerk an einen anderen Computer. Wie sich der Raspberry Pi in eine Überwachungskamera mit automatisierter Aufnahme verwandeln lässt, habe ich in einem anderen Artikel beschrieben.
Übertragung mit Netcat
Mit dem vorinstallierten Programm raspivid lässt sich einfach auf den Videostream des Raspberry Pi Kameramoduls zugreifen. Für eine Übertragung an einen anderen Rechner im lokalen Netzwerk können folgende Kommandos verwendet werden.
Falls nicht schon geschehen, muss zuvor das Programm netcat installiert werden:
sudo apt-get install netcat
Anschließend wir der Videostream auf dem Rasperry Pi gestartet:
raspivid -t 0 -o - | nc 192.168.1.64 5001
Die IP-Adresse muss mit der IP-Adresse des Computers ersetzt werden, auf dem nachher das Video angezeigt werden soll. Mit den obigen Optionen wird ein Videostream in voller Auflösung (1920x1080) und 30 fps an den angegebenen Computer gesendet.
Auf dem Computer, auf dem das Video angezeigt werden soll:
nc -l -p 5001 | mplayer -fps 31 -cache 1024 -
Für die Übertragung in kleineren Auflösungen kann das obige Kommando raspivid um die Optionen -w für Breite und -h für Höhe ergänzt werden (z.B. -w 1280 -h 720).
Übertragung mit VLC und RTSP
Sollen mehrere Benutzer gleichzeitig einen Videostream anschauen können, kann obige Methode nicht verwendet werden. Hier bietet sich der Einsatz RTSP an, welches z.B. VLC hervorragend beherrscht.
Sofern noch nicht geschehen, wird VLC mit folgendem Kommando auf dem Raspberry Pi installiert:
sudo apt-get install vlc
Danach wird der VLC-Videoserver auf dem Raspberry Pi gestartet:
raspivid -o - -t 0 -n -vf -hf -w 1280 -h 720 -fps 25 -g 100 | cvlc -vvv stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8554/,mux=ts}' :demux=h264
Obiges Kommando enthält Optionen, die das Video vertikal und horizontal spiegeln (-vf -hf), da mein Raspberry Pi auf dem Kopf steht. Bei Bedarf können diese entfernt werden.
Zum Betrachten des Videostreams auf einem anderen Computer:
vlc rtsp://raspberrypi.local:8554/
raspberrypi.local muss dabei mit der IP-Adresse oder Hostnamen ersetzt werden, unter der der Rasperry Pi im lokalen Netzwerk erreichbar ist. Alternativ kann die Adresse des Videostreams auch über die GUI von VLC unter Medien -> Netzwerkstream öffnen... eingegeben werden.
Hallo aus Hamburg,
wenn man auf dem RaspPi VLC laufen läßt und das Video streamt, kann man dies dann auch auf eine Win10 PC, z.b. auch mit VLC, wieder abspielen?
Natürlich. RTSP ist plattformunabhängig. Obiges Beispiel erzeugt mit CVLC auf dem Raspberry Pi einen RTSP-Stream, welcher problemlos auf anderen Geräten mit VLC (unter anderem auch mit VLC für Android auf dem Smartphone) wiedergegeben werden kann.
Hallo,
erstmal vielen Dank für die einfache und gute Anleitung, funktioniert wunderbar :-)
Nur eine kurze Frage: was bewirkt der Parameter -g 100 bei "raspivid -o - -t 0 -n -vf -hf -w 1280 -h 720 -fps 25 -g 100" ?
Habe darüber leider nichts finden Können.
Gruß
Zrop
-g gibt an, nach wie vielen Frames ein Intra-Frame in den Stream eingefügt werden soll. Ein Intra-Frame ist ein ganzes Bild, alle nachfolgenden Frames enthalten nur die Änderungen.
raspivid --help
gibt Dir eine Übersicht aller Optionen aus.Danke für Deinen Blogeintrag.
Wie kann ich den VLC Videoserver denn wieder anhalten?
Wenn Du ihn wie oben in einem Terminal gestartet hast, einfach mit Strg-C. Oder verstehe ich die Frage falsch?
Hi,
nach dem Start des VLS servers wird u.a. folgendes angezeigt:
Invalid PCR value in ES_OUT_SET_(GROUP_)PCR !
sowie:
main mux warning: late buffer for mux input (30116)!
mux_ts mux warning: packet with too strange dts (dts=1540077544,old=1541544195,pcr=1541544195)
Liegt es daran dass der VLC Player bei Eingabe der rtsp URL folgenden Fehler ausgibt:
Verbindung fehlgeschlagen
VLC konnte keine Verbindung zu "192.xxx.xxx.xx:8554" aufbauen.
Vielen Dank einen Tip!
GB
Was mir nicht ganz klar ist, ist die Kamera immer Aktiv ?
Auch wenn der Stream nicht abgerufen wird ?
Kostet dies immer Leistung auch wenn kein Stream gerade angezeigt wird ?
Sobald raspivid oder vlc auf dem Raspi aktiv ist, dann ist wie bei jeder Client/Server-Anwendung auch die Kamera aktiv. Über die Leistungsaufnahme habe ich mir noch gar keine Gedanken gemacht, die Kamera sollte jedoch kein großer Posten sein und da sie den Videostream schon H.264-kodiert liefert muss auch nicht rechenintensiv umgewandelt werden. Aber vielleicht misst da ja mal jemand nach.
Danke für die schnelle Antwort.
Nur um den Stromverbrauch ging es mir auch nicht, sondern mehr darum das dauernt Leistung benötigt wird. Und es einfach unnötig ist das die Kamera dauernt aktiv ist.
Ich möchte sie halt nur zeitweise für Skype benutzen. Weil die neue 8 megapixel Kamera ja besser ist als die meisten Webcams die man kaufen kann.
Und als micro habe ich halt noch ein Blue Yeti USB Mikrofon.
Ok, Skype direkt auf dem Raspi ist natürlich ein ganz anderer Anwendungsfall als oben im Artikel vorgestellt. Jedes verbundene Hardwareteil benötigt Strom. So auch die Kamera. An der Kamera-LED siehst du (sofern sie nicht deaktiviert wurde) ob die Kamera aktuell aktiv ist. Das dürfte bei Skype eigentlich nur der Fall sein, wenn ein Videocall aktiv ist. Probiers doch einfach aus!
Nein Skype auf dem Windows PC meine ich.
Eine Kamera LED gibt es bei der neueren Kamera nicht mehr.
http://www.heise.de/make/meldung/Neue-Raspberry-Pi-Kamera-acht-Megapixel-der-Preis-bleibt-gleich-3186972.html
Solten sie sich auch kaufen viel besser als die alte Version
Hallo,
gibt es die Möglichkeit das Signal einer IP-Kamera live in ein analoges Signal umzuwandeln und dieses an einem Monitor auszugeben?
Der Raspberry Pi hat einen Composite/FBAS-Ausgang. Nach entsprechender Konfiguration (z.B. wie hier und hier beschrieben) kann dort direkt ein Analog-Monitor angeschlossen werden.
Danke für die prompte Antwort. Aber mit welchem Programm (z.B. Motion) und mit welcher Konfiguration kann ich das digital Videosignal direkt durchschleifen und als analoges ausgeben lassen?
...zur Erklärung:
ich habe eine IP-Kamera über Netzwerkkabel angeschlossen und möchte diese in eine Türsprechanlage einbinden.
Bei Klingelbetätigung soll das Kamerabild direkt an die Innenstation (Display) weitergeleitet werden (ohne Verzögerung). Hierzu dachte ich, wäre der Raspberry geeignet... Nur wie, konnte ich leider auch nach längerer Recherche nicht in Erfahrung bringen.
Omxplayer kann remote streams wiedergeben, z.B. ein Stream von der IP-Kamera. Mit Hilfe des Framebuffers kann der Output direkt auf dem Videoausgang des Raspberry ausgegeben werden, sowohl über HDMI als auch über Composite/FBAS. Da man dann auf der Konsole natürlich nichts mehr von einer Shell sieht, braucht man zur Konfiguration natürlich einen SSH-Zugang ;)
Eine schöne Anleitung, wie etwas ähnliches schon mal jemand gemacht hat habe ich hier gefunden: http://www.instructables.com/id/Raspberry-Pi-Wall-Display-Without-X-Windows/
Danach braucht man ja nur noch den Status des angeschlossenen Klingeltasters abfragen und omxplayer entsprechend starten.
Vielleicht schreibst Du uns nachher, ob das alles so funktioniert hat.
Hi ich habe den vlc player installiert aber beim starten bringt er die Meldung "mux_ts mux warning: packet with too strange dts" und bei gleichzeitigen ausführen aufdem Raspi bekomme ich nur ein Bild.
Abspielen auf einem anderen Pc über den VLC player geht nicht.
wo könnte das Problem liegen?
Mfg Tim
Gibt der auf dem Raspi laufende cvlc irgendeine Fehlermeldung aus bzw. sieht man aus den Ausgaben, dass sich der vlc vom PC aus überhaupt mit dem Raspi verbinden konnte?
Hi,
danke für deine Antwort.
Das Problem liegt an den Einstellungen, erst bei 12fps bekomme ich einen Stream. Fehlermeldung"coremux warning: late buffer for mux input".
Kann es sein das ich an der buffersize noch etwas anpassen muss?
Mfg Tim
Hi,
danke für die gute Anleitung. Leider bekomme ich es nicht hin. Ich erhalte auf dem Raspberry Pi folgende (Fehler)Meldungen:
Auf dem PC beim Öffnen des Streams mit VLC:
vlc.exe rtsp://192.168.178.78:8554
Ihre Eingabe konnte nicht geöffnet werden:
VLC kann die Medienadresse 'rtsp://192.168.178.78:8554' nicht öffnen. Für Details bitte im Fehlerprotokoll nachsehen.
Danke im Voraus schonmal für alle Hilfen.
Wie streame ich jetzt von meiner USB-Webcam?