Raspberry Pi als Überwachungskamera

Raspberry Pi Livestream ins Internet

In diesem Beitrag möchte ich zeigen, wie ich einen Livestream aus einem Futterhaus auf Basis eines Raspberry Pi realisiert habe. Der Livestream ist über das Internet Tag und Nacht erreichbar: zum Livestream

Wer lediglich einen Livestream innerhalb des eigenen Heimnetzwerkes wünscht und zusätzlich noch vielfältige Einstellungsmöglickeiten für die Kamera sowie eine Aufnahmefunktion haben möchte, sollte sich meine Anleitung Kameras mit Netzwerkstream ansehen. Diese basiert ebenfalls auf dem Raspberry Pi, nutzt jedoch eine andere Software.

Hardware

Welche Hardware benötigt wird und wie man einen Raspberry Pi einrichtet, wurde bereits in der Anleitung Kameras mit Netzwerkstream beschrieben. Deshalb hier nur eine kurze Übersicht der verwendeten Hardware.

Amazon Links:

Wenn das Futterhaus groß genug ist, kann der Raspberry auch direkt in oder am Futterhaus angebracht werden. Als zusätzlichen Wetterschutz kann man diese Tasche benutzen.

Da ich regelmäßig an dem Raspberry etwas ändere und neue Sachen ausprobiere, habe ich mich für das große Kameragehäuse entschieden. Das Ganze lässt sich nicht so elegant verstecken, aber ermöglicht mehr Flexibilität.

Raspbbery Pi in Überwachungskameragehäuse

Es befindet sich in dem Gehäuse bereits eine kleine Halterung, an der ich die Mini Kamera mit einem Klebepad angebracht habe. Wierum die Kamera angebracht wird ist egal, da sich das Bild softwareseitig problemlos vertikal und horizontal kippen lässt.

Da die Kamera leider keinen verstellbaren Fokus besitzt, habe ich ein Brillenglas (welches ich kostenlos von einem Optiker bekommen habe) vor der Kamera angebracht. Dadurch wird das Futterhaus, das sehr nahe vor der Kamera ist, schärfer dargestellt. Alternativ lässt sich hier auch das Glas einer günstigen Lesebrille verwenden.

Das Kameragehäuse schützt die Technik sehr gut vor Regen. Wer das Netzteil außerhalb des Gehäuses an ein Verlängerungskabel  anschließt, kann es hiermit vor Regen schützen.

Software für den Raspberry Pi Livestream

Anleitung zur Einrichtung eines Raspberry Pi

Für den Livestream werden die beiden Tools ffmpeg und crtmpserver benötigt. Um den dadurch erzeugten Stream abzuspielen, wird ein Videoplayer benötigt. Ich benutze den JW Player.

certmpserver Installieren und Konfigurieren

  1. crtmpserver installieren:
    pi@raspberrypi ~ $ sudo aptitude install crtmpserver
  2. crtmpserver log directory anlegen:
    pi@raspberrypi ~ $ sudo mkdir /var/log/crtmpserver
  3. in der Datei /etc/crtmpserver/applications/flvplayback.lua folgende Werte ändern:
    validateHandshake=false,
    keyframeSeek=false,
    seekGranularity=0.1
    clientSideBuffer=30
  4. crtmpserver neu starten:
    pi@raspberrypi ~ $ sudo /etc/init.d/crtmpserver restart

ffmpeg Installieren

Folgende Befehle nacheinander ausführen. Da das Tool erst kompiliert werden muss, kann dieser Schritt einige Zeit in Anspruch nehmen:

pi@raspberrypi ~ $ sudo aptitude remove ffmpeg
pi@raspberrypi ~ $ cd /usr/src
pi@raspberrypi ~ $ sudo mkdir ffmpeg
pi@raspberrypi ~ $ sudo chown `whoami`:users ffmpeg
pi@raspberrypi ~ $ git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg
pi@raspberrypi ~ $ cd ffmpeg
pi@raspberrypi ~ $ ./configure
pi@raspberrypi ~ $ make
pi@raspberrypi ~ $ sudo make install

Nun kann der Stream gestartet werden:

pi@raspberrypi ~ $ raspivid -t 0 -w 1280 -h 720 -fps 25 -b 500000 -vf -o – | ffmpeg -i – -vcodec copy -an -f flv -metadata streamName=myStream tcp://0.0.0.0:6666

JW Player

Der Stream kann nun von dem JW Player empfangen und abgespielt werden. Der JW Player kann durch Eingabe einer E-Mail-Adresse kostenlos angefordert werden: www.jwplayer.com. Nun muss eine HTML-Datei mit folgendem HTML Code erstellt werden (bitte die IP beim parameter „file:“ anpassen):

