User avatar
mline
Posts: 1030
Joined: Sun Jan 27, 2013 1:47 pm
Location: Austria, Vienna

TUTORIAL: Realtime Stream

Thu May 22, 2014 12:57 am

Ein Programm mit dem man je nach Einstellung und Netzwerk, nahezu in Echtzeit Kamerabilder streamen kann.

Systemvoraussetzungen
  1. Raspberry Pi A, B, A+, B+ (erste Generation) oder Zero bzw. Zero W
  2. Raspbian (lite) 2017-11-29
  3. Camera Module (v2)
    • USB-Webcams sollten auch funktionieren, allerdings ist dann vermutlich Treiberinstallation notwendig
  4. Internetverbindung
Vorbereitung

* System aktualisieren

Code: Select all

sudo apt-get update
sudo apt-get -y upgrade
System neu starten.

Code: Select all

sudo rpi-update
System neu starten.

* Camera Module aktivieren

Code: Select all

sudo raspi-config
Menü Interfacing Options auswählen.
Menü P1 Camera auswählen.
Mit Yes bestätigen.

System neu starten.

* Kernelmodul laden

Code: Select all

sudo modprobe bcm2835-v4l2
Damit man das nicht nach jedem Neustart machen muss sollte diese Modul noch in die Datei /etc/modules eingetragen werden.

Code: Select all

sudo nano /etc/modules
An das Ende der Datei

Code: Select all

bcm2835-v4l2
kopieren.

* Prüfen ob device erstellt wurde

Der Befehl

Code: Select all

ls -la /dev/video0
sollte ohne Fehlermeldungen ausgeführt werden.
Ausgabe:

Code: Select all

pi@raspberrypi:~ $ ls -la /dev/video0 
crw-rw---- 1 root video 81, 0 Jan  3 01:18 /dev/video0
pi@raspberrypi:~ $ 
Abhängigkeiten installieren

Code: Select all

sudo apt-get install libjpeg8-dev imagemagick subversion
Source beschaffen

* Source downloaden

Code: Select all

mkdir ~/mjpg-streamer
cd ~/mjpg-streamer/
svn co https://svn.code.sf.net/p/mjpg-streamer/code/mjpg-streamer/ .
Auf den Punkt am Ende achten!
Alle weiteren Befehle werden im Ordner ~/mjpg-streamer ausgeführt.

* Patch erstellen

In diesem Post wurde bei Punkt 3 ein Patch gepostet. Diesen Patch wie dort beschrieben in eine Datei kopieren und den Befehl

Code: Select all

patch -p0 < input_uvc_patch
ausführen.

Kompilieren

Code: Select all

make
Soll MJPG-streamer als Dienst ausgeführt werden noch zusätzlich

Code: Select all

sudo make install
absetzen.

Test

Code: Select all

export LD_LIBRARY_PATH=~/mjpg-streamer

Code: Select all

./mjpg_streamer -i "input_uvc.so -d /dev/video0 -r 640x480 -f 30" -o "output_http.so -w ./www"
Diese Zeile kann auch in der Datei start.sh im mjpg-streamer Ordner statt der Zeile 30

Code: Select all

./mjpg_streamer -i "./input_uvc.so" -o "./output_http.so -w ./www"
eingesetzt werden. Danach kann MJPG-streamer mit dem Befehl

Code: Select all

~/mjpg-streamer/start.sh
gestartet werden.

Das Webinterface kann unter der URL http://raspberrypi.local:8080/ aufgerufen werden.

(optional) Dienst installieren

Eine neue Datei öffnen

Code: Select all

sudo nano /etc/systemd/system/mjpg-streamer.service
und folgendes einfügen:

Code: Select all

[Unit]
Description=MJPG-streamer

[Service]
Environment="LD_LIBRARY_PATH=/usr/local/lib"
ExecStart=/usr/local/bin/mjpg_streamer -i "input_uvc.so -d /dev/video0 -r 640x480 -f 30" -o "output_http.so -w /usr/local/www"

[Install]
WantedBy=multi-user.target
Den Dienst mit

Code: Select all

sudo systemctl enable mjpg-streamer.service
sudo service mjpg-streamer start
aktivieren und starten. Nach einem Neustart sollte nun auch MJPG-streamer laufen.

Sonstige Hinweise

Raspberry Pi 2 und 3 werden (vermutlich) nicht native unterstützt. Da diese einen anderen SoC verwenden (BCM2836 und BCM2837 statt BCM2835), läuft (vermutlich) auch das notwendige Modul bcm2835-v4l2 nicht. Ein Kernel mit angepasstem Sourcecode müsste (vermutlich) erstellt werden. Da eine Anleitung dafür sehr umfangreich wäre, verweise ich hier auf die Suchmaschine eures Vertrauens. Zum Beispiel
https://duckduckgo.com/?q=%22raspberry+ ... fsb&ia=web
https://blogs.s-osg.org/use-v4l2-camera ... am-kernel/
Das Modul ist im v7 Kernel vorhanden, aber ich kann gerade nicht testen ob es auch mit den neueren Generationen funktioniert.

