2009-12-08 4 views
0

Je sais que ce n'est pas exactement une question de programmation en soi, mais plutôt une question de paramètres, mais encore:problème avec FFMPEG et PHP

Je suis en train de convertir la vidéo avec FFMPEG avec un script PHP, suivant cette tutoriel:

http://vexxhost.com/blog/2007/05/20/how-to-convertencode-files-to-flv-using-ffmpeg-php/

FFMPEG fonctionne parfaitement et je l'ai utilisé à partir de la ligne de commande un certain nombre de fois. PHP semble également fonctionner correctement. J'ai également installé ffmpeg-php et il semble charger le fichier.

Le problème est quand j'essaie de faire ce qui suit en PHP:

$ SRCFILE = "p1.avi";

$ ffmpegObj = nouveau ffmpeg_movie ($ srcFile);

Peu importe, PHP retournera ceci:

Avertissement: ne peut pas ouvrir p1.avi fichier vidéo dans /var/www/converter.php sur la ligne xx

Évidemment, tout appel que je ferai par la suite avec $ ffmpegObj provoquera une erreur fatale. Je suis absolument coincé et googling étendu n'a pas aidé beaucoup. Si vous devez le savoir, j'utilise Ubuntu 9.04 avec les paquets de serveur LAMP par défaut ainsi que php5-ffmpeg, et j'ai compilé ffmpeg suite à un tutoriel que j'ai trouvé sur Ubuntuforums (je le lierais mais stackoverflow ne me laisse pas)

Merci!

+0

Est-ce que 'file_exists ($ srcFile)' est vrai? – leepowers

+0

Whoa, en réalité, ça revient faux. Comment puis-je resoudre ceci? Merci de me donner un indice :) – ziritrion

+0

Attendez, fausse alarme: file_exists renvoie vrai (après de nombreux tests, le fichier n'était pas là où il était censé être). – ziritrion

Répondre

1

Est-ce que l'utilisateur que vous exécutez le script tout comme l'autorisation d'ouvrir le fichier? Vérifier avec ls -l /var/www/flashvideo/p1.avi

0

Essayez de spécifier le chemin complet pour vous film comme suit:

$srcFile = "/home/path/something/p1.avi"; 
$ffmpegObj = new ffmpeg_movie($srcFile); 
+0

Merci pour la suggestion, mais j'ai déjà essayé autant de combinaisons que je pouvais avant de demander ici. Mon répertoire racine du serveur Web est/var/www. Mon script est /var/www/converter.php. Ma vidéo est sur /var/www/flashvideo/p1.avi. J'ai essayé les chemins suivants: flashvideo/p1.avi /var/www/flashvideo/p1.avi J'ai aussi essayé de déplacer p1.avi dans/var/www et d'essayer avec p1.avi var/www/p1.avi sans chance; _; – ziritrion

+0

Essayez de le déplacer vers '/ tmp/1.avi' et fixez 666 permissions:' chmod 666/tmp/1.avi'. –

1

FINALEMENT! Comme certains d'entre vous l'ont suggéré, ni le répertoire ni le fichier ne possédaient les permissions appropriées pour être modifiés par mon script. Je les ai changés et tout fonctionne maintenant =). Je suis un idiot de ne pas le remarquer pendant des heures: P

Merci les gars!

0

Je sais que c'est un vieux fil de discussion, mais depuis que je viens juste de le faire ... Si ffmpeg_movie est passé un film corrompu, il semble qu'il va aussi lancer un avertissement. Il n'y a aucun moyen de le savoir avant d'essayer de créer l'objet. La meilleure solution que j'avais été de supprimer l'avertissement, puis vérifier la ressource avant d'interagir avec elle:

$movie = @new ffmpeg_movie($path_to_file,false); 
$duration = isset($movie->ffmpeg_movie)?intval($movie->getDuration()):'Bad File?'; 
0

J'ai la même question. Ce n'est ni un mauvais chemin ni un film corrompu lié. Le chemin est absolu, le fichier existe et est lisible et les permissions sont 0777. Malheureusement, je n'ai aucune idée de ce qu'il faut faire avec ça. UPD: Le problème était une version ffmpeg obsolète (de repos) avec beaucoup de bugs.