<html>
  <head>
    <title>Titel der Seite</title>
  </head>
  <body>
    <div id="video-jwplayer_wrapper" style="position: relative; display: block; width: 1280px; height: 720px;">
      <object type="application/x-shockwave-flash" data="/jwplayer/jwplayer.flash.swf" width="100%" height="100%" bgcolor="#000000" id="video-jwplayer" name="video-jwplayer" tabindex="0">
        <param name="allowfullscreen" value="true">
        <param name="allowscriptaccess" value="always">
        <param name="seamlesstabbing" value="true">
        <param name="wmode" value="opaque">
      </object>
      <div id="video-jwplayer_aspect" style="display: none;"></div>
      <div id="video-jwplayer_jwpsrv" style="position: absolute; top: 0px; z-index: 10;"></div>
    </div>

    <script src="/jwplayer/jwplayer.js"></script>

    <script type="text/javascript">
    jwplayer('video-jwplayer').setup({
      flashplayer:"/jwplayer/jwplayer.flash.swf"
      , file:"rtmp://"IP-Adresse des Raspberry Pi"/flvplayback/flv:myStream.flv"
      , autoStart: true
      , rtmp:{
        bufferlength:0.1
      }
      , deliveryType: "streaming"
      , width: 1280
      , height: 720
      , player: {
        modes: {
          linear: {
            controls:{
              stream:{
                manage:false
                , enabled: false
              }
            }
          }
        }
      }
      , shows: {
        streamTimer: {
          enabled: true
          , tickRate: 100
        }
      }
    });
    </script>
  </body>
</html>

Raspberry Pi Livestream

Wie ein Raspberry Pi Livestream aussieht, kannst du dir hier ansehen.

