Posts by Benza

    vorsichtige Erfolgsmeldung:

    unter /etc/xdg/autostart/ eine .desktop angelegt mit folgendem Inhalt:

    Code
    [Desktop Entry]
    Type=Application
    Name=sk
    Exec=/home/pi/sk.sh

    Pi gestartet, Stream wurde automatisch gestartet, und war auch auf Anhieb in der VLC-App abrufbar. Hab das jetzt dreimal hintereinander probiert, jedes Mal erfolgreich. Genauso habe ich mir das vorgestellt. Ich werds noch ein paar Mal testen, aber das sieht doch gut aus.

    Vielen Dank euch beiden für eure Hilfe!


    Gruß Benza

    Ja, da wird der stream noch gestartet, aber vlc nicht, denn auf dem Port 8090 (btw: mein Fehler mit 8089) wird nicht gelauscht.

    D. h. m. E., rc.local ist z. Zt. nicht dafür geeignet. Du willst das ja headless machen, ... ist eine *.desktop-Datei dafür geeignet? Evtl. mit einer service-unit + timer-unit?

    https://wiki.ubuntuusers.de/systemd/Units/

    https://wiki.ubuntuusers.de/systemd/Service_Units/

    https://wiki.ubuntuusers.de/systemd/Timer_Units/

    Ich probier das gerne aus, das mit der rc.local hab ich nur gemacht, weil ich woanders davon gelesen habe. Ich werd mir die Links anschauen und es mal mit einer .desktop-Datei versuchen. Ob da jetzt ein Desktop geladen wird oder nicht, ist für mich eigentlich zweitrangig, solange die Performance noch passt. Auf jeden Fall vielen Dank für die Hilfestellung! Ich geb Bescheid, wenn ich mit der .desktop weiter bin.

    Gruß Benza

    In dem Fall ja, da es offensichtlich ein Raspbian with Desktop ist. ;)

    Ja, eigentlich wollt ich es schön schlank ohne Desktop machen, aber wie schon gesagt, wenns nur mit Desktop geht, dann halt so. Danke für deinen Link, das muss ich mir nachher in Ruhe durchlesen.

    Gruß Benza

    ok, hab alle drei Zeilen eingegeben:

    Code
    sudo netstat -tlpena | grep -i 8089
    -> keine Rückmeldung, steht wieder auf dem Prompt (mit "-tulpena" statt "-tlpena" auch, bei Port 8090 statt 8089 auch. hab das zur Sicherheit auch probiert)
    
    ps -fC vlc
    -> UID        PID  PPID  C STIME TTY          TIME CMD
    
    ps -fC cvlc
    -> UID        PID  PPID  C STIME TTY          TIME CMD

    ok, ich hab die von dir angegebene Zeile in die rc.local eingefügt, vor dem Aufruf der Bash-Datei, welche den Stream startet.
    Der Stream startet jetzt schon bevor der Desktop angezeigt wird, aber beim Verbinden mit VLC leider immer noch "Ort konnte nicht gelesen werden". Nach "killall raspivid" und erneutem Start der Bash-Datei klappt die Verbindung dann.

    Display Spoiler

    ok, netstat -tulpena nach dem killall:

    ...und nach der Verbindung mit VLC:

    ok, hier die Ausgaben:

    Display Spoiler

    1. sudo netstat -tulpena

    2. nochmal systemd-analyze blame:

    ok, hier die Ausgaben deiner vier Anweisungen. Das ist passiert, während der erste gestartete Stream noch lief, ich hatte also noch kein killall eingegeben (über das Konsolenfenster in Putty):

    Display Spoiler


    1. sudo lsof -nPi

    Code
    sudo: lsof: Befehl nicht gefunden

    2. ps aux | grep -i [r]aspivid

    Code
    root 955 0.4 0.2 62492 2020 ? S1 09:36 0:01 /opt/vc/bin/raspivid -0 - -t -w 800 -h 600 -fps 25 -b 1500000

    3. systemd-analyze time

    Code
    Startup finished in 1.907s (kernel) + 9.087s (userspace) = 10.995s

    4. systemd-analyse blame

    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