Hallo zusammen!
Ich habe ein Problem mit einem automatisch gestarteten Livestream vom Pi auf die Android-App VLC. Gleich vorweg, das ist mein erstes Projekt mit dem Pi und ich kenne mich dementsprechend wenig mit dem Pi und Debian bzw. Linux im Allgemeinen aus.
Was ich erreichen will, ist, dass der Pi (3B+, Raspian "Stretch", Verbindung per WLAN) direkt nach dem Hochfahren einen Livestream der PiCam startet und diesen im WLAN verfügbar macht. Der Pi soll dabei ohne Monitor und ohne Eingabegeräte starten. Das Runterfahren erledige ich über einen Taster, der an einem der GPIO-Pins hängt. Der Stream soll am Android-Tablet über VLC angezeigt werden.
Was ich bisher hinbekommen habe:
In der rc.local habe ich als letztes vor dem "exit 0" eine Bash-Datei gestartet, in welcher zwei Dinge passieren:
1. Ein Pythonskript wird gestartet, welches in einer while-Schleife auf das Signal des Tasters wartet, um den Pi dann mit call("sudo shutdown -h now", shell=True) runterzufahren. Das Skript wird mit einem "&" am Ende gestartet, damit die Bash-Datei weiterläuft und nicht wartet.
2. Der Stream wird gestartet mit dem Befehl "/opt/vc/bin/raspivid -o - -t 0 -w 800 -h 600 -fps 25 -b 1500000 | cvlc -vvv stream:///dev/stdin --sout '#standard{access=http,mux=ts,dst=:8090}' :demux=h264"
Das funktioniert auch tadellos - sobald der Pi hochgefahren ist, filmt die Kamera, und wenn ich testhalber einen Monitor an den Pi anschließe, wird mir der Stream auch am Monitor dargestellt. Drücke ich den Taster, fährt der Pi runter. Soweit funktioniert das also wie geplant.
Hier tritt nur ein seltsames Problem auf, für das ich keinen Grund und erst recht keine Lösung finde: wenn ich mich nach dem Start des Streams mittels VLC vom Tablet aus mit dem Stream verbinde, bekomme ich am Tablet im VLC eine Meldung, dass "der Ort [IP-Adresse] nicht geöffnet werden kann". Wenn ich jetzt aber mittels SSH am Pi den Stream mit "killall raspivid" beende und die Bash-Datei, die beim Start in der rc.local aufgerufen wird, nochmal manuell starte, dann wird der Stream erneut geöffnet und wenn ich es jetzt nochmal am Tablet in der VLC-App versuche, dann klappt die Verbindung und der Stream wird mir auch auf dem Tablet angezeigt.
Theoretisch funktioniert das also alles, nur beim automatisierten Start steht der Stream scheinbar nicht zur Verfügung, oder der Pi ist unter seiner IP nicht erreichbar. Ich hab zum einen testhalber versucht, den Start des Streams mittels "sleep(60)" zu verzögern, für den Fall, dass das WLAN noch nicht soweit ist, wenn der Stream startet, aber das hat auch nichts gebracht. Zum anderen habe ich den Start des Streams auf einen weiteren Taster gelegt, und nach dem Hochfahren ein paar Minuten gewartet, bevor ich den Stream dann per Taster gestartet habe, aber auch das hat nichts gebracht. Es ist jedesmal das gleiche Ergebnis: VLC kann sich mit dem automatisch gestarteten Stream nicht verbinden, mit dem anschließend manuell gestarteten Stream aber schon.
Und hier hänge ich jetzt fest. Hat jemand von euch evtl. eine Idee?
Gruß Benza