Après avoir uploadé un fichier vidéo sur un serveur, je voudrais lancer
l'encodage de cette vidéo via une page web, en faisant appel à la fonction
"passthru". J'ai donc réalisé deux tests :
1) en ligne de commande, la commande suivante fonctionne parfaitement et
créé le fichier test.flv :
Après exécution de ce script, la valeur retournée $error est 0. Un fichier
destination test.flv est créé dans le répertoire /usr/local/movies, mais il
est vide ( 0 octet ) !
Aucun process concernant ffmpeg ne tourne sur le serveur après avoir lancé
la commande. Pourtant, le délai nécessaire à l'encodage pourrait me laisser
le temps de l'apercevoir dans un ps -ef.
Je précise que les droits sur le répertoire /usr/local/movies ont été fixés
à 777 pour les besoins du test.
Bien évidemment, je préférerais démarrer l'encodage depuis la page web,
plutôt que le faire en ligne de commande :)
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
P'tit Marcel
je crée ensuite un script php dans une page web avec les mêmes élements : <?php $cmd_encodage = "/usr/bin/ffmpeg - /usr/local/movies/test.mov -acodec mp3 -ab 48 -f flv -s 640x480 -ar 22050 -aspect 4:3 -pass 1 -b 360 -r 25 -y /usr/local/movies/test.flv &"; echo passthru($cmd_encodage,$error); echo "val retournée ".$error;
Après exécution de ce script, la valeur retournée $error est 0. Un fichier destination test.flv est créé dans le répertoire /usr/local/movies, mais il est vide ( 0 octet ) ! Aucun process concernant ffmpeg ne tourne sur le serveur après avoir lancé la commande. Pourtant, le délai nécessaire à l'encodage pourrait me laisser le temps de l'apercevoir dans un ps -ef. Je précise que les droits sur le répertoire /usr/local/movies ont été fixés à 777 pour les besoins du test.
Si tu veux lancer le traitement en background, je crois que la ligne devrait terminer par: > /dev/null 2>&1 & personnellement, j'utilise plutôt exec ou system et réserve passthru aux programmes qui renvoient des flots binaires au navigateur. Au passage le echo avant le passthru ne sert à rien.
est-ce que l'utilisateur nobody a accès à usr/bin ?
Bien évidemment, je préférerais démarrer l'encodage depuis la page web, plutôt que le faire en ligne de commande :)
peut être fallait-il commencer par cela au lieu de te prendre la tête ?
pour l'intégration de ffmpeg avec php, http://sourceforge.net/projects/ffmpeg-php/ est ton amie...
eça -- P'tit Marcel pourquoi personne y répond à ma question :'( <news:
je crée ensuite un script php dans une page web avec les mêmes élements :
<?php
$cmd_encodage = "/usr/bin/ffmpeg - /usr/local/movies/test.mov -acodec
mp3 -ab 48 -f flv -s 640x480 -ar 22050 -aspect 4:3 -pass 1 -b 360 -r 25 -y
/usr/local/movies/test.flv &";
echo passthru($cmd_encodage,$error);
echo "val retournée ".$error;
Après exécution de ce script, la valeur retournée $error est 0. Un fichier
destination test.flv est créé dans le répertoire /usr/local/movies, mais il
est vide ( 0 octet ) !
Aucun process concernant ffmpeg ne tourne sur le serveur après avoir lancé
la commande. Pourtant, le délai nécessaire à l'encodage pourrait me laisser
le temps de l'apercevoir dans un ps -ef.
Je précise que les droits sur le répertoire /usr/local/movies ont été fixés
à 777 pour les besoins du test.
Si tu veux lancer le traitement en background, je crois que la ligne
devrait terminer par: > /dev/null 2>&1 &
personnellement, j'utilise plutôt exec ou system et réserve passthru aux
programmes qui renvoient des flots binaires au navigateur. Au passage le
echo avant le passthru ne sert à rien.
est-ce que l'utilisateur nobody a accès à usr/bin ?
Bien évidemment, je préférerais démarrer l'encodage depuis la page web,
plutôt que le faire en ligne de commande :)
peut être fallait-il commencer par cela au lieu de te prendre la tête ?
pour l'intégration de ffmpeg avec php,
http://sourceforge.net/projects/ffmpeg-php/ est ton amie...
eça
--
P'tit Marcel
pourquoi personne y répond à ma question :'(
<news:1176902941.937001.233930@d57g2000hsg.googlegroups.com>
je crée ensuite un script php dans une page web avec les mêmes élements : <?php $cmd_encodage = "/usr/bin/ffmpeg - /usr/local/movies/test.mov -acodec mp3 -ab 48 -f flv -s 640x480 -ar 22050 -aspect 4:3 -pass 1 -b 360 -r 25 -y /usr/local/movies/test.flv &"; echo passthru($cmd_encodage,$error); echo "val retournée ".$error;
Après exécution de ce script, la valeur retournée $error est 0. Un fichier destination test.flv est créé dans le répertoire /usr/local/movies, mais il est vide ( 0 octet ) ! Aucun process concernant ffmpeg ne tourne sur le serveur après avoir lancé la commande. Pourtant, le délai nécessaire à l'encodage pourrait me laisser le temps de l'apercevoir dans un ps -ef. Je précise que les droits sur le répertoire /usr/local/movies ont été fixés à 777 pour les besoins du test.
Si tu veux lancer le traitement en background, je crois que la ligne devrait terminer par: > /dev/null 2>&1 & personnellement, j'utilise plutôt exec ou system et réserve passthru aux programmes qui renvoient des flots binaires au navigateur. Au passage le echo avant le passthru ne sert à rien.
est-ce que l'utilisateur nobody a accès à usr/bin ?
Bien évidemment, je préférerais démarrer l'encodage depuis la page web, plutôt que le faire en ligne de commande :)
peut être fallait-il commencer par cela au lieu de te prendre la tête ?
pour l'intégration de ffmpeg avec php, http://sourceforge.net/projects/ffmpeg-php/ est ton amie...
eça -- P'tit Marcel pourquoi personne y répond à ma question :'( <news: