Installation des mjpg-streamer.

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Da in jedem Forum ein paar Regeln eingehalten werden müssen, möchte ich diese auch vorher hier festlegen und niederschreiben. Die grundsätzliche Netiquette setze ich bei Jedem voraus. Darüber hinaus möchte ich nur spezielle Regeln ansprechen:
    - Unterlasse FullQuote sondern nutze Alternativen wie Inline-Quoting
    -> siehe auch https://de.wikipedia.org/wiki/Fullquote vs. https://de.wikipedia.org/wiki/TOFU#Alternativen_zu_TOFU
    - Unterlasse nichtssagende Antworten wie "Danke" oder "werde ich mal testen" oder ähnliches, sofern Du nicht der Threadersteller bist und einen Lösungsvorschlag angeboten bekommen hast.
    - Vermeide Doppel-Posts (zwei Beiträge von Dir hintereinander) sondern editiere wenn möglich Deine Posts.

    Danke...

    • Installation des mjpg-streamer.

      Installationschritte des mjpg-streamers.



      Quellcode

      1. sudo apt-get -y update && sudo apt-get -y upgrade
      2. sudo apt-get install build-essential libjpeg-dev imagemagick subversion libv4l-dev checkinstall
      3. sudo modprobe bcm2835-v4l2

      Sollte es hier zu Problemen kommen ist wahrscheinlich die Kamera nicht aktiviert. „sudo raspi-config“


      Quellcode

      1. raspistill -o /tmp/test.jpg
      2. svn checkout svn://svn.code.sf.net/p/mjpg-streamer/code/ mjpg-streamer-code
      3. cd mjpg-streamer-code/mjpg-streamer


      Als nächstes erstellen wir einen Patch.

      Quellcode

      1. sudo nano input_uvc_patch


      Diesen Inhalt per Drag and Drop einfügen.

      Unterschiede-Datei

      1. --- plugins/input_uvc/input_uvc.c       (revision 174)
      2. +++ plugins/input_uvc/input_uvc.c       (working copy)
      3. @@ -405,9 +405,13 @@
      4.         if(pcontext->videoIn->formatIn == V4L2_PIX_FMT_YUYV) {
      5.             DBG("compressing frame from input: %d\n", (int)pcontext->id);
      6.             pglobal->in[pcontext->id].size = compress_yuyv_to_jpeg(pcontext->videoIn, pglobal->in[pcontext->id].buf, pcontext->videoIn->framesizeIn, gquality);
      7. +            /* copy this frame's timestamp to user space */
      8. +            pglobal->in[pcontext->id].timestamp = pcontext->videoIn->buf.timestamp;
      9.         } else {
      10.             DBG("copying frame from input: %d\n", (int)pcontext->id);
      11. -            pglobal->in[pcontext->id].size = memcpy_picture(pglobal->in[pcontext->id].buf, pcontext->videoIn->tmpbuffer, pcontext->videoIn->buf.bytesused);
      12. +            pglobal->in[pcontext->id].size = memcpy_picture(pglobal->in[pcontext->id].buf, pcontext->videoIn->tmpbuffer, pcontext->videoIn->tmpbytesused);
      13. +            /* copy this frame's timestamp to user space */
      14. +            pglobal->in[pcontext->id].timestamp = pcontext->videoIn->tmptimestamp;
      15.         }
      16. #if 0
      17. @@ -418,8 +422,6 @@
      18.         prev_size = global->size;
      19. #endif
      20. -        /* copy this frame's timestamp to user space */
      21. -        pglobal->in[pcontext->id].timestamp = pcontext->videoIn->buf.timestamp;
      22.         /* signal fresh_frame */
      23.         pthread_cond_broadcast(&pglobal->in[pcontext->id].db_update);
      24. Index: plugins/input_uvc/v4l2uvc.c
      25. ===================================================================
      26. --- plugins/input_uvc/v4l2uvc.c (revision 174)
      27. +++ plugins/input_uvc/v4l2uvc.c (working copy)
      28. @@ -450,6 +450,8 @@
      29.         */
      30.         memcpy(vd->tmpbuffer, vd->mem[vd->buf.index], vd->buf.bytesused);
      31. +        vd->tmpbytesused = vd->buf.bytesused;
      32. +        vd->tmptimestamp = vd->buf.timestamp;
      33.         if(debug)
      34.             fprintf(stderr, "bytes in used %d \n", vd->buf.bytesused);
      35. Index: plugins/input_uvc/v4l2uvc.h
      36. ===================================================================
      37. --- plugins/input_uvc/v4l2uvc.h (revision 174)
      38. +++ plugins/input_uvc/v4l2uvc.h (working copy)
      39. @@ -28,6 +28,7 @@
      40. #include <stdio.h>
      41. +#include <stdint.h>
      42. #include <string.h>
      43. #include <fcntl.h>
      44. #include <unistd.h>
      45. @@ -105,6 +106,8 @@
      46.     int framecount;
      47.     int recordstart;
      48.     int recordtime;
      49. +    uint32_t tmpbytesused;
      50. +    struct timeval tmptimestamp;
      51. };
      52. /* context of each camera thread */
      Alles anzeigen



      Wir führen anschließend diese Befehle aus und verlassen danach das Verzeichnis wieder.

      Quellcode

      1. patch -p0 < input_uvc_patch
      2. make USE_LIBV4L2=true clean all
      3. sudo make DESTDIR=/usr/local install
      4. cd



      Nun geben wir folgendes ein, nur um zu schauen das auch alles richtig installiert wurde.

      Quellcode

      1. sudo modprobe bcm2835-v4l2

      Hier dürfen keine Fehlermeldungen erscheinen.


      Jetzt kann der Streamer gestartet werden, mit folgendem Befehl:

      Quellcode

      1. mjpg_streamer -i "/usr/local/lib/input_uvc.so -d /dev/video0 -n -r 1024x768 -f 24 –q 80" -o "/usr/local/lib/output_http.so -n -w /usr/local/www -p 9000"


      Hier wird ein kleiner Webserver gestartet der unter Deiner Adresse des raspberypi zu erreichen ist aber mit der Port Nummer 9000.
      Bsp.:
      192.168.178.200:9000

      Man kann den Stream natürlich auch noch zusätzlich in eine Datei leiten zb. so:

      Quellcode

      1. mjpg_streamer -i "/usr/local/lib/input_uvc.so -d /dev/video0 -n -r 1024x768 -f 24 –q 80" -o "/usr/local/lib/output_http.so -n -w /usr/local/www -p 9000" -o "/usr/local/lib/output_file.so -f /backup/record-video -d 15000"


      Hier wird der Stream in den Ordner /backup/record-video abgelegt.

      Man kann auch die Parameter verändern zb. die Auflösung (Parameter -r) bzw. die Frames (Parameter -f) und die Quality (Parameter -q)
      Es gibt noch mehr Parameter doch hier verweise ich auf folgende Web Seite: Dokumentation

      Die Hilfe zu allen Plugins kann mit

      Quellcode

      1. mjpg_streamer -i "<Input-Plugin> --help"

      aufgerufen werden.


      Wenn man den mjpg_streamer beim booten automatisch gestartet haben möchte der sollte folgende Datei anlegen:

      Quellcode

      1. sudo nano /etc/init.d/mjpg_streamer


      Mit diesem Inhalt.

      Shell-Script

      1. #!/bin/sh
      2. # /etc/init.d/mjpg_streamer
      3. ### BEGIN INIT INFO
      4. # Provides:          mjpg_streamer
      5. # Required-Start:    $all
      6. # Required-Stop:     $all
      7. # Default-Start:     2 3 4 5
      8. # Default-Stop:      0 1 6
      9. # Short-Description: MJPG_Streamer_autostart
      10. ### END INIT INFO
      11. start()
      12. {
      13.  modprobe bcm2835-v4l2
      14.  sleep:2
      15.  echo "Starting mjpg-streamer..."
      16.  /usr/local/bin/mjpg_streamer -i "/usr/local/lib/input_uvc.so -d /dev/video0 -n -r 1024x768 -f 24 –q 80" -o "/usr/local/lib/output_http.so -n -w /usr/local/www -p 9000" >/dev/null 2>&1 &
      17. }
      18. stop()
      19. {
      20.  echo "Stopping mjpg-streamer..."
      21.  kill -9 $(pidof mjpg_streamer) >/dev/null 2>&1
      22. }
      23. case "$1" in
      24.  start)
      25.    start
      26.    ;;
      27.  stop)
      28.    stop
      29.    ;;
      30.  restart)
      31.    stop
      32.    start
      33.    ;;
      34.  *)
      35.    echo "Usage: $0 {start|stop|restart}"
      36.    ;;
      37. esac
      38. exit 0
      Alles anzeigen



      Mit diesem Befehl wird die eben erstellte Autostart-Datei in den Autostart eingetragen:

      Quellcode

      1. sudo update-rc.d mjpg_streamer defaults



      Danach kannst Du es bequem per:

      Quellcode

      1. sudo service mjpg_streamer start

      starten.

      Beenden kannst Du es mit:

      Quellcode

      1. sudo service mjpg_streamer stop
      Mit freundlichen Grüßen

      Andreas
    • Hallo,
      ich war bereits glücklich diesen Beitrag zu finden, um meine Raspi-Kamera zum Laufen zu bringen.
      Leider bekomme ich den mjpg-streamer nur mit der Option "-y" zum Laufen - mit den sich daraus ergebenden Problemen.
      Mein Problem ist, dass ich den Patch nicht einspielen kann! Der Patch ist für die Revision174, aber ich bekomme aus dem SVN die Revision182 und hier bekomme ich entsprechende Fehlermedungen....

      Gibt es hierzu einen Update?
      Gruß
      Bernd
    • Hello All,

      I'm new in the Forum.

      My name is Mirko.
      I'm a web developer, I'm from Italy.

      I installed the DoorPi on jessie Raspberry Pi 2 and it Works.

      When I press the doorbell button I can place a call to my mobile running Linphone client and so on.

      I installed the mjpg-streamer ant it works too:
      Accessing the mjpg-streamer on the port 8080 I can see the still page and the Livestream.

      But the problem is that when I pace a call I got this error:

      doorpi.sipphone.from_linphone] /dev/video0 does not support streaming i/o

      and the video in the mobile is black.

      Does the mjpg-streamer must run as Deamon for Video call or not?


      Please Let me know

      Regards

      Mirko Ugolini




      SOLVED!!!!!!

      i forgott to insert:

      # camera with v4l2 driver
      bcm2835-v4l2

      in:
      /etc/modules

      Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von mirko.ugolini ()

    • Hallo
      auch ganz neu hier, nicht gerade der Linux Kenner
      Raspi B Jessi Pixel,
      Zugriff über SSH

      pi@door:~/mjpg-streamer-code/mjpg-streamer $ patch -p0 < input_uvc_patch
      patching file plugins/input_uvc/input_uvc.c
      patch: **** malformed patch at line 4: if(pcontext->videoIn->formatIn == V4L2_PIX_FMT_YUYV) {

      hatte vorher alles nach Anleitung weiter gemacht

      pi@door:~ $ mjpg_streamer -i "/usr/local/lib/input_uvc.so -d /dev/video0 -n -r 640x480 -f 24 –q 80" -o "/usr/local/lib/output_http.so -n -w /usr/local/www -p 9000"
      MJPG Streamer Version: svn rev: 3:172
      i: Using V4L2 device.: /dev/video0
      i: Desired Resolution: 640 x 480
      i: Frames Per Second.: 24
      i: Format............: MJPEG
      libv4l2: error setting pixformat: Invalid argument
      Unable to set format: 1196444237 res: 640x480
      Init v4L2 failed !! exit fatal
      i: init_VideoIn failed
      pi@door:~ $ ^C
      pi@door:~ $ sudo modprobe bcm2835-v4l2
      pi@door:~ $ sudo nano input_uvc_patch
      pi@door:~ $ svn checkout svn://svn.code.sf.net/p/mjpg-streamer/code/ mjpg-streamer-code
      Ausgecheckt, Revision 182.
      pi@door:~ $ cd mjpg-streamer-code/mjpg-streamer


      also alles noch mal durchgegangen
      pi@door:~ $ cd mjpg-streamer-code
      pi@door:~/mjpg-streamer-code $ ls -1
      doc
      mjpeg-client
      mjpg-streamer
      mjpg-streamer-experimental
      udp_client
      uvc-streamer
      pi@door:~/mjpg-streamer-code $ cd mjpg-streamer
      pi@door:~/mjpg-streamer-code/mjpg-streamer $ sudo make install
      install --mode=755 mjpg_streamer /usr/local/bin
      install --mode=644 input_uvc.so output_file.so output_udp.so output_http.so input_testpicture.so input_file.so /usr/local/lib/
      install --mode=755 -d /usr/local/www
      install --mode=644 -D www/* /usr/local/www
      pi@door:~/mjpg-streamer-code/mjpg-streamer $ sudo mjpg_streamer -i "/usr/local/lib/input_uvc.so -d /dev/video0 -n -y -r 640x480 -f 15" -o "/usr/local/lib/output_http.so -n -w /usr/local/www -p 8080"
      MJPG Streamer Version: svn rev: 3:172M
      i: Using V4L2 device.: /dev/video0
      i: Desired Resolution: 640 x 480
      i: Frames Per Second.: 15
      i: Format............: YUV
      i: JPEG Quality......: 80
      ERROR opening V4L interface: No such file or directory
      Init v4L2 failed !! exit fatal
      i: init_VideoIn failed

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von FranzT () aus folgendem Grund: weitere Versuche

    • Hi,

      mjpeg-streamer läuft bei mir manuell gestartet, aber als Daemon klappt es leider nicht.
      Ich sehe nicht, was ich falsch gemacht habe:

      Quellcode

      1. sudo service mjpg_streamer start

      liefert

      Quellcode

      1. Job for mjpg_streamer.service failed because the control process exited with error code.
      2. See "systemctl status mjpg_streamer.service" and "journalctl -xe" for details.

      Details systemctl status mjpg_streamer.service:

      Quellcode

      1. ● mjpg_streamer.service - LSB: MJPG_Streamer_autostart
      2. Loaded: loaded (/etc/init.d/mjpg_streamer; generated; vendor preset: enabled)
      3. Active: failed (Result: exit-code) since Sat 2018-03-31 17:06:16 CEST; 3min 32s ago
      4. Docs: man:systemd-sysv-generator(8)
      5. Process: 1023 ExecStart=/etc/init.d/mjpg_streamer start (code=exited, status=203/EXEC)
      6. Mär 31 17:06:16 doorpi systemd[1]: Starting LSB: MJPG_Streamer_autostart...
      7. Mär 31 17:06:16 doorpi systemd[1]: mjpg_streamer.service: Control process exited, code=exited status=203
      8. Mär 31 17:06:16 doorpi systemd[1]: Failed to start LSB: MJPG_Streamer_autostart.
      9. Mär 31 17:06:16 doorpi systemd[1]: mjpg_streamer.service: Unit entered failed state.
      10. Mär 31 17:06:16 doorpi systemd[1]: mjpg_streamer.service: Failed with result 'exit-code'.
      Alles anzeigen



      Detail journalctl -xe

      Quellcode

      1. journalctl -xe
      2. Mär 31 18:09:13 doorpi sudo[16529]: pam_unix(sudo:session): session opened for user root by pi(uid=0)
      3. Mär 31 18:09:13 doorpi systemd[1]: Reloading.
      4. Mär 31 18:09:13 doorpi systemd[1]: apt-daily-upgrade.timer: Adding 10min 47.102976s random time.
      5. Mär 31 18:09:13 doorpi systemd[1]: apt-daily.timer: Adding 2h 19min 46.248680s random time.
      6. Mär 31 18:09:13 doorpi sudo[16529]: pam_unix(sudo:session): session closed for user root
      7. Mär 31 18:09:19 doorpi sudo[16573]: root : TTY=pts/0 ; PWD=/etc/init.d ; USER=root ; COMMAND=/usr/sbin/service mjpg_streamer start
      8. Mär 31 18:09:19 doorpi sudo[16573]: pam_unix(sudo:session): session opened for user root by pi(uid=0)
      9. Mär 31 18:09:20 doorpi systemd[1]: Starting LSB: MJPG_Streamer_autostart...
      10. -- Subject: Unit mjpg_streamer.service has begun start-up
      11. -- Defined-By: systemd
      12. -- Support: https://www.debian.org/support
      13. --
      14. -- Unit mjpg_streamer.service has begun starting up.
      15. Mär 31 18:09:20 doorpi systemd[16604]: mjpg_streamer.service: Failed at step EXEC spawning /etc/init.d/mjpg_streamer: No such file or directory
      16. -- Subject: Process /etc/init.d/mjpg_streamer could not be executed
      17. -- Defined-By: systemd
      18. -- Support: https://www.debian.org/support
      19. --
      20. -- The process /etc/init.d/mjpg_streamer could not be executed and failed.
      21. --
      22. -- The error number returned by this process is 2.
      23. Mär 31 18:09:20 doorpi systemd[1]: mjpg_streamer.service: Control process exited, code=exited status=203
      24. Mär 31 18:09:20 doorpi systemd[1]: Failed to start LSB: MJPG_Streamer_autostart.
      25. -- Subject: Unit mjpg_streamer.service has failed
      26. -- Defined-By: systemd
      27. -- Support: https://www.debian.org/support
      28. --
      29. -- Unit mjpg_streamer.service has failed.
      30. --
      31. -- The result is failed.
      32. Mär 31 18:09:20 doorpi systemd[1]: mjpg_streamer.service: Unit entered failed state.
      33. Mär 31 18:09:20 doorpi systemd[1]: mjpg_streamer.service: Failed with result 'exit-code'.
      Alles anzeigen
      Insbesondere dieser Teil, der auf den Fehler hindeutet...

      Quellcode

      1. mjpg_streamer.service: Failed at step EXEC spawning /etc/init.d/mjpg_streamer: No such file or directory
      ... kann ich mir nicht erklären.


      Das File liegt genau an der angegebenen Stelle, Rechte sind gesetzt auf rwxr-xr-x wie bei den anderen auch.

      Hat jemand eine Idee?

      Gruß,
      Oli

      P.S.: Raspbian Stretch auf einem Raspberry Pi3 B+.
    • Hi Oli,

      wahrscheinlich meint die Meldung nicht, dass /etc/init.d/mjpg_streamer abgeht, sondern, dass in der Datei was nicht gefunden wird. Darin sollte ja ein Eintrag sein der beginnt mit:
      /usr/local/bin/mjpg_streamer (und viele Parameter danach)....

      Hier die Frage, was sagt ls -la /usr/local/bin/mjpg_streamer? Wird das gefunden. Liegt der mjpg_streamer mgl woanders. Ansonsten meine ich, dass das mit der Anleitung von NEA eigentlich problemlos funktioniert hat. Ist leider schon wieder ein paar Wochen her bei mir...

      Hoffe das hilft dir erst einmal weiter!
      Max
    • Hi Max,

      Danke für den Tipp, aber auch das sieht gut aus:

      Brainfuck-Quellcode

      1. pi@doorpi:~ $ cd /usr/local/bin
      2. pi@doorpi:/usr/local/bin $ ls
      3. chardetect easy_install miniterm.py mjpg_streamer pip2 watchmedo
      4. doorpi_cli easy_install-2.7 miniterm.pyc pip pip2.7
      5. pi@doorpi:/usr/local/bin $ modprobe bcm2835-v4l2
      6. pi@doorpi:/usr/local/bin $ ./mjpg_streamer -i "/usr/local/lib/input_uvc.so -d /dev/video0 -n -r 1024x768 -f 24 -q 80" -o "/usr/local/lib/output_http.so -n -w /usr/local/www -p 9000"
      7. MJPG Streamer Version: svn rev: 3:172M
      8. i: Using V4L2 device.: /dev/video0
      9. i: Desired Resolution: 1024 x 768
      10. i: Frames Per Second.: 24
      11. i: Format............: YUV
      12. i: JPEG Quality......: 80
      13. o: www-folder-path...: /usr/local/www/
      14. o: HTTP TCP port.....: 9000
      15. o: username:password.: disabled
      16. o: commands..........: disabled
      17. setting signal to stop
      18. ^C i: cleaning up ressources allocated by input thread
      19. force cancellation of threads and cleanup resources
      20. o: cleaning up ressources allocated by server thread #00
      21. done
      22. pi@doorpi:/usr/local/bin $ ls -la /usr/local/bin/mjpg_streamer
      23. -rwxr-xr-x 1 root staff 18288 Mär 31 14:24 /usr/local/bin/mjpg_streamer
      Alles anzeigen
      Habe die Anleitung mehrmals durchgemacht - müsste eigentlich passen.

      Habe aus dem Daemon Start Script die Pfade verwendet - startet wie Du siehst problemlos.

      Gruß,
      Oli
    • Hier nun meine mjpeg_streamer Startdatei.

      Die Installation war bis dahin in Teilen nicht so richtig straight forward. daher würde ich nicht ausschließen, dass ich mir grundsätzlich was an der Stretch Installation verbogen habe.
      • Beim PiFace 2 musste ich ziemlich rumprobieren, bis die Python Samples (Blink, etc.) liefen.
      • Auch bei der Cam hatte ich ein engewissen Act, weil ich ich beim Erzeugen des Test Screenshots nicht gemerkt hatte, dass die Cam entweder durch das zunächst getestete RPi-Cam-Web-Interface (werde ich zugunsten mjpeg_streamer und Elcom Videofon vermutlich nicht einsetzen) oder DoorPi selbst gesperrt und damit für raspistill als nicht installiert gewmeldet wurde.
      Ob die damit zusammenhängende Rumprobiererei bei der Installation der erforderlichen Pakete verantwortlich für weitere schwer zu verstehende Fehler ist - ich weiß es nicht. Mglw. gibt es auf einer zweiten SD-Card noch eine zweite Installation mit weniger Trial and Error.

      Frohe Ostern wünsche ich allerseits. :)

      Gruß,
      Oli
      Dateien
      • mjpg_streamer.zip

        (602 Byte, 81 mal heruntergeladen, zuletzt: )

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von osu ()

    • Neu

      Hallo zusammen,

      bin erst seit ein paar Tagen mit meinem ersten Raspberry Pi am Start.
      Bisher lief die Installation problemlos, jetzt stehe ich vor einem Problem:

      Ich versuche den mjpg_streamer beim booten automatisch starten zu lassen.
      Habe alles nach Anleitung gemacht.

      Wenn ich folgende Kommandos ausführe...

      Shell-Script

      1. sudo update-rc.d mjpg_streamer defaults
      2. sudo service mjpg_streamer start
      bekomme ich diese Fehlermeldung:

      Shell-Script

      1. Failed to start mjpg_streamer.service: Unit mjpg_streamer.service not found.

      Bin jetzt schon seit einiger Zeit auf Fehlersuche, vielleicht kann mir ja jemand weiterhelfen?
      Wenn ich den mjpg_streamer manuell (mjpg_streamer -i [...] -o [...]) starte, läuft das Ding.

      Viele Grüße und Danke schonmal :thumbup: