Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Installation von mjpg_streamer und dem Treiber V4L2 #130

Open
Nea74 opened this issue Oct 2, 2015 · 61 comments
Open

Installation von mjpg_streamer und dem Treiber V4L2 #130

Nea74 opened this issue Oct 2, 2015 · 61 comments

Comments

@Nea74
Copy link
Collaborator

Nea74 commented Oct 2, 2015

Es ist hier sehr wichtig Punkt für Punkt alles ab zu arbeiten!!!

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

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

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

Die Datei, hier im nächsten Fenster, auf den Raspi kopieren und umbenennen, der Name kann bleiben nur das .txt entfernen. Die Datei darf also nur input_uvc_patch heißen.
Alternativ den Inhalt in die Datei per "copy and paste" übertragen.
sudo nano input_uvc_patch

Wichtig ist hier das man die Datei in das Verzeichnis /mjpg-streamer-code/mjpg-streamer kopiert oder erstellt.

@Ryconix
Copy link

Ryconix commented Oct 2, 2015

So hab den Inhalt Kopiert und abgespeichert

@Nea74
Copy link
Collaborator Author

Nea74 commented Oct 2, 2015

input_uvc_patch.txt

Wie gesagt Datei auf den Raspi kopieren und die Endung .txt entfernen.

@Nea74
Copy link
Collaborator Author

Nea74 commented Oct 2, 2015

So jetzt können wir da weiter machen wo wir vorhin aufgehört haben

@Ryconix
Copy link

Ryconix commented Oct 2, 2015

Okay wie gesagt die Datei is angelegt

@Nea74
Copy link
Collaborator Author

Nea74 commented Oct 2, 2015

Du musst dich immer in diesem Verzeichnis befinden /mjpg-streamer-code/mjpg-streamer
Das ist sehr wichtig!!!

@Nea74
Copy link
Collaborator Author

Nea74 commented Oct 2, 2015

patch -p0 < input_uvc_patch
make USE_LIBV4L2=true clean all
sudo make DESTDIR=/usr/local install

@Ryconix
Copy link

Ryconix commented Oct 2, 2015

Bin ich drin ~/mjpg-streamer-code/mjpg-streamer $

@Ryconix
Copy link

Ryconix commented Oct 2, 2015

Okay hat alles funktioniert !

@Nea74
Copy link
Collaborator Author

Nea74 commented Oct 2, 2015

cd
Jetzt kannst Du wieder das Verzeichnis Verlassen

@Nea74
Copy link
Collaborator Author

Nea74 commented Oct 2, 2015

Jetzt gibst Du nochmal
sudo modprobe bcm2835-v4l2
ein um zu schauen ob der Treiber sauber installiert wurde und um diesen auch zu starten.

@Nea74
Copy link
Collaborator Author

Nea74 commented Oct 2, 2015

Es dürfen keine Fehlermeldungen kommen

@Nea74
Copy link
Collaborator Author

Nea74 commented Oct 2, 2015

Und wie stehts?

@Ryconix
Copy link

Ryconix commented Oct 2, 2015

sorry war kurz weg führe eben die befehle aus

@Ryconix
Copy link

Ryconix commented Oct 2, 2015

sieht gut aus ! Wenn ich modprobe mache kommt kein Fehler

@Nea74
Copy link
Collaborator Author

Nea74 commented Oct 2, 2015

OK, das ist schonmal nicht schlecht.

@Ryconix
Copy link

Ryconix commented Oct 2, 2015

Und dann :D ?

@Nea74
Copy link
Collaborator Author

Nea74 commented Oct 2, 2015

Jetzt kann der Streamer starten mit folgendem Befehl:
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.
Bsp.:
192.168.178.200:9000

@Nea74
Copy link
Collaborator Author

Nea74 commented Oct 2, 2015

Na wie sieht es jetzt aus?

@Ryconix
Copy link

Ryconix commented Oct 2, 2015

Also ich komme problemlos auf die Seite aber weder bei Statisch noch bei Stream wird mir ein Bild angeboten. Soll ich mal nen Reboot versuchen ?

@Nea74
Copy link
Collaborator Author

Nea74 commented Oct 2, 2015