---------------------------------------------------------------------------------------

Falls beim Kompilieren folgender Fehler auftritt

Code: Select all

linux/videodev.h: No such file or directory
muss ein Symlink zur geänderten Datei angelegt werden

Code: Select all

sudo ln -s /usr/include/linux/videodev2.h /usr/include/linux/videodev.h
Wurde vermutlich im aktuellen Sourcecode korrigiert.

---------------------------------------------------------------------------------------

Die URL raspberrypi.local funktioniert leider nicht immer. Falls es nicht klappt, ersetzt sie bitte durch die IP-Adresse eurer Pi oder falls ihr das Ganze auf der Pi macht durch localhost

---------------------------------------------------------------------------------------

Bei aktivem Stream ist die...
...CPU Last bei einer Raspberry Pi Zero W: zwischen 15 und 20%
...Speicherauslastung ( gpu_mem=128 ):

Code: Select all

pi@raspberrypi:~ $ free -h
              total        used        free      shared  buff/cache   available
Mem:           370M         25M        290M        2.8M         54M        295M
Swap:           99M          0B         99M
pi@raspberrypi:~ $ 
---------------------------------------------------------------------------------------

Full HD (1080p) mit 30fps hat bei mir nicht geklappt (Bildausschnitt und extremes Rauschen), aber 720p mit 30fps ist ganz ok. Bei künstlicher Beleuchtung ist das Rauschen allerdings schon sehr stark (Sensor bekommt zu wenig Licht). Bei 640x480 und 60 bzw. 90fps hatte ich immer nur einen Bildausschnitt (als wäre das Bild gezoomt).
Da muss man wohl etwas probieren...

---------------------------------------------------------------------------------------

Falls sich Fehler eingeschlichen haben bitte PN schreiben.

*edit
Habe den Post komplett überarbeitet. Sollte nun auf dem aktuellen Stand sein
Last edited by mline on Wed Jan 03, 2018 3:35 am, edited 19 times in total.
<~~>

m4xx-one
Posts: 4
Joined: Fri May 23, 2014 10:20 pm

Re: Einfach nur Streamen

Fri May 23, 2014 10:23 pm

hallo super hat funktioniert

wie kann ich das ganze beim starten automatisch starten?

lg
m4xx

User avatar
mline
Posts: 1030
Joined: Sun Jan 27, 2013 1:47 pm
Location: Austria, Vienna

Re: Einfach nur Streamen

Sat May 31, 2014 11:49 pm

Anleitungen wie man so etwas beim Boot startet gibt es in vielen Foren. Bitte Suchmaschine benutzen ;)
Selbst im Wiki gibts ne Anleitung:
http://elinux.org/RPi_Tutorials#Run_a_s ... n_start_up
<~~>

User avatar
mline
Posts: 1030
Joined: Sun Jan 27, 2013 1:47 pm
Location: Austria, Vienna

Re: Einfach nur Streamen

Sat Oct 11, 2014 6:56 pm

Automatischer Start geht besser mit upstart.

Code: Select all

sudo apt-get install upstart
Da es sich dabei um eine systemrelevante Änderung handelt wird man gefragt ob man das auch wirklich will. Ja ;)

Erst sollte man den build von mjpg-streamer in das System installieren:

Code: Select all

cd /opt/mjpg-streamer
sudo make install
Danach muss man nur noch die Datei /etc/init/mjpg_streamer.conf anlegen:

Code: Select all

description "MJPG-streamer /dev/video0"
start on runlevel [2345]
stop on runlevel [016]

script
        export LD_LIBRARY_PATH=/usr/local/lib
        # if you mounted your camera module with connector upside uncomment following line
        #v4l2-ctl --set-ctrl horizontal_flip=1,vertical_flip=1
        mjpg_streamer -i "input_uvc.so -d /dev/video0 -r 1024x576 -f 25" -o "output_http.so -p 8080 -w /usr/local/www" >> /var/log/mjpg_streamer_upstart.log 2>&1
end script
Nach einem reboot sollte mjpg-streamer auch schon laufen
<~~>

User avatar
mline
Posts: 1030
Joined: Sun Jan 27, 2013 1:47 pm
Location: Austria, Vienna

Re: TUTORIAL: Realtime Stream

Sun Mar 01, 2015 10:10 am

Durch den neuen Kernel funktioniert mjpg-streamer nicht mehr so richtig.
Der Server startet korrekt und ohne Fehlermeldungen aber wenn man die Seite aufruft gibts kein Bild oder keinen Stream.

Abhilfe schafft ein Patch aus diesem Beitrag (ab Punkt 2, bis Punkt 4, dann wie hier oben normal Kompilieren):
http://www.raspberrypi.org/forums/viewt ... 56#p687356
<~~>

brocel1
Posts: 1
Joined: Tue Nov 24, 2015 6:51 pm

Re: TUTORIAL: Realtime Stream

Wed Nov 25, 2015 8:18 am

Guten Abend,

die letzten Tage habe ich versucht, den oben beschriebenen Tutorial durchzuführen. Nach einigen Hürden habe ich auch die Kamera zum Laufen gebracht.
Ich habe alles gemacht, bis auf den Schritt mit dem videodev.h, da keine entsprechende Fehlermeldung erschienen ist. Wie auch @mline bekam ich die zwar die Website, dennoch kein Bild bzw. keinen Stream zu sehen. Also habe ich auch den Patch installiert. Dabei musste zudem Schritt 5 (Kompilieren) ausgeführt werden.

Bild ist da. Alles prima :)
Trotzdem machen mich ein paar Dinge stutzig.

Wenn ich mich im Ordner /opt/mjpg-streamer befinde

Code: Select all

cd /opt/mjpg-streamer/ 
und das Skript start.sh ausführe,

Code: Select all

sudo ./start 
erscheint folgende Meldung:

Code: Select all

MJPG Streamer Version: svn rev: 3:172M
 i: Using V4L2 device.: /dev/video0
 i: Desired Resolution: 640 x 480
 i: Frames Per Second.: 30
 i: Format............: MJPEG
Adding control for Pan (relative)
UVCIOC_CTRL_ADD - Error: Inappropriate ioctl for device
Adding control for Tilt (relative)
UVCIOC_CTRL_ADD - Error: Inappropriate ioctl for device
Adding control for Pan Reset
UVCIOC_CTRL_ADD - Error: Inappropriate ioctl for device
Adding control for Tilt Reset
UVCIOC_CTRL_ADD - Error: Inappropriate ioctl for device
Adding control for Pan/tilt Reset
UVCIOC_CTRL_ADD - Error: Inappropriate ioctl for device
Adding control for Focus (absolute)
UVCIOC_CTRL_ADD - Error: Inappropriate ioctl for device
mapping control for Pan (relative)
UVCIOC_CTRL_MAP - Error: Inappropriate ioctl for device
mapping control for Tilt (relative)
UVCIOC_CTRL_MAP - Error: Inappropriate ioctl for device
mapping control for Pan Reset
UVCIOC_CTRL_MAP - Error: Inappropriate ioctl for device
mapping control for Tilt Reset
UVCIOC_CTRL_MAP - Error: Inappropriate ioctl for device
mapping control for Pan/tilt Reset
UVCIOC_CTRL_MAP - Error: Inappropriate ioctl for device
mapping control for Focus (absolute)
UVCIOC_CTRL_MAP - Error: Inappropriate ioctl for device
mapping control for LED1 Mode
UVCIOC_CTRL_MAP - Error: Inappropriate ioctl for device
mapping control for LED1 Frequency
UVCIOC_CTRL_MAP - Error: Inappropriate ioctl for device
mapping control for Disable video processing
UVCIOC_CTRL_MAP - Error: Inappropriate ioctl for device
mapping control for Raw bits per pixel
UVCIOC_CTRL_MAP - Error: Inappropriate ioctl for device
 o: www-folder-path...: ./www/
 o: HTTP TCP port.....: 8080
 o: username:password.: disabled
 o: commands..........: enabled
Nun bin ich im Skript gefangen. Erst durch strg+C kann ich das Skript wieder verlassen. Während das Skript läuft, funktioniert dennoch die Website sowie der Livestream einwandfrei.

Befinde ich mich in einem anderen Ordner, z.B. /home/pi und versuche von dort aus das Skript auszufüren,

Code: Select all

sudo /opt/mjpg-streamer/start.sh
erscheint folgende Fehlermeldung:

Code: Select all

/opt/mjpg-streamer/start.sh: 30: /opt/mjpg-streamer/start.sh: ./mjpg_streamer: not found
und die Website ist nicht erreichbar. Vielleicht liegt es daran, dass er die Datei mjpg_streamer genau da erwartet, wo man sich gerade befindet und daher findet er es nicht, da diese im Ordner /opt/mjpg-streamer liegt.

Was auch komisch ist. Möchte ich die Datei mjpg_streamer zum Spaß ausführen,

Code: Select all

sudo /opt/mjpg-streamer/mjpg_streamer
erscheint folgende Fehlermeldung:

Code: Select all

