Video-Streaming mit der Raspberry Pi Kamera

In diesem Beitrag werden wir Ihnen zeigen, wie Sie Video-Streaming mit einem Raspberry Pi und einer Raspberry Pi-Kamera durchführen können – wie Sie Live-Video in eine Webseite streamen können, auf die Sie mit jedem Gerät zugreifen können, das einen Browser hat und mit dem gleichen Netzwerk verbunden ist wie Pi. Dies ist nützlich, um es z.B. auf eine Heimüberwachungskamera anzuwenden.

Pi Cam

Voraussetzungen:

Du solltest bereits mit dem Raspberry Pi Board vertraut sein – lies Erste Schritte mit Raspberry Pi.

Sie sollten das Betriebssystem Raspbian oder Raspbian Lite in Ihrem Raspberry Pi installiert haben.

Sie können diesen Beitrag für eine Einführung in das Modul Raspberry Pi Video Streaming lesen.

Aktivieren Sie das Rasperry Pi Kameramodul.

Wenn Sie das Kameramodul Raspberry Pi verwenden, müssen Sie die Kamerasoftware in Ihrem Raspberry Pi aktivieren, um es verwenden zu können. Gehen Sie in der Desktop-Umgebung im Menü Einstellungen zum Fenster Raspberry Pi Configuration, öffnen Sie die Registerkarte Interfaces und aktivieren Sie die Kamera wie in der folgenden Abbildung gezeigt.

Oder geben Sie im Terminalfenster den folgenden Befehl ein:

pi@raspberry:~ $ sudo raspi-config

Sie sollten das Software-Konfigurationstool Raspberry Pi sehen. Wählen Sie die Schnittstellenoptionen aus.

Finden Sie die IP-Adresse von Raspberry Pi.

Um auf Ihren Video-Streaming-Webserver zugreifen zu können, müssen Sie Ihre IP-Adresse für Raspberry Pi kennen. Verwenden Sie dazu den folgenden Befehl:

pi@raspberry:~ $ ifconfig

Sie erhalten eine Reihe von Informationen, einschließlich Ihrer IP-Adresse von Raspberry Pi. In meinem Fall lautet die RPi-IP-Adresse 192.168.1.112.

Anschließen der Kamera

Der Anschluss des Raspberry Pi Kameramoduls ist einfach. Schließen Sie die Kamera beim Ausschalten des Pi an den Pi CSI-Anschluss an, wie in der folgenden Abbildung gezeigt. Vergewissern Sie sich, dass die Kamera in der richtigen Ausrichtung angeschlossen ist, wobei die blauen Buchstaben des Bandes nach oben zeigen, wie in der nächsten Abbildung gezeigt.

Schreiben des Skripts

Das Skript für Video-Streaming ist unten dargestellt. Sie finden dieses Skript in der offiziellen PiCamera-Paketdokumentation.

Erstellen Sie eine neue Datei namens rpi_camera_surveillance_system.py:

pi@raspberrypi:~ $ nano rpi_camera_surveillance_system.py

Kopieren Sie den folgenden Code in Ihre neu erstellte Datei:

# Beispiel für Web-Streaming

# Quellcode aus dem offiziellen PiCamera-Paket

# http://picamera.readthedocs.io/en/latest/recipes2.html#web-streaming

Import io

picamera importieren

Importprotokollierung

Socketserver importieren

aus dem Threading Import Bedingung

vom http-Importserver

PAGE=“““““\

<html>

<head>

<title>Himbeer Pi – Überwachungskamera</title>>

</head>

<body>

<center><h1>Himbeer Pi – Überwachungskamera</h1></center></center>

<center><img src=“stream.mjpg“ width=“640″ height=“480″></center>

</body>

</html>

„““

 

Klasse StreamingOutput(object):

def __init__(self):

self.frame = Keine

self.buffer = io.BytesIO()

Selbstbedingung = Bedingung()

 

def write(self, buf):

if buf.startswith(b’\xff\xff\xd8′):

