Das Lesen von Frames aus RTSP-Stream in Python
Ich habe vor kurzem ein Raspberry Pi Kamera und bin streaming der frames über RTSP. Während es möglicherweise nicht nötig, hier ist der Befehl, den ich bin mit der Ausstrahlung des Videos:
raspivid -o - -t 0 -w 1280 -h 800 |cvlc -vvv stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8554/output.h264}' :demux=h264
Dieser streamt das video perfekt.
Was müsste ich nun wie zu tun ist, analysieren diesen stream mit Python und lese jeden frame einzeln. Ich würde gerne ein paar Bewegungserkennung durch surveillance-Zwecke.
Bin ich völlig verloren auf, wo zu beginnen in diese Aufgabe. Kann jemand mir ein gutes tutorial? Wenn dieser nicht erreichbar ist via Python, welche tools/Sprachen kann ich HIERFÜR verwenden?
- Schau mal hier: superuser.com/questions/225367/... ... Scheint, dass selbst vlc ist in der Lage, das zu tun..
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bisschen hacky Lösung, aber Sie können die VLC-python-bindings (Sie können es mit
pip install python-vlc
) und spielen Sie den stream:Dann nehmen Sie einen snapshot jeder zweite oder so:
Dann können Sie SimpleCV oder etwas zur Verarbeitung (nur laden Sie die image-Datei
'.snapshot.tmp.png'
in Ihre Verarbeitungs-Bibliothek)..snapshot.tmp.png
- Datei?Unter Verwendung der gleichen Methode aufgeführt, die von "depu" funktionierte perfekt für mich.
Ich habe gerade ersetzt "video-Datei" mit "RTSP-URL" von der Kamera.
Beispiel unten gearbeitet, die auf ACHSE-IP-Kamera.
(Dies war nicht die Arbeit für eine Weile in früheren Versionen von OpenCV)
Funktioniert auf OpenCV 3.4.1 Windows 10)
verwenden opencv
dann können Sie erfassen framse. Lesen Sie openCV-Dokumentation besuchen: https://docs.opencv.org/3.0-beta/doc/py_tutorials/py_gui/py_video_display/py_video_display.html
Je nach stream-Typ, Sie können wahrscheinlich nehmen Sie einen Blick auf dieses Projekt für einige Ideen.
https://code.google.com/p/python-mjpeg-over-rtsp-client/
Wenn Sie wollen mega-pro, könnten Sie so etwas wie http://opencv.org/ (Python-Module zur Verfügung, die ich glaube) für den Umgang mit der Bewegungserkennung.
Hi reading frames aus dem video erreicht werden kann, mit python und OpenCV . Unten ist der Beispielcode. Funktioniert mit python und opencv2 version.
Hier ist noch eine weitere option
Es ist viel komplizierter, als die anderen Antworten. :-O
Aber auf diese Weise, mit nur einer Verbindung zu der Kamera, Sie könnten die "Gabel" der gleiche Datenstrom gleichzeitig an mehrere multiprocesses, auf dem Bildschirm, Neufassung in multicast, schreiben Sie es auf der Festplatte, etc.
.. natürlich nur in dem Fall müssten Sie etwas wie das (ansonsten lieber auf die früheren Antworten)
Erstellen wir zwei unabhängige python-Programme:
(1) Server-Programm (eine rtsp-Verbindung, Dekodierung) server.py
(2) Client-Programm (liest frames aus dem gemeinsamen Speicher) client.py
Server muss gestartet werden, bevor der client, also
Und dann in einem anderen terminal:
Hier ist der code:
(1) server.py
(2) client.py
Wenn Sie interessiert sind, schauen Sie sich etwas mehr in https://elsampsa.github.io/valkka-examples/