MJPG Streamer Version: svn rev: 3:172M
ERROR: could not find output plugin output_http.so
       Perhaps you want to adjust the search path with:
       # export LD_LIBRARY_PATH=/path/to/plugin/folder
       dlopen: output_http.so: cannot open shared object file: No such file or directory
Nun wollte ich mal hier in die Runde fragen, ob diese Fehlermeldungen "normal" sind (it's not a bug - it's a feature) oder ob da wirklich irgendetwas nicht passt. Zudem wollte ich wissen, wie man den Terminal weiterhin benutzen kann, wenn das Skript läuft. Bislang steck ich - wie oben beschrieben - im Skript fest, bis ich es über Strg+C verlasse. Eigentlich möchte ich den Server direkt beim Booten im Hintergrund als eigenen Thread laufen lassen und währenddessen das Terminal weiterhin benutzen.

Danke für eure Aufmerksamkeit.

Gruß brocel1

User avatar
mline
Posts: 1030
Joined: Sun Jan 27, 2013 1:47 pm
Location: Austria, Vienna

Re: TUTORIAL: Realtime Stream

Wed Nov 25, 2015 3:00 pm

brocel1 wrote:Nun bin ich im Skript gefangen. Erst durch strg+C kann ich das Skript wieder verlassen. Während das Skript läuft, funktioniert dennoch die Website sowie der Livestream einwandfrei.
Bis hier hin ist alles OK ;)
brocel1 wrote:Vielleicht liegt es daran, dass er die Datei mjpg_streamer genau da erwartet, wo man sich gerade befindet und daher findet er es nicht, da diese im Ordner /opt/mjpg-streamer liegt.
Richtig!
brocel1 wrote:Was auch komisch ist. Möchte ich die Datei mjpg_streamer zum Spaß ausführen,

Code: Select all

sudo /opt/mjpg-streamer/mjpg_streamer
erscheint folgende Fehlermeldung:

Code: Select all

MJPG Streamer Version: svn rev: 3:172M
ERROR: could not find output plugin output_http.so
       Perhaps you want to adjust the search path with:
       # export LD_LIBRARY_PATH=/path/to/plugin/folder
       dlopen: output_http.so: cannot open shared object file: No such file or directory
Die Fehlermeldung beschreibt dir bereits wo der Fehler ist... wenn du das binary mjpg_streamer direkt startest weiß es nicht wo sich die libraries befinden. Du müsstest es also vermutlich so starten:

Code: Select all

LD_LIBRARY_PATH=/opt/mjpg-streamer sudo /opt/mjpg-streamer/mjpg_streamer
Wenn du die Konsole weiterbenutzen willst startest du das ganze so (& ist das Äquivalent zu Strg+Z und dem Befehl bg):

Code: Select all

cd /opt/mjpg-streamer/
sudo ./start &
Wie man das ganze beim booten startet habe ich weiter unten beschrieben. Leider wird da gerade viel umgebaut weswegen es eventuell nicht mehr so funktioniert. Hier weiß die Suchmaschine deines Vertrauens weiter ;)
<~~>

TheCypher
Posts: 4
Joined: Sat Jun 15, 2013 2:09 pm

Re: TUTORIAL: Realtime Stream

Sun May 08, 2016 9:32 pm

Hallo zusammen!

irgendwas stimmt mit mjpeg-stream nicht!

vor ca einem Jahr hat genau diese Anleitung wunderbar funktioniert - jetzt erscheint beim Aufruf der mjpeg-seite meines Raspis gar kein Bild der RaspiCam mehr :-/ ..
Die LED der RaspiCam leuchtet jedoch rot als wär alles in Ordnung!

Aktuellste Raspbian-Version: 2016-03-18-raspbian-jessie
(Ausgeführt: apt-get update, apt-get upgrade, rpi-update, raspi-config zum aktivieren der RaspiCam)

Kernel: Linux version 4.4.9+ (dc4@dc4-XPS13-9333) (gcc version 4.9.3 (crosstool-NG crosstool-ng-1.22.0-88-g8460611) ) #884 Fri May 6 17:25:37 BST 2016

MJPG Streamer Version: 3:172
Compilation Date.....: May 8 2016
Compilation Time.....: 10:28:44