# Neuer Frame, kopieren Sie den Inhalt des vorhandenen Puffers und benachrichtigen Sie alle.

# Kunden, es ist verfügbar.

self.buffer.truncate()

mit Selbstbeschaffenheit:

self.frame = self.buffer.getvalue()

self.condition.notify_all()

self.buffer.seek(0)

return self.buffer.write(buf)

 

Klasse StreamingHandler(server.BaseHTTPRequestHandler):

def do_GET(self):

if self.path == ‚/‘:

self.send_response(301)

self.send_header(‚Location‘, ‚/index.html‘)

self.end_headers()

elif self.path == ‚/index.html‘:

Inhalt = PAGE.encode(‚utf-8‘)

self.send_response(200)

self.send_header(‚Content-Type‘,’text/html‘)

self.send_header(‚Content-Length‘, len(content))

self.end_headers()

self.wfile.write(content)

elif self.path ==’/stream.mjpg‘:

self.send_response(200)

self.send_header(‚Alter‘, 0)

self.send_header(‚Cache-Control‘,’no-cache, privat‘)

self.send_header(‚Pragma‘,’no-cache‘)

self.send_header(‚Content-Type‘,’multipart/x-mixed-replace; boundary=FRAME‘)

self.end_headers()

versuche es:

während Wahr:

mit Ausgangsbedingung:

output.condition.wait()

frame = output.frame

self.wfile.write(b‘–FRAME\r\n‘)

self.send_header(‚Content-Type‘,’image/jpeg‘)

self.send_header(‚Content-Length‘, len(frame))

self.end_headers()

self.wfile.write(frame)

self.wfile.write(b’\r\n‘)

außer Ausnahme als e:

logging.warning(

Streaming-Client %s: %s entfernt: %s‘,

self.client_address, str(e))

sonst:

self.send_error(404)

self.end_headers()

 

Klasse StreamingServer(socketserver.ThreadingMixIn, server.HTTPServer):

allow_reuse_address = True

daemon_threads = True

mit picamera.PiCamera(resolution=’640×480′, Framerate=24) als Kamera:

output = StreamingOutput()

#Entkommentiere die nächste Zeile, um die Rotation der Pi-Kamera zu ändern (in Grad).

#kamera.rotation = 90

camera.start_recording(output, format=’mjpeg‘)

versuche es:

Adresse = (“‘, 8000)

Server = StreamingServer(Adresse, StreamingHandler)

server.serve_forever()

endlich:

camera.stop_recording()

 

Zugriff auf das Video-Streaming

Nachdem Sie das Skript geschrieben haben, können Sie es mit Python 3 ausführen. Führen Sie den nächsten Befehl aus:

pi@raspberrypi:~ $ python3 rpi_camera_surveillance_system.py

Sobald das Skript ausgeführt wird, können Sie auf Ihren Video-Streaming-Webserver zugreifen unter: http://<Your_Pi_IP_Address>:8000. Ersetzen Sie es durch Ihre eigene Raspberry Pi IP-Adresse, in meinem Fall http://192.168.1.112:8000.

Sie können auf das Video-Streaming über jedes Gerät zugreifen, das über einen Browser verfügt und mit dem gleichen Netzwerk verbunden ist wie Ihr Pi.

Sie können Ihren Pi verwenden, um Ihr Zuhause als Überwachungskamera zu überwachen.

Einpacken

Ich hoffe, dieses Projekt war nützlich! Sie können dieses Heimüberwachungsgerät einfach aktualisieren, um Videos aufzunehmen oder Sie zu benachrichtigen, wenn Bewegungen erkannt werden.

Wir haben auch ein Projekt zur Erstellung eines kompletten CCTV-Systems mit dem Raspberry Pi mit MotionEyeOS. Schauen Sie doch einfach mal rein.

Magst du Heimautomation? Erfahren Sie mehr über Node-RED, Raspberry Pi, ESP8266 und Arduino mit meinem Kurs: Erstellen Sie ein Hausautomationssystem für $100.

Comments are closed.

Post Navigation