Kannst Du machen, aber ich denke Deine Picam hat das Zeitliche gesegnet. :-(

@Nea74
Copy link
Collaborator Author

Nea74 commented Oct 2, 2015

Den Treiber musst Du allerdings wieder von Hand starten, mit folgendem Befehl:
sudo modprobe bcm2835-v4l2

@Ryconix
Copy link

Ryconix commented Oct 2, 2015

AH ok hab den server nun gestartet aber bekomme trotzdem kein bild :/

@Nea74
Copy link
Collaborator Author

Nea74 commented Oct 2, 2015

Sorry, Deiner Cam ist wohl nicht mehr zu helfen. Schade, habe hier selber noch eine liegen die den gleichen Fehler bringt.

@Ryconix
Copy link

Ryconix commented Oct 2, 2015

könnte ich das ganze auch mit einer normalen usb webcam probieren ?

@Nea74
Copy link
Collaborator Author

Nea74 commented Oct 2, 2015

Ja klar da hier nun jedes device als /dev/video0 oder /dev/video1 usw. angemeldet werden kann.

@Nea74
Copy link
Collaborator Author

Nea74 commented Oct 2, 2015

Dies ist aber von mir noch nicht erprobt da ich aus Zeitgründen noch nicht dazu gekommen bin.
Ich muss mich selber hier noch ein bisschen schlau machen bevor ich es jemanden, anderen, zumuten kann.

@Nea74
Copy link
Collaborator Author

Nea74 commented Oct 2, 2015

Als Beispiel:

[EVENT_OnKeyDown_prodsystem.5]
10 = os_execute:/usr/local/bin/mjpg_streamer -i "/usr/local/lib/input_uvc.so -d /dev/video0 -n -r 1024x768 -f 5 –q 80" -o "/usr/local/lib/output_file.so -f /backup/record-video/%Y-%m-%d_%H-%M-%S"

@Nea74
Copy link
Collaborator Author

Nea74 commented Oct 2, 2015

Ich würde Dir, aber eigentlich allen, aber empfehlen hier ein [Start/Stop] skript zu verwenden.

@Ryconix
Copy link

Ryconix commented Oct 2, 2015

kannst du mir dazu noch ein beispiel geben ?

@Nea74
Copy link
Collaborator Author

Nea74 commented Oct 2, 2015

Wenn hierfür Nachfrage besteht stelle ich Euch das skript gerne zur Verfügung.

@Ryconix
Copy link

Ryconix commented Oct 2, 2015

ja bitte :)

@Nea74
Copy link
Collaborator Author

Nea74 commented Oct 2, 2015

Das skript ist aber nicht von mir, habe es nur angepasst. War blos zu faul eines selber zu schreiben und dieses hatte ich schon.

mjpg_streamer.txt

hier muss wieder die Endung .txt entfernt werden ein .sh ist nicht nötig.

@Nea74
Copy link
Collaborator Author

Nea74 commented Oct 2, 2015

Wichtig ist hier nur dass das skript nach /etc/init.d kopiert wird.

sudo chmod u+x /etc/init.d/mjpg_streamer
Jetzt in den Autostart eintragen:
sudo update-rc.d mjpg_streamer defaults

Danach kannst Du es bequem per:
sudo service mjp_streamer start
starten. Beenden kannst Du es mit:
sudo service mjp_streamer stop
Natürlich startet der mjpg_streamer nach einem reboot dann selbstständig.

@Ryconix
Copy link

Ryconix commented Oct 2, 2015

und dann muss ich auch nurnoch diesen befehl in die doorpi ini packen oder ?

@Nea74
Copy link
Collaborator Author

Nea74 commented Oct 2, 2015

Ja, Du musst es aber geschickt verpacken da der Streamer automatisch startet nach jedem Reboot.
Oder:
Du lässt den Streamer dauernd laufen.

@Nea74
Copy link
Collaborator Author

Nea74 commented Oct 2, 2015

Ich schreibe dir mal den part von meiner doorpi.ini hier rein damit klar ist was ich meine:

@Ryconix
Copy link

Ryconix commented Oct 2, 2015

hm....wir hatten eigentlich vor das der stream automatisch aktiv geschaltet wird sobald doorpi quasi klingelt. und dann die elcom app das bild zusätzlich mit anzeigt

@Nea74
Copy link
Collaborator Author

Nea74 commented Oct 2, 2015

Ja so geht es natürlich auch so benutze ich es ebenfalls. Hier einen Auszug aus meiner .ini

[prodsystem_InputPins]
0 = sleep:0
1 = sleep:0
2 = sleep:0
3 = sleep:0
#0 = call:0621
#1 = call:0622
#2 = call:0623
#3 = call:0624
4 = Licht-Bewegungssensor-in
5 = Aufnahme-Bewegungssensor-in


[prodsystem_OutputPins]
0 = Verstaerker
1 = Tueroeffner
2 = Licht
3 = Gong-Keller
4 = Gong-Ernst
5 = Gong-Erhard
6 = Gong-Andreas
7 = Blink LED

#======== Config for Events ========
[EVENT_OnStartup]
10 = sleep:4
20 = os_execute:sudo service mjpg_streamer stop
# 20 = out:Alarm,1,0,1

# Es existiert einen Anruf und es wird der Verstaerker aktiviert.
# Vorsichtshalber wird der Stream beendet damit der Neue Stream wieder starten kann.
# Hintergrund ist der da ich den Stream einmal in eine Datei umleite und wenn Stream für den Video-call aufgebaut wird und dieser, anstatt in eine Datei umzuleiten, wieder als Web Stream zur Verfuegung steht.
[EVENT_OnMediaRequired]
10 = out:Verstaerker,1
20 = os_execute:sudo service mjpg_streamer stop
30 = sleep:0.5
40 = os_execute:sudo service mjpg_streamer start

[OnCallIncomming]
#10 = mailto:[email protected],Incoming call from !remote_uri!,DoorPi wurde von der Nummer !remote_uri! angerufen.
20 = sleep:3

# Der Anruf wurde beendet und es wird der Verstaerker deaktiviert.
[EVENT_OnMediaNotRequired]
10 = out:Gong-Keller,0
20 = out:Gong-Ernst,0
30 = out:Gong-Erhard,0
40 = out:Gong-Andreas,0
50 = out:Verstaerker,0
60 = os_execute:sudo service mjpg_streamer stop

[EVENT_OnKeyPressed_prodsystem.0]
10 = out:Gong-Keller,1,0,1
20 = sleep:3
30 = call:0621

[EVENT_OnKeyPressed_prodsystem.1]
10 = out:Gong-Ernst,1,0,1
20 = sleep:3
30 = call:0622

[EVENT_OnKeyPressed_prodsystem.2]
10 = out:Gong-Erhard,1,0,1
20 = sleep:3
30 = call:0623

[EVENT_OnKeyPressed_prodsystem.3]
10 = out:Gong-Andreas,1,0,1
20 = sleep:3
30 = call:0624
40 = os_execute:sudo /usr/local/bin/mailnotify.sh "Es ist jemand an der Tuer" "Es steht jemand an der Tuer und klingelt."

[EVENT_OnKeyDown_prodsystem.4]
10 = out:Licht,1,0,120
20 = sleep:1

@Nea74
Copy link
Collaborator Author

Nea74 commented Oct 2, 2015

Vertsehst Du nun wie ich das gelöst habe?

@Ryconix
Copy link

Ryconix commented Oct 2, 2015

Ja :D Wir basteln gerade selber rum und passen unsere INIs an :)

@Nea74
Copy link
Collaborator Author

Nea74 commented Oct 2, 2015

Du musst natürlich nicht unbedingt diesen in den Autostart eintragen. Ein manueller Befehl reicht Euch hier. Auch hier wieder ein Beispiel:
10 = os_execute:/usr/local/bin/mjpg_streamer -i "/usr/local/lib/input_uvc.so -d /dev/video0 -n -r 1024x768 -f 5 –q 80" -o "/usr/local/lib/output_file.so -f /backup/record-video/%Y-%m-%d_%H-%M-%S"
Hier wird der Stream in eine Datei umgeleitet. Hier bietet es sich an den Stream nicht direkt auf die SD Karte zu speichern sonder auf ein externes Laufwerk das Ihr natürlich erst mounten müsst.

10 = os_execute:/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 &
Hier wird der Stream auf den Webserver umgeleitet.

@Ryconix
Copy link

Ryconix commented Oct 2, 2015

Kannst du vielleicht nochmal eben im anderen thread schauen denen einen fehler haben wir noch :D

@maxkr2
Copy link
Collaborator

maxkr2 commented Oct 2, 2015

Euch beiden vielen Dank!

Habe es soeben ausprobiert und der mpjpeg-streamer läuft auf Anhieb bei mir...!

Danke & viele Grüße,
Max

@Nea74
Copy link
Collaborator Author

Nea74 commented Oct 2, 2015

Gerne Max, wie gesagt Du kannst eigentlich jedes Video-Device so einbinden egal ob USB oder IP-Cam. Hier muss ich aber noch ein bisschen experimentieren.

@Ryconix
Copy link

Ryconix commented Oct 2, 2015

Also mit meiner USB Cam hat es dann auch direkt funktioniert eigentlich :)

@Nea74
Copy link
Collaborator Author

Nea74 commented Oct 2, 2015

Super, danke für Deine Rückmeldung.

@Nea74
Copy link
Collaborator Author

Nea74 commented Oct 2, 2015

@maxkr2
Das knifflige war eigentlich nur der Patch an diesem Treiber da es ohne nicht geht.

@maxkr2
Copy link
Collaborator