Hab mich streng an die Anleitung gehalten :-(

Beim Ausführen von ./start erscheinen folgende Meldungen:
(Wenn ich mich recht erinnere erschienen früher die selben Meldungen)

Code: Select all

MJPG Streamer Version: svn rev: 3:172
 i: Using V4L2 device.: /dev/video0
 i: Desired Resolution: 640 x 480
 i: Frames Per Second.: 30
 i: Format............: MJPEG
ERROR opening V4L interface: No such file or directory
 Init v4L2 failed !! exit fatal
 i: init_VideoIn failed
root@raspberrypi:/opt/mjpg-streamer# modprobe bcm2835-v4l2
root@raspberrypi:/opt/mjpg-streamer# ./start.sh
MJPG Streamer Version: svn rev: 3:172
 i: Using V4L2 device.: /dev/video0
 i: Desired Resolution: 640 x 480
 i: Frames Per Second.: 30
 i: Format............: MJPEG
Adding control for Pan (relative)
UVCIOC_CTRL_ADD - Error: Inappropriate ioctl for device
Adding control for Tilt (relative)
UVCIOC_CTRL_ADD - Error: Inappropriate ioctl for device
Adding control for Pan Reset
UVCIOC_CTRL_ADD - Error: Inappropriate ioctl for device
Adding control for Tilt Reset
UVCIOC_CTRL_ADD - Error: Inappropriate ioctl for device
Adding control for Pan/tilt Reset
UVCIOC_CTRL_ADD - Error: Inappropriate ioctl for device
Adding control for Focus (absolute)
UVCIOC_CTRL_ADD - Error: Inappropriate ioctl for device
mapping control for Pan (relative)
UVCIOC_CTRL_MAP - Error: Inappropriate ioctl for device
mapping control for Tilt (relative)
UVCIOC_CTRL_MAP - Error: Inappropriate ioctl for device
mapping control for Pan Reset
UVCIOC_CTRL_MAP - Error: Inappropriate ioctl for device
mapping control for Tilt Reset
UVCIOC_CTRL_MAP - Error: Inappropriate ioctl for device
mapping control for Pan/tilt Reset
UVCIOC_CTRL_MAP - Error: Inappropriate ioctl for device
mapping control for Focus (absolute)
UVCIOC_CTRL_MAP - Error: Inappropriate ioctl for device
mapping control for LED1 Mode
UVCIOC_CTRL_MAP - Error: Inappropriate ioctl for device
mapping control for LED1 Frequency
UVCIOC_CTRL_MAP - Error: Inappropriate ioctl for device
mapping control for Disable video processing
UVCIOC_CTRL_MAP - Error: Inappropriate ioctl for device
mapping control for Raw bits per pixel
UVCIOC_CTRL_MAP - Error: Inappropriate ioctl for device
 o: www-folder-path...: ./www/
 o: HTTP TCP port.....: 8080
 o: username:password.: disabled
 o: commands..........: enabled

User avatar
mline
Posts: 1030
Joined: Sun Jan 27, 2013 1:47 pm
Location: Austria, Vienna

Re: TUTORIAL: Realtime Stream

Mon May 09, 2016 9:30 am

viewtopic.php?p=687356#p687356

Patch aus diesem Thread installiert?
<~~>

Martin92Master
Posts: 17
Joined: Fri Feb 24, 2017 7:33 am

Re: TUTORIAL: Realtime Stream

Fri Feb 24, 2017 7:55 pm

Hallo liebe member und hallo mline,
ich habe die genannte anleitung befolgt. Danach habe ich das mit dem patch probiert.
Ich bekomme folgenden fehler:
bei input_uvc:
Hunk #1 failed at 405 (different line endings)
Hunk #2 failed at 418 (different line endings)
bei v4l2uvc.c:
Hunk #1 failed at 450 (different line endings)
bei v4l2uvc.h:
Hunk #2 failed at 105 (different line endings)
Hunk #1 failed at 28 (different line endings)

und bei jeder datei immer dass die rejects, also das was nicht geklappt hat in eine datei die so heist wie "DATEINAME.rej" verschoben werden.


Der 2. Ansatz mit dem Firmwaredowngrade hat dazu gefürt, dass ich meinen RaSpi bzw Raspiban gegrillt habe und ihn neu aufsetzten musste. Es wäre nett wenn mir jemand weiterhelfen könnte.

PS: Die FehlerMeldung "Inappropriate iotcl for device" bekomme ich auch wenn ich start.sh in der commandozeile ausführe. Vielleicht hilft dir diese Angabe ja.
Mit freundlichen Grüßen
Martin Ebenhöch

User avatar
mline
Posts: 1030
Joined: Sun Jan 27, 2013 1:47 pm
Location: Austria, Vienna

Re: TUTORIAL: Realtime Stream

Fri Feb 24, 2017 8:51 pm

Vermutlich hast du eine der Dateien mit Windows bearbeitet. Die Zeilenenden sind dann

Code: Select all

0x0D 0x0A
Danach wurde die Datei aber mit einem UNIX kompatiblen Programm (patch) ausgeführt. Dort sind die Zeilenenden

Code: Select all

0x0D
Darum die Fehlermeldungen.

Wenn du patch mit der option -l verwendest werden whitespaces ignoriert. Allerdings wäre es besser wenn du gleich nur mit UNIX kompatiblen Dateien arbeitest. Notepad++ bietet zb die Option neue Dateien im UNIX format zu öffnen und speichern.
<~~>

Martin92Master
Posts: 17
Joined: Fri Feb 24, 2017 7:33 am

Re: TUTORIAL: Realtime Stream

Sat Feb 25, 2017 12:43 pm

Hallo,
also die schritte haben auch nicht geholfen. Habe die patch datei gelöscht und nochmal neu mit copy n paste den text eingefügt und zusätzlich mit der option -l gearbeitet. Fehlermelduungen mit hunk bleiben die selben. Ich arbeite auch eigentlich gar nicht über windows sondern komplett mir dem pi also einmal mit leafpad und einmal mit geany die copy und paste geschichte durchgezogen. Woran könnte es sonst noch liegen? Was kann ich sonst n9ch tun?
Mit freundlichen Grüßen
Martin Ebenhöch

Martin92Master
Posts: 17
Joined: Fri Feb 24, 2017 7:33 am

Re: TUTORIAL: Realtime Stream

Sun Feb 26, 2017 10:30 am

Hallo liebe Member,
also Problem ist durch neuherunterladen des programms und neustart des pi gefixxt worden.

Nun habe ich ein neues (ich weiß nicht ob es hier auch reingehört). Also ich möchte nun von meinem laptop aus mit folgender eingabe eine html seite öffnen (http://ip des pi/rapicarweb.html), bei der , wenn ich auf die knöpfe drücke das Auto in passende Richtungen fährt. Das ganz soll so aussehen wie das recht bild :
http://custom-build-robots.com/wp-conte ... ader01.jpg
Klappt auch alles , BIS auf das Bild an sich, also Pfeile sind als bild dateien im selben ordner, die erscheinen auch. Aber das Bild der webcam ist nicht zu sehen.

Martin92Master
Posts: 17
Joined: Fri Feb 24, 2017 7:33 am

Re: TUTORIAL: Realtime Stream

Sun Feb 26, 2017 6:37 pm

hallo,
habe nun dateien die in den hunk fehlermeldungen angegeben sind mit geany geöffnet. bzw bei input_uvc.o konnte ich dies nicht, da ich in geany die fehlermeldung bekam: dass das keine text datei bzw eine datei die irgednwas mit zeichen kode zu tun hat sei. hab bei "dokument " unter "zeichensatz" festlegen geschaut. also als utf-8 also unix angegeben. es wäre nett wenn ihr mir einen weiteren tipp geben könntet, da ich wirklich nicht mehr weiter weiß.
Mit freundlichen Grüßen
Martin Ebenhöch

User avatar
mline
Posts: 1030
Joined: Sun Jan 27, 2013 1:47 pm
Location: Austria, Vienna

Re: TUTORIAL: Realtime Stream

Mon Feb 27, 2017 12:56 am

Martin92Master wrote:...ich weiß nicht ob es hier auch reingehört...
Klares nein ;)
Martin92Master wrote:... bei input_uvc.o konnte ich dies nicht, ...
... weil das schon die compilierte Datei ist.
Zu überprüfen wäre die Datei input_uvc.c, v4l2uvc.h und v4l2uvc.c bzw. die patch-Datei selbst. Diese hunk-Fehlermeldungen kommen vom Befehl patch und dieser Befehl arbeitet nur mit diesen 3(/4) Dateien. Also ist da der Fehler zu suchen.

Es steht ja schon da in welcher Datei und in welcher Zeile das Zeilenende nicht passt...
<~~>

Martin92Master
Posts: 17
Joined: Fri Feb 24, 2017 7:33 am

Re: TUTORIAL: Realtime Stream

Wed Mar 01, 2017 2:08 pm

hallo,
soll ich dann den tread wechseln?
Mit freundlichen Grüßen
Martin

Martin92Master
Posts: 17
Joined: Fri Feb 24, 2017 7:33 am

Re: TUTORIAL: Realtime Stream

Thu Mar 02, 2017 11:42 am

hallo,
nun habe ich die fehler meldung:
"cant find input file to patch at line 3
perhaps you used the wrong -p or -strip option?
The text leading up to this was:
--- plugins_input_uvc/input_uvc.c
+++plugins_input_uvc/input_uvc.c"

in zeile drei steht der patch datei steht: "@@-405,9 +405,13 @@" -Die Frage ist, was sagt mir das nunbzw wo liegt der fehler?
Mit freundlichen Grüßen
Martin Ebenhöch

User avatar
mline
Posts: 1030
Joined: Sun Jan 27, 2013 1:47 pm
Location: Austria, Vienna

Re: TUTORIAL: Realtime Stream

Wed Jan 03, 2018 12:43 am

Initialen Post geändert.
Anleitung mit Raspberry Pi Zero W, Camera Module v2 und Raspbian Lite 2017-11-29 mit Kernel 4.9.70+ getestet.

Image
<~~>

sparkie777
Posts: 118
Joined: Tue Nov 27, 2012 4:37 am

Re: TUTORIAL: Realtime Stream

Wed Jan 03, 2018 6:19 am

bei Verwendung des Kameramoduls waere aber jacksonliam/mjpg-streamer die deutlich bessere Wahl (statt des Standard mjpg-streamer).

Dann mit '-i input_raspicam.so' starten.

Dann funktioniert sogar die automatische Helligkeitsregelung und diverse andere Features die auf v4l2 anscheinend nie portiert wurden. Das v4l2 hat gegenueber dem mmal deutliche Einschraenkungen. Weswegen ich auch keine USB Kameras (statt der speziellen Raspi-CAMs) empfehlen wuerde.

User avatar
mline
Posts: 1030
Joined: Sun Jan 27, 2013 1:47 pm
Location: Austria, Vienna

Re: TUTORIAL: Realtime Stream

Wed Jan 03, 2018 7:49 am

sparkie777 wrote:
Wed Jan 03, 2018 6:19 am
Dann funktioniert sogar die automatische Helligkeitsregelung...
Funktioniert auch mit dem normalen build.
Alles was man einstellen will kann man mit v4l2-ctl (on-the-fly) machen. Siehe hier: viewtopic.php?f=43&t=62364

Alle Parameter die man einstellen kann anzeigen:

Code: Select all

v4l2-ctl --list-ctrls
sparkie777 wrote:
Wed Jan 03, 2018 6:19 am
bei Verwendung des Kameramoduls waere aber jacksonliam/mjpg-streamer die deutlich bessere Wahl (statt des Standard mjpg-streamer).
Eben getestet, läuft nur mit ein paar fps auf meiner Zero W.

Code: Select all

pi@raspberrypi:~/mjpg-streamer-experimental $ ./mjpg_streamer -o "output_http.so -w ./www" -i "input_raspicam.so  -x 1280 -y 720 -fps 30 -ex night"
MJPG Streamer Version.: 2.0
 i: fps.............: 30
 i: resolution........: 1280 x 720
 i: camera parameters..............:

Sharpness 0, Contrast 0, Brightness 50
Saturation 0, ISO 0, Video Stabilisation No, Exposure compensation 0
Exposure Mode 'night', AWB Mode 'auto', Image Effect 'none'
Metering Mode 'average', Colour Effect Enabled No with U = 128, V = 128
Rotation 0, hflip No, vflip No
ROI x 0.000000, y 0.000000, w 1.000000 h 1.000000
 o: www-folder-path......: ./www/
 o: HTTP TCP port........: 8080
 o: HTTP Listen Address..: (null)
 o: username:password....: disabled
 o: commands.............: enabled
 i: Starting Camera
Encoder Buffer Size 81920

Selbst mit 640x480p30 gibts lags. Da nutz ich lieber doch den original build.
<~~>

sparkie777
Posts: 118
Joined: Tue Nov 27, 2012 4:37 am

Re: TUTORIAL: Realtime Stream

Wed Jan 03, 2018 10:11 am

mline wrote:
Wed Jan 03, 2018 7:49 am
sparkie777 wrote:
Wed Jan 03, 2018 6:19 am
Dann funktioniert sogar die automatische Helligkeitsregelung...
Funktioniert auch mit dem normalen build.
ok, dann haben sie's jetzt vielleicht gefixt. Vor ca. 3 Monaten als ich das letzte mal was mit v4l2 gemacht hatte ging es jedenfalls noch nicht.
Eben getestet, läuft nur mit ein paar fps auf meiner Zero W.
auf allen RPis, die ich habe (alle Varianten) wird die Zahl der fps nur durch die jeweils verwendete LAN Verbindung begrenzt. Also z.B. bei Ethernet mit RPi3 auf ca. 11.4MB/s (laut iftop). Wenn das normale v4l2 mjpg-streamer das auch kann dann ist's ok :-)

Normalerweise senke die Bandbreite aber auf ein vernueftiges Mass. Also bei voller AUfloesung auf ca. 3fps:
Server:

Code: Select all

/usr/local/bin/mjpg_streamer -o "output_http.so -w ./www" -i "input_raspicam.so -x 1920 -y 1440 -fps 3
Client:

Code: Select all

mplayer -title t09 -nostop-xscreensaver -fps 15 -vo xv -xy 1200 -vf rotate=1,screenshot -demuxer lavf http://rpi-9:8080/?action=stream

User avatar
mline
Posts: 1030
Joined: Sun Jan 27, 2013 1:47 pm
Location: Austria, Vienna

Re: TUTORIAL: Realtime Stream

Wed Jan 03, 2018 3:17 pm

sparkie777 wrote:
Wed Jan 03, 2018 10:11 am
ok, dann haben sie's jetzt vielleicht gefixt. Vor ca. 3 Monaten als ich das letzte mal was mit v4l2 gemacht hatte ging es jedenfalls noch nicht.
War vielleicht ein Bug oder sowas. Das war nämlich schon von Anfang an im Treiber implementiert. Zumindest zum Zeitpunkt als ich diesen Thread hier erstellt habe ging das schon (Mai 2014).
sparkie777 wrote:
Wed Jan 03, 2018 10:11 am
auf allen RPis, die ich habe (alle Varianten) wird die Zahl der fps nur durch die jeweils verwendete LAN Verbindung begrenzt. Also z.B. bei Ethernet mit RPi3 auf ca. 11.4MB/s (laut iftop).
Wenn mjpg-streamer-experimental auf nem frischen System bei 640x480 und 30fps lagt, mjpg-streamer aber nicht, liegt das nicht an der Bandbreite.
sparkie777 wrote:
Wed Jan 03, 2018 10:11 am
Wenn das normale v4l2 mjpg-streamer das auch kann dann ist's ok :-)
Was meinst du damit?
<~~>

sparkie777
Posts: 118
Joined: Tue Nov 27, 2012 4:37 am

Re: TUTORIAL: Realtime Stream

Wed Jan 03, 2018 3:58 pm

mline wrote:
Wed Jan 03, 2018 3:17 pm
sparkie777 wrote:
Wed Jan 03, 2018 10:11 am
ok, dann haben sie's jetzt vielleicht gefixt. Vor ca. 3 Monaten als ich das letzte mal was mit v4l2 gemacht hatte ging es jedenfalls noch nicht.
War vielleicht ein Bug oder sowas. Das war nämlich schon von Anfang an im Treiber implementiert. Zumindest zum Zeitpunkt als ich diesen Thread hier erstellt habe ging das schon (Mai 2014).
das kann gar nicht sein, da '6by9' mir noch am 02 Jun 2016 bestaetigt hat, dass es nach wie vor nicht funktioniert: Post.
Man konnte/kann das Problem nur mit einem Workaround umgehen (siehe dort).
Was meinst du damit?
ich meine damit, dass wenn die Grenze fuer Aufloesung und Framerate nur durch die LAN-interfaces begrenzt wird (und nicht durch die Streamerfunktionalitaet/performance), dann ist das maximal moegliche bereits erreicht. Fuer den jacksonliam/mjpg-streamer und speziell die Raspicams trifft das jedenfalls zu. Wiedergabe ist so 'fluessig' wie sie unter mjpg nur sein kann. Da 'jacksonliam/mjpg-streamer' direkt auf der nativen Hardware/Firmware aufsetzt kann es nicht schlechter sein als die v4l2 Schnittstelle, die fuer die Raspicams schliesslich nur aus Kompatibilitaetsgruenden ueberhaupt existiert.

User avatar
mline
Posts: 1030
Joined: Sun Jan 27, 2013 1:47 pm
Location: Austria, Vienna

Re: TUTORIAL: Realtime Stream

Wed Jan 03, 2018 4:44 pm

sparkie777 wrote:
Wed Jan 03, 2018 3:58 pm
Da 'jacksonliam/mjpg-streamer' direkt auf der nativen Hardware/Firmware aufsetzt kann es nicht schlechter sein als die v4l2 Schnittstelle, die fuer die Raspicams schliesslich nur aus Kompatibilitaetsgruenden ueberhaupt existiert.
und v4l2 setzt exakt auf der selben Schnittstelle zur nativen Hardware/Firmware auf...

Ich kann halt nur von meiner Erfahrung berichten. Wenn es bei dieser geringen Auflösung und Framerate zu Lags kommt ist vermutlich irgendwas schlampig programmiert.
Ist sicher auch kein Zufall, dass sowohl das Original auf github sowie der Fork davon sich mjpg-streamer-experimental nennt.

Dieses Tutorial betrifft den offiziellen Treiber und mjpg-streamer aus deren offiziellen Quellen.
Trotzdem danke für deinen Beitrag, jetzt kann ja jeder selbst entscheiden welche Version davon derjenige einsetzen will
<~~>

sparkie777
Posts: 118
Joined: Tue Nov 27, 2012 4:37 am

Re: TUTORIAL: Realtime Stream

Wed Jan 03, 2018 4:51 pm

alles klar, Gratulation zum 900sten :-)

Return to “Deutsch”

Who is online

Users browsing this forum: No registered users and 1 guest