32 Gedanken zu „Raspberry Pi Livestream ins Internet“

  1. Hallo,

    ich habe nach Ihrer Anleitung versucht meinen Raspi+Cam Modul einzurichten.

    Bei der eingabe dieses Befehls : raspivid -t -1 -w 1280 -h 720 -fps 25 -b 500000 -vf -o – | ffmpeg -i – -vcodec copy -an -f flv -metadata streamName=myStream tcp://0.0.0.0:6666

    kommt folgende Antwort:
    mmal: mmal_vc_component_enable: failed to enable component: ENOSPC
    mmal: camera component couldn’t be enabled
    mmal: main: Failed to create camera component
    mmal: Failed to run camera app. please check for firware updates
    und einige ffmepeg dateien, unten drunter steht : Invalid data found when processing input

    Habe alle Updates durchgeführt und über das RPI Control erhalte ich ein Video.

    Habe Sie eine ahnung wo der Fehler liegen könnte?

    MFG
    Bernd

    1. Das Kameragehäuse hat den Raspberry Pi einwandfrei geschützt. Ich bin momentan allerdings auf der Suche nach einem kleineren Gehäuse das den Pi genauso gut Schützt. Sobald ich etwas gutes gefunden habe werde ich einen Beitrag zum Thema machen.
      Du kannst mir auf Facebook folgen um nichts zu verpassen.

  2. raspivid -t -1 -w 1280 -h 720 -fps 25 -b 500000 -vf -o – | ffmpeg -i – -vcodec copy -an -f flv -metadata streamName=myStream tcp://0.0.0.0:6666

    muss hier bei IP, die IP Adresse des Raspberrys hinterlegt werden?

    1. Hallo,
      die IP kann genauso bleiben wie sie ist. Es wird dort der Port (6666) definiert über den der Stream abrufbar ist. In dem HTML Code für den JW Player muss dann die IP des Raspberrys angegeben werden. Wenn der Stream dauerhaft abrufbar sein soll, man aber eine dynamische IP Adresse besitzt, kann man dort auch eine DNS Adresse angeben. Es gibt verschiedene kostenlose DNS Dienste. Es muss in jedem Fall noch der Port im Router freigegeben werden wenn der JW Player im Internet und nicht im lokalen Netz aufgesetzt wird.

      1. Kann ich den Stream auch z.b über den VLC Player übers Netzwerk abrufen? Falls ja, was muss ich im VLC Player dann eingeben?
        Wenn ich auf dem Raspberry den Stream starte, wird dieser dann als rtmp Stream bereitgestellt?

  3. habe alles nach Anleitung durchgeführt, leider bekomme ich aber folgenden Fehler sobald ich versuche den Stream auf dem Raspberry zu starten:
    Invalid data found when processing input. Hat jemand eine Idee an was das liegen kann?

  4. ffmpeg: error while loading shared libraries: libopencore-amrwb.so.0: cannot open shared object file: No such file or directory
    Ich bin mir nicht mehr sicher, aber ich glaube, beim kompilieren gab es 2mal einen Hinweis, dass etwas nicht vorhanden war. Kann das sein? Wie geh ich am Besten vor?

  5. Hallo,
    ich hätte eine (Anfänger-)Frage:
    Wo muss denn die HTML-Datei abgelegt werden?
    In /var/www ?

    Und wie muss sie heißen? index.html ?

      1. Danke für die schnelle Antwort.

        Wenn ich es richtig verstanden habe wird rc.local vor der Zeile exit 0 um den Aufruf:

        sudo raspivid -t -0 -w 1280 -h 720 -fps 25 -b 500000 -vf -o – | ffmpeg -i – -vcodec copy -an -f flv -metadata streamName=myStream tcp://0.0.0.0:6666 &

        erweitert werden. Oder muss da noch weiteres ergänzt werden?

  6. Hallo,

    was bedeuten die Parameter
    – | ffmpeg -i – -vcodec copy -an -f flv -metadata streamName=myStream tcp://0.0.0.0:6666

    im Steaming-Start?

  7. Hallo,
    ich würde gerne schon noch wissen, wie ich mit der html-Datei verfahren muss (Name, Speicherort). Wie wird der Stream im Browser aufgerufen.
    Am Raspberry funktioniert der stream sehr gut (HDMI-Ausgang / Monitor).
    Danke für eine Antwort da es aus der Beschreibung oben nun gar nicht zu ersehen ist.

    1. Hallo 4711engel,
      die html Datei kann einen beliebigen Dateinamen haben. Auch der Speicherort ist erstmal egal. Wenn du sie lokal auf deinem PC speicherst und mit deinem Browser aufrufst wird in dem JW Player der Livestream gestartet. Um über das Internet drauf zu greifen zu können musst du die Datei auf einen Webspace hochladen und dort aufrufen. Dabei muss der Zugriff über das Internet auf deinen Raspberry Pi möglich sein, z.B. über eine Portfreigabe und einen DNS.

  8. Danke für die Rückmeldung.
    Ich habe nun die HTML-Datei auf dem PC-Desktop als nistkasten.html abgelegt. Die IP des Raspi ist dort eingetragen.
    Dann habe ich mir im Internet auf der JWPlayer-Seite einen free-Account beim JWPlayer eingerichtet.
    Danach habe ich auf dem Raspi den stream gestartet, der auf dem Raspi-Monitor auch zu sehen ist.

    Wenn ich nun in der UURL-Zeile des firefox die Datei nistkasten.html öffne, passiert nichts.

    Dieser Schritt ist mir noch nicht klar.

    1. Hallo 4711engel,
      befindet sich der jwplayer in dem Unterordner „jwplayer“? Dieser Unternordner muss sich im gleichen Ordner wie die nistkasten.html befinden. Dieser Schritt ist tatsächlich nicht ganz eindeutig beschrieben, ich werde die Anleitung mal aktualisieren wenn ich die Zeit dazu finde.

      1. Ich finde im Internet alles Mögliche aber keine Datei „jwplayer.exe“. Ich habe zum Beispiel bei github nur javascript-Dateien in einem Verzeichnis jwplayer-master gefunden. Habe dieses Verzeichnis auf den Desktop gespeichert und die nistkasten.html abgelegt. Wenn ich nun im Firefox die html-Datei aufrufe, passiert nichts.
        Kein Stream im PC-Browser. Ist mir zu hoch!?!

        1. Der JWPlayer ist keine exe Anwendung sondern ein Player basierend auf Javascript. Wenn der Ordner mit den Dateien des JWPlayers in der html Datei korrekt verlinkt ist, müsste der Player eigentlich im Browser erscheinen.

    1. Hallo,

      ich habe die Anleitung befolgt, bleibe aber bei Step 12 hängen.

      “ Haben wir das Account aktiviert und sind eingeloggt, können wir einen Video Player anlegen.“

      Wie macht man das?

      Dabei wählen wir als Quelle Your Website…“
      Wo muß das eingeben? wirklich textuell „Your Website“?

      „…und tragen in dem Feld Media File…“
      Wo finde ich dieses Feld?

      „… die Adresse rtmp://IP/flvplayback/flv:myStream.flv [ein]…

      Wie ruft man den JWPlayer auf? Aus dem Browser (Firefox) heraus?

      MfG
      FJ

      1. Du musst dort deine Mail Adresse eintragen und erhälst dann den Player.

        Wenn du aber deinen Stream für andere übers Internet zugänglich machen willst empfehle ich den Weg über Youtube. Der Youtube Player ist responsive und lässt sich somit problemlos auch vom Smartphone unterwegs benutzen. Außerdem ist dieser Weg mit weniger Aufwand verbunden.

        Eine Anleitung dazu gibt es hier: https://kamera-im-vogelhaus.de/webcam-in-hd/

        1. Hallo,
          vielen Dank für die Antwort.
          Einen Account habe ich erstellt und den Player heruntergeladen, aber da es ja keine application ist muß er aus dem Browser aufgerufen werden, oder nicht?
          Ich verstehe nicht wie es dann weitergeht und wo ich oben genannte Infos eingeben muß.
          Den Stream anderen zugängig machen benötigt wohl die gleichen Voraussetzungen wie wenn ich selbst ihn aus der Ferne betrachten will?
          Mir würde genügen, ihn auf dem PC ansehen zu können. Auf dem Fernseher sehe ich das Video, aber es fehlen die Voraussetzungen um ihn auch am PC zu empfangen.
          MfG
          FJ

      1. Nein, das funktioniert nicht!
        Alle möglichen Tastenkombinationen die ich versucht habe funktionieren nicht.
        Mir blieb nichts anderes übrig als den Stecker herauszuziehen.
        MfG
        F.J.

  9. Hallo,
    Ich will mal kurz fragen, ob der JW – Player immer noch kostenlos ist. Weil wenn ich die Seite durchsuche, kann ich mir nur eine Lizenz kaufen sonst nichts.

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*