web-dev-qa-db-fra.com

Impossible d'exécuter VLC à partir de PHP

J'utilise uBuntu 12.04.3, système d'exploitation 32 bits sur une machine 8 processeurs, 8 Go RAM Intel Xeon 64 bits. J'ai également installé tous les backports.

J'ai ce problème qui me ronge la tête depuis 3 jours. J'ai créé un fichier play.sh avec le code suivant ...

Code:

#! /bin/sh 

vlc -vvv sasural.ts

Où sasural.ts est un fichier vidéo qui se trouve sous home et au même niveau qu'Apache. J'appelle le fichier .sh en utilisant le code PHP suivant ...

Code:

Shell_exec('play.sh');

J'ai également essayé les deux méthodes exec ()/system () pour appeler le fichier .sh.

Chaque fois que je le fais, je reçois le message suivant ...

VLC media player 2.2.0-git Weatherwax Command Line Interface initialized. Type `help' for help. > Shutting down.

play.sh fonctionne si je l'exécute à partir de l'invite de commande de terminal en dehors du code PHP. Je suppose que je fais quelque chose de mal quand je l'invoque depuis PHP.

J'ai effectué les tâches suivantes ...

  1. Étant donné l'accès racine Apache
  2. Lié tous les dossiers à Apache
5
Seemant Mathur

Messieurs

J'ai pu résoudre ce problème en utilisant les étapes suivantes ...

  • Installer la version vlc nox
  • Dans le fichier PHP: echo Shell_exec ("sh /var/www/play1.sh");

  • Dans le fichier play1.sh: #!/Bin/sh vlc -Idummy /var/www/media.ts --sout '#standard {access = http, mux = ts, dst =: 1935 /}'

  • Appelez le fichier PHP via un navigateur et VLC commencera à diffuser en continu sur le port 1935.

Pour accéder au fichier depuis la fin du client ...

1) Pointez VLC ou n’importe quel lecteur multimédia sur l’URL + le port. Ex. http://www.something.com:1935 2) Le lecteur client commencera à recevoir le fichier et à le lire.

La prochaine étape consiste à activer ce fichier à la demande. Publierons comment j'ai fait cela aussi, alors restez branchés !!

Merci à tous ceux qui m'ont aidé à résoudre ce problème. J'ai ajouté des représentants partout où c'était possible.

1
Seemant Mathur

C'est fait :)

C'était amusant: D

conditions préalables: vlc doit déjà être en cours d'exécution fifo le fichier doit exister

mkfifo /tmp/vlcfifo
chmod a+rw /tmp/vlcfifo
tail -f /tmp/vlcfifo | Nohup vlc --intf rc &

dans le fichier php:

<?php
passthru('echo "add /path/to/video.avi" | tee /tmp/vlcfifo');
?>

Essayez ça :)

4
Gregory Fenton

Dans votre script, avant de lancer vlc, indiquez la ligne: export DISPLAY=:0

Cela devrait le lancer dans votre session X principale, en supposant que le serveur Web s'exécute sur la même boîte que votre session X.

Vous devrez également faire quelque chose avec le son si vous en avez besoin. Comme un serveur ALSA ou Pulseaudio distant.

2
Trevor Dell