mp4 im VLC-Player über Apache / PHP starten

  • Hallo Leute,


    ich habe vermutlich ein ganz banales Problem, aber ich bekomme die Lösung einfach nicht hin. Konkret möchte ich eine mp4 im VLC-Player über einen Apache starten. Der Befehl kommt von meinem Fibaro Smart Home. Ich nutze einen Raspberry 3 B+ mit php5 und Apache2 auf Port 88.


    Was bisher gut funktioniert:

    - die Wiedergabe der mp4 über den VLC direkt

    - die Wiedergabe der mp4 durch Starten meiner.php aus der Console heraus

    - PHP-Dateien auf dem Raspberry über mein Fibaro Smart Home ausführen z.B. den Rasbperry neu starten über eine reboot.php


    Was nicht funktioniert:

    - meine.php über das Fibaro Smart Home starten


    Alle php-Dateien sowie die mp4 liegen unter var/www/html. Der Ordner html sowie alle Dateien haben chmod 777 Rechte.


    Der Code in meine.php sieht wie folgt aus:

    Code
    1. <?PHP
    2. exec ("vlc /var/www/html/meine.mp4");
    3. ?>

    Wie gesagt, aus der Console heraus funktioniert es mit: php meine.php


    Zur Sicherheit hier auch mein Code aus dem vituellen Modul meines Fibaro Smart Home - auch wenn es daran eigentlich nicht liegen kann, da der selbe Code bei anderen php-Dateien funktioniert.

    Code
    1. local device = fibaro:getSelfId();
    2. local ipaddress = fibaro:getValue(device, "IPAddress");
    3. RASP = Net.FHttp(ipaddress, "88");
    4. response = RASP:GET('/meine.php');


    Ich bin über jede Hilfe oder Idee dankbar.


    Grüße

    Mr.Coffee

  • Chmod 777 nützt nichts, wenn der aufrufende User nicht auf das Ausgabedevice (=Ausgabefile) schreiben darf/kann. Du bist einem Internet Hoax aufgesessen.. Jetzt kann Jedermann die Files ändern oder sogar löschen.


    Auch widerspricht es der Server-Client Struktur eines Webservers, wenn die (Audio-/Video)Ausgabe am Server und nicht am Client erfolgt.


    exec ("vlc /var/www/html/meine.mp4"); spielt die .mp4 Datei, wenn die Schreibrechte auf das Audio-Device stimmen würden, auf dem Server ab. Du solltest die Audiodatei dem Client pbergeben und diesen anweisen, mit seinem Audioprogramm das File abzuspielen. Und das auch dann, wenn Client und Server zufällig auf derselben Maschine laufen.



    Servus !

    Wer nichts weiß, muss alles glauben.

  • Hi ihr beiden,


    danke. Das war schon mal hilfreich. Verstanden habe ich es aber scheinbar nicht, denn es funktioniert noch immer nicht.

    Ich habe den User www-data mittels "sudo usermod -aG" den Gruppen "audio", "video" und aus Verzweifelung auch "pi" und "sudo" zugewiesen.

    Ohne Erfolg.

    Die Logs meines Apache sagen das Folgende:


    access.log

    [07/Aug/2018:21:50:41 +0200] "GET /meine.php HTTP/1.1" 404 470 "-" "-"


    error.log

    script '/var/www/html/play.php' not found or unable to stat


    RTFM :

    Ich bin nicht sicher, was mit Client-Server gemeint ist. Konkret liegt die mp4 auf meinem MagicMirror. Meine Smart Home Zentrale kann keine Videos abspielen. Sie schickt nur den Trigger an den Raspberry, um das Video abzuspielen, welches ich auf dem Spiegel sehen möchte.

  • 404 == Seite nicht gefunden == error.log: '/var/www/html/play.php' not found or unable to stat == die Datei existiert nicht


    Aber wo kommt der 470er Fehlercode her? SIP?

    "Alles, was wir sind, ist Sand im Wind, Hoschi."

  • Hoppla,

    bei dem ganzen Rumprobieren habe ich eben Teile im Namen unterschlagen. play100.php ist richtig.

    Erstmal die gute Nachricht: Das mit den Nutzergruppen war die Lösung. Ich danke euch!

    Die schlechte Nachricht: Es gibt eine neue Fehlermeldung in der error.log.



    Schon wieder eine fehlende Permission?


  • Fehlen dem Nutzer www-data nun Rechte auf dem Home-Ordner? Oder den VLC-player?

    Da die Datei unter var/www/html/mp4 liegt, dürfte das ja nicht das Problem sein. Der Pfad gehört ja zum Apache und damit dem Nutzer www-data, oder?


    Nachtrag:

    Wenn ich die php-Datei ausführe, verlangt der raspberry nach einem Passwort. Konkret steht dort:

    Code
    1. Raspbian GNU/Linux 9 raspberrypi tty6
    2. raspberrypi login:

    Einmal editiert, zuletzt von Mr.Coffee ()

  • Fehlen dem Nutzer www-data nun Rechte auf dem Home-Ordner? Oder den VLC-player?

    Der User www-data hat keinen /home/ -Ordner. Daher kann im Grafiksystem kein Display Manager und kein Konigurationsfile gefunden werden.


    VLC lässt sich - zumindest als Audio Client - auch ohne Grafikanzeige im Hintergrund verwenden. Wichtig ist dann aber, dass auch die Option "play-and-exit" eingestellt wird, da sonst der Hauptspeicher mit vielen VLC Instanzen vollgemüllt wird.


    Da VLC mehr als 500 Optionen besitzt musst Du Dir die passenden aus der Dokumentation selbst heraussuchen, ich lann die nicht auswendig.< man vlc > ist sehr kurz gefasst imd verweist auch auf < vlc -h > und < vlc -H >



    Servus !

    Wer nichts weiß, muss alles glauben.

  • Wenn ich VLC ohne aller Argumente und Oprionen als Grafik-User aus dem Terminal direkt starte, word bei meiner VLC Version angezeigt:


    pi@u1604:~$ vlc

    VLC media player 2.2.2 Weatherwax (revision 2.2.2-0-g6259d80)

    [0000000000b83148] core libvlc: VLC wird mit dem Standard-Interface ausgeführt. Benutzen Sie 'cvlc', um VLC ohne Interface zu verwenden.


    Das meinte ich mit VLC im Hintergrund (= ohne Grafikinterface).



    Servus !

    Wer nichts weiß, muss alles glauben.

  • Danke für Deine rasche Antwort.

    Ich kam leider erst heute dazu. Mittels cvlc klappt es nicht. Es tritt der selbe Fehler auf.

    Ich habe ein wenig recherchiert und bin zwar schlauer geworden, bekomme es aber dennoch nicht hin.


    Demnach gibt es wohl 2 Wege:

    1. sudo a2enmod userdir:

    Hierdurch kann man einen Home-Ordner für alle User freigeben. D.h. wenn dort meine File liegt, sollte der Apache sie aufrufen können. Klappt leider nicht ich scheitere bereits am Browser. Ich habe mich an diese Links gehalten:

    http://www.techytalk.info/enable-userdir-apache-module-ubuntu-debian-based-linux-distributions/

    https://askubuntu.com/questions/325498/apache-cant-access-folders-in-my-home-directory


    2. chown -R pi:www-data /var/www/html:

    Dadurch wird der Ordner der Gruppe www-data zugeordnet. Leider auch ohne Erfolg. Inspieriert wurde ich hier:

    https://forum.ubuntuusers.de/topic/wie-kann-ich-als-user-www-data-arbeiten/


    Außerdem habe ich den Nutzer pi der Gruppe www-data beitreten lassen. Nichts funktioniert.

    Es bleibt bei permission denied.

  • Demnach gibt es wohl 2 Wege:



    2. chown -R pi:www-data /var/www/html:

    Dadurch wird der Ordner der Gruppe www-data zugeordnet.

    Nur 2 Wege ? Es gibt mehr, als Du glaubst.


    chown -R ändert nicht nur den Ordner auf User/Groups, sondern auch alle Dateien im Ordner samt weiterer Unterordner. < chown --help > zeigt das schon an.


    Irgendwann wird auch Dein restliches Smart Home nicht mehr funktionieren, wenn Du ziiemlich unkontrolliert im Apache herumhackst.


    Du musst auch erstmal wieder den Ursprungszustand der Dateirechte wiederherstellen, weil Du mit Deiner Art der Systemverwaltung immer mehr Fehler als Administrator einbaust und es nicht verwundert, dass "es nicht geht".


    Und mach Dich auch einmal mit der Anzeige der Dateirechte in der Listenansicht Deines Dateibrosers, oder mit < ls -al /var/www/html > vertraut.



    Servus !

    Wer nichts weiß, muss alles glauben.

  • Hm..Du denkst, dass es nicht geht, weil ich schon so viel geändert habe?

    Das mag ich ja kaum glauben...

    Wie es sich gehört, habe ich vor dem "Spielen" ein Backup gezogen. Ich teste es am Wochenende mit dem Backup und Chown.

    Weiter in die Thematik einlesen schadet sicher auch nicht.

    Ganz schön aufwendig, dafür dass er eigentlich nur ein Video wiedergeben soll:-)

  • Hm..Du denkst, dass es nicht geht, weil ich schon so viel geändert habe?

    Die Gründe, warum es nicht geht, werden immer mehr, und irgendwann kann Dein restluches Smart Home den Webserver auch nicht mehr verwenden.


    Der Webserver gehört dem User www-data der Gruppe www-data, und nicht dem user pi.


    Ich fürchte, dass Du Dir die Verzeichnis- und Dateiattribute ( U-ser/G-roup/O-ther und rwx) noch nie angeschaut hast, normalerweise erkenn ein Admin daraus sofort, warum es nicht geht.



    Servus !

    Wer nichts weiß, muss alles glauben.