maxkr2 commented Oct 2, 2015

Hi Nea,
das kann ich mir vorstellen. Wirklich super, was du da bisher schon herausgefunden hast!!!

Du kannst eigentlich jedes Video-Device so einbinden egal ob USB oder IP-Cam. Hier muss ich aber noch ein bisschen experimentieren
...ist gut zu Wissen. Erst mal reicht mir die PiCam, aber wer weiß... 😃

@motom001
Copy link
Owner

motom001 commented Oct 2, 2015

Als Anmerkung: Warum nicht v4l2 als videoquelle in doorpi anbinden?
Dann würde das Bild per voip übertragen und kann auch auf dem Handy unterwegs empfangen werden. Außerdem würde linphone sich in dem Fall um das synchronisieren von Bild und Ton kümmern...

@Nea74
Copy link
Collaborator Author

Nea74 commented Oct 2, 2015

Wenn Die Bandbreite Deines I-Net Anschlusses hoch genug ist ist es doch eigentlich eher ein Vorteil als ein Nachteil, oder?
Und wegen der synchronisation da sehe ich eigentlich keinen großen Versatz von Video zum Audio Stream.
Oder habe ich hier wiedermal einen Denkfehler?

@Nea74
Copy link
Collaborator Author

Nea74 commented Oct 26, 2015

@motom001
ich habe durch den mjpg_streamer ja eine Streamadresse die ich in die Elcom App eintragen und somit die Vorzüge der App nutzen kann.
Wenn ich nun den V4L2 als Videoquelle in DoorPi anbinde wie komme ich dann an die Adresse des Streams ran damit ich die Video Ausgabe der Elcom App benutzen kann?
Oder muss man dann Linphone, oder vergleichbares, auf dem Client einrichten?

@vplustute
Copy link

Wichtig ist hier nur dass das skript nach /etc/init.d kopiert wird.
sudo chmod u+x /etc/init.d/mjpg_streamer
Jetzt in den Autostart eintragen:
sudo update-rc.d mjpg_streamer defaults
Danach kannst Du es bequem per:
sudo service mjp_streamer start
starten. Beenden kannst Du es mit:
sudo service mjp_streamer stop
Natürlich startet der mjpg_streamer nach einem reboot dann selbstständig.

wenn ich
sudo service mjpg_streamer start
ausführe, wird mir folgender Fehler angezeigt

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

● mjpg_streamer.service
Loaded: loaded (/etc/init.d/mjpg_streamer; generated; vendor preset: enabled)
Active: failed (Result: exit-code) since Wed 2019-03-13 10:17:08 CET; 1min 42s ago
Docs: man:systemd-sysv-generator(8)
Process: 908 ExecStart=/etc/init.d/mjpg_streamer start (code=exited, status=2)

Mär 13 10:17:08 raspberrypi systemd[1]: Starting mjpg_streamer.service...
Mär 13 10:17:08 raspberrypi mjpg_streamer[908]: /etc/init.d/mjpg_streamer: 40: /etc/init.d/mjpg_streamer: Syntax error: word unexpected
Mär 13 10:17:08 raspberrypi systemd[1]: mjpg_streamer.service: Control process exited, code=exited status=2
Mär 13 10:17:08 raspberrypi systemd[1]: Failed to start mjpg_streamer.service.
Mär 13 10:17:08 raspberrypi systemd[1]: mjpg_streamer.service: Unit entered failed state.
Mär 13 10:17:08 raspberrypi systemd[1]: mjpg_streamer.service: Failed with result 'exit-code'.

Wo kann hier der Fehler liegen?

@Wuestengecko
Copy link

Wuestengecko commented Mar 13, 2019

/etc/init.d/mjpg_streamer: 40: /etc/init.d/mjpg_streamer: Syntax error: word unexpected

Deine Shell hat etwas gegen Zeile 40 von /etc/init.d/mjpg_streamer.

Da du systemd hast, versuchs mal mit dieser Datei: mjpg_streamer.service.txt
Anschließend auf dem Pi, in dem Ordner wo diese Datei liegt:

sudo install -Dm644 mjpg_streamer.service.txt /etc/systemd/system/mjpg_streamer.service
sudo systemctl daemon-reload
sudo systemctl disable mjpg_streamer.service && sudo systemctl enable mjpg_streamer.service
sudo systemctl restart mjpg_streamer.service

(am besten Zeile für Zeile rüberkopieren)

Edit: In diesem Fall musst du eventuell die Konfiguration von DoorPi oder anderem anpassen, da die Kommandos zum Starten/Stoppen anders sind:

sudo systemctl start mjpg_streamer
sudo systemctl stop mjpg_streamer

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants