NEWS
mjpg-Streamer über ioBroker starten/stoppen
-
Moin,
ich habe an meinem Raspi eine USB-Kamera angeschlossen. Diese erzeugt über mjpeg-Streamer einen RTSP-Stream.
eingerichtet habe ich wie folgt:
# Pakete installieren $ sudo apt-get install cmake libjpeg8-dev $ sudo apt-get install gcc g++ $ git clone https://github.com/jacksonliam/mjpg-streamer #mjpg-streamer installieren $ sudo chmod 777 -R mjpg-streamer $ cd /home/pi/mjpg-streamer/mjpg-streamer-experimental $ make $ sudo make install #mjpg-streamer starten $ export LD_LIBRARY_PATH=. $ ./mjpg_streamer -o "output_http.so -w ./www" -i "input_raspicam.so"
Der Stream läuft auch.
Jetzt hätte ich gerne die Möglichkeit, das Programm zu starten und zu stoppen und zwar das über den ioBroker.
Zusätzlich wäre auch ein kleines Script toll, welches überwacht, ob der Stream auch läuft und ihn bei Bedarf neustartet.Nur bin ich mit dem letzten Befehl schon, als Linux Laie, überfordert.
Hat hier jemand sowas schon mal umgesetzt oder Hilfe für mich?
mfG
Rene -
Das hie mal als Denkanstoß , könnte sogar funktionieren Fehlt dir nur noch der "Schalter" den du noch anlegen musst .
Das selbe dann noch mal um den Stream wieder zu deaktivieren .
Das prüfen ob der Stream läuft kommt mir gerade nicht vor Augen .....<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable type="timeout" id="timeout1">timeout1</variable> <variable type="timeout" id="timeout2">timeout2</variable> </variables> <block type="controls_if" id="Ci9yel;nZt;3HGWWTd%p" x="-612" y="-337"> <value name="IF0"> <block type="logic_compare" id="fsEVLCKjDeTnXQO4viQs"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="G2%KCoV,9q)w;P-cWe8F"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.example_state.Alarm_an</field> </block> </value> <value name="B"> <block type="logic_boolean" id="T#4?AUYpx3)^tR)foJe("> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="timeouts_settimeout" id="WA,Oe^DL4z}r*b[V}@KH"> <field name="NAME">timeout1</field> <field name="DELAY">1</field> <field name="UNIT">sec</field> <statement name="STATEMENT"> <block type="exec" id=";cV#;)tQPo9{oVU.96{M"> <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="false"></mutation> <field name="WITH_STATEMENT">FALSE</field> <field name="LOG"></field> <value name="COMMAND"> <shadow type="text" id="i6H}i4U]411NG1x8ARy/"> <field name="TEXT">/home/pi/mjpg-streamer/mjpg-streamer-experimental./mjpg_streamer -o "output_http.so -w ./www" -i "input_raspicam.so"</field> </shadow> </value> <next> <block type="timeouts_settimeout" id="[aE}KrJY,d:0HXf]A0v?"> <field name="NAME">timeout2</field> <field name="DELAY">2</field> <field name="UNIT">sec</field> <statement name="STATEMENT"> <block type="telegram" id="VMlUO}%`ou.n8L|//~HY"> <field name="INSTANCE">.0</field> <field name="LOG"></field> <field name="SILENT">FALSE</field> <field name="PARSEMODE">default</field> <value name="MESSAGE"> <shadow type="text" id="(]Kd97@!Pl;eh$%sQw2X"> <field name="TEXT">Stream gestartet </field> </shadow> </value> </block> </statement> </block> </next> </block> </statement> </block> </statement> </block> </xml>
-
@theduke
Das ist jetzt ein blockly Script oder?Dein Startbefehl funktioniert so leider nicht.
pi@TestPI:~ $ /home/pi/mjpg-streamer/mjpg-streamer-experimental./mjpg_streamer -o "output_http.so -w ./www" -i "input_uvc.so" -bash: /home/pi/mjpg-streamer/mjpg-streamer-experimental./mjpg_streamer: Datei oder Verzeichnis nicht gefunden pi@TestPI:~ $
und ohne den Punkt
pi@TestPI:~ $ /home/pi/mjpg-streamer/mjpg-streamer-experimental/mjpg_streamer -o "output_http.so -w ./www" -i "input_uvc.so" MJPG Streamer Version: git rev: 5554f42c352ecfa7edaec6fc51e507afce605a34 ERROR: could not find input plugin Perhaps you want to adjust the search path with: # export LD_LIBRARY_PATH=/path/to/plugin/folder dlopen: input_uvc.so: cannot open shared object file: No such file or directory pi@TestPI:~ $
-
ahhh, der blöde Punkt
./home/pi/mjpg-streamer/mjpg-streamer-experimental/mjpg_streamer
so sollte es aber passen
-
@theduke
Leider nein. Siehe oben der 2. Kasten.So gehts aber.
pi@TestPI:~ $ cd /home/pi/mjpg-streamer/mjpg-streamer-experimental pi@TestPI:~/mjpg-streamer/mjpg-streamer-experimental $ export LD_LIBRARY_PATH=. pi@TestPI:~/mjpg-streamer/mjpg-streamer-experimental $ /home/pi/mjpg-streamer/mjpg-streamer-experimental/mjpg_streamer -o "output_http.so -w ./www" -i "input_uvc.so" MJPG Streamer Version: git rev: 5554f42c352ecfa7edaec6fc51e507afce605a34 i: Using V4L2 device.: /dev/video0 i: Desired Resolution: 640 x 480 i: Frames Per Second.: -1 i: Format............: JPEG i: TV-Norm...........: DEFAULT UVCIOC_CTRL_ADD - Error at Pan (relative): Inappropriate ioctl for device (25) UVCIOC_CTRL_ADD - Error at Tilt (relative): Inappropriate ioctl for device (25) UVCIOC_CTRL_ADD - Error at Pan Reset: Inappropriate ioctl for device (25) UVCIOC_CTRL_ADD - Error at Tilt Reset: Inappropriate ioctl for device (25) UVCIOC_CTRL_ADD - Error at Pan/tilt Reset: Inappropriate ioctl for device (25) UVCIOC_CTRL_ADD - Error at Focus (absolute): Inappropriate ioctl for device (25) UVCIOC_CTRL_MAP - Error at Pan (relative): Inappropriate ioctl for device (25) UVCIOC_CTRL_MAP - Error at Tilt (relative): Inappropriate ioctl for device (25) UVCIOC_CTRL_MAP - Error at Pan Reset: Inappropriate ioctl for device (25) UVCIOC_CTRL_MAP - Error at Tilt Reset: Inappropriate ioctl for device (25) UVCIOC_CTRL_MAP - Error at Pan/tilt Reset: Inappropriate ioctl for device (25) UVCIOC_CTRL_MAP - Error at Focus (absolute): Inappropriate ioctl for device (25) UVCIOC_CTRL_MAP - Error at LED1 Mode: Inappropriate ioctl for device (25) UVCIOC_CTRL_MAP - Error at LED1 Frequency: Inappropriate ioctl for device (25) UVCIOC_CTRL_MAP - Error at Disable video processing: Inappropriate ioctl for device (25) UVCIOC_CTRL_MAP - Error at Raw bits per pixel: Inappropriate ioctl for device (25) o: www-folder-path......: ./www/ o: HTTP TCP port........: 8080 o: HTTP Listen Address..: (null) o: username:password....: disabled o: commands.............: enabled
-
Ja, da fehlt noch das
export LD_LIBRARY_PATH=.
das solltest du festschreiben damit man das nicht immer wieder eingeben muss
-
@theduke
und wie mach ich das? am liebsten wäre mir ein Befehl wie $ start mjpeg-streamer und $ stop mjpeg-streamer.Bei Windoof würde ich eine mjpeg.bat dafür schreiben. Nur auf Linug keinen Plan.
oder aber es in den Autostart packen und quasi vorladen lassen beim startup und dann nur noch ein und aus.
-
@renegade-0
ja das geht, die anderen Leser lachen uns jetzt aus ,ungefähr so :
touch mjpg-streamer.sh chmod 755 mjpg-streamer.sh echo "export LD_LIBRARY_PATH=. " > mjpg-streamer.sh echo "./home/pi/mjpg-streamer/mjpg-streamer-experimental/mjpg_streamer" >> mjpg-streamer.sh
dann startest du im Verzeichnis einfach mit :
./mjpg-streamer.sh
und stopen mit :
killall mjpg_streamer
-
Ach, das ist schon OK. Ich bin schon stolz auf mich, die Anweisungen halbwegs zu verstehen.^^
Jo danke dir, musste ein wenig umbauen, aber jetzt läuft es.
Jetzt kann ich es mit node-Red starten und beenden. Muss nur noch rausfinden, wie ich im Red jetzt mit den PID im exec arbeite und dann hab ich meine Funktion. Vielleicht finde ich auch noch heraus, wie ich den Port überwachen kann, dann hab ich auch die Überwachung.Danke dir vielmals.
-