begin process at 2012 02 11 02:22:40
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Fichier / Disque

 > ENCODAGE ET TRAITEMENT DE AUTOMATIQUE DE VIDÉOS EN UPLOAD

ENCODAGE ET TRAITEMENT DE AUTOMATIQUE DE VIDÉOS EN UPLOAD


 Information sur la source

Note :
8,4 / 10 - par 10 personnes
8,40 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Fichier / Disque Niveau :Initié Date de création :11/04/2005 Date de mise à jour :14/04/2005 15:33:47 Vu / téléchargé :26 976 / 3 071

Auteur : Yaug

Ecrire un message privé
Site perso
Commentaire sur cette source (34)
Ajouter un commentaire et/ou une note

 Description

Bon, voici mon premier code ...


Voila, je viens de développer cette source qui peut etre utile pour l'upload de vidéo.
Grace à un formulaire, on upload une vidéo dans n'importe quel format (j'ai limité à 7-8 formats dans mon cas), on la redimensionne à la taille souhaitée (pour moi 350x250) , on la coupe au moment voulu (40 secondes dans mon exemple), et plus important, on la ressort dans n'importe quel format. Ce code, utilise le logiciel ffmpeg librement accessible.

Dans mon exemple je travail pour un réencodage en flv mais il y a de tres nombreuses autres finalité, je vous invite a consulter le manuel de ffmpeg pour vous en rendre compte par vous même.

Liste des formats supportés  et le manuel de ffmpeg : http://ffmpeg.sourceforge.net/ffmpeg-doc.html#SEC1 9

pour toute question ou suggestion : yaug_worm@hotmail.com

Merci

Source

  • <?php
  • //===================================
  • //on fixe les variables de php.ini :
  • //===================================
  • $res_ini = @ini_set ("MAX_INPUT_TIME", 1200);
  • @set_time_limit (1200);
  • //===================================
  • //obtention de l'extension
  • //===================================
  • function getextension($fichier) {
  • $bouts = explode(".", $fichier);
  • $extension = array_pop($bouts);
  • $extension = strtoupper ($extension);
  • return $extension;
  • }//getextension ()
  • //==================================================
  • //supression de l'extension dans le nom d'un fichier
  • //==================================================
  • function supprextension ($fichier) {
  • $fichier= substr ( $fichier, 0, strrpos($fichier, "."));
  • return $fichier;
  • }//supprextension ()
  • //=====================================
  • //initialisation des vars et tableaux
  • //=====================================
  • $traitable = false;
  • $is_ext_ok = false;
  • $path_ffmpeg = "ffmpeg/ffmpeg";
  • $ext_admise = array ("MOV", "AVI", "MWV", "DV", "MPG", "MPEG", "FLV", "DIVX");
  • $taille = false;
  • for ($i=0; $i<3; $i++)
  • {
  • echo "<br>$i<br>";
  • $fichier = "fichier".($i+1);
  • $source = $_FILES[$fichier]["tmp_name"];
  • $nom_fic = $_FILES[$fichier]["name"];
  • $size = $_FILES[$fichier]["size"];
  • $destination = "./tmp2/".$nom_fic; //dossier destination
  • $nom_final = supprextension ($nom_fic);
  • if ($size < 25000000)
  • {
  • echo "<br>taille : $taille<br>size : $size<br>";
  • $taille = true;
  • }//if ()
  • //sortie des qu'il n'y a plus de fichier dans la file d'attente.
  • if (!file_exists($source))
  • {
  • echo "<br>sortie<br>";
  • continue;
  • }//if ()
  • //=================================
  • //initialisation des fichiers logs
  • //=================================
  • $nomlogerror = "./log/logerror".$nom_final.".txt";
  • $nomlogconnect ="./log/logconnect".$nom_final.".txt";
  • $logerrorpt = @fopen ($nomlogerror, "at");
  • $logconnectpt = @fopen ($nomlogconnect, "at");
  • if (is_writable($nomlogerror))
  • {
  • if (!$logerrorpt)
  • {
  • echo "<br>impossible d'ouvrir le fichier logerror<br>";
  • exit ;
  • }//if ()
  • else
  • {
  • $res_write = fwrite ($logerrorpt, "erreurs apparues lors de l'upload et du traitement :\r\n" );
  • }//else
  • }//if
  • else
  • {
  • echo "<br>fichier non accessible<br>";
  • }//else
  • if (is_writable($nomlogconnect))
  • {
  • if (!$logconnectpt)
  • {
  • $res_write = fwrite ($logerrorpt, "Impossible d'ouvrir $nomlogconnect\r\n");
  • exit;
  • }//if
  • else
  • {
  • if (!$res_write = fwrite ($logconnectpt, "compte rendu de l'upload et du traitement de la vidéo\r\n\r\n"))
  • {
  • $res_write = fwrite ($logerrorpt, "\r\nImpossible d'ecrire dans $nomlogconnect\r\n");
  • }//if ()
  • }//else
  • }
  • else
  • {
  • $res_write = fwrite ($logerrorpt, "fichier $nomlogconnect non accessible\r\n");
  • }//else
  • //=========================================
  • //vérification de l'existence de la vidéo
  • //=========================================
  • if (file_exists ("./film_flv/".$nom_final.".flv"))
  • {
  • $res_write = fwrite ($logerrorpt, "\r\nla vidéo $nom_fic a déjà été uploadée et traitée, arret de l'upload\r\n");
  • $res_write = fwrite ($logconnectpt, "\r\nla vidéo $nom_fic a déjà été uploadée et traitée, arret de l'upload\r\n");
  • continue;
  • }//if ()
  • //==================
  • //test de la vidéo
  • //==================
  • $extension = getextension ($nom_fic);
  • echo "<br>extension: $extension<br>";
  • $res_write = fwrite ($logconnectpt, "dossier source : $source \r\n ");
  • $res_write = fwrite ($logconnectpt, "nom du fichier : $nom_fic\r\n");
  • $res_write = fwrite ($logconnectpt, "nom du fichier destination : $destination\r\n");
  • $res_write = fwrite ($logconnectpt, "extension : $extension \r\n");
  • $res_write = fwrite ($logconnectpt, "taille : $size\r\n");
  • if (!in_array ($extension, $ext_admise))
  • {
  • echo "<br>Attention, le fichier que vous venez de sélectionner n'est pas une vidéo au format valide.<br>";
  • echo "Les formats utilisables sont : AVI, MPEG, DIVX, MOV, FLV, DV, WMV merci de compresser votre vidéo au format voulu.<br>";
  • $res_write = fwrite ($logerrorpt, "\r\nformat vidéo non adapté, extension de la vidéo : $extension, upload arrété \r\n");
  • }//if ()
  • else
  • {
  • $res_write = fwrite ($logconnectpt, "\r\nextension de la vidéo ok, poursuite de l'upload \r\n");
  • if (/*$size> 26214400*/!$taille)
  • {
  • echo "<br>Impossible de charger $nom_fic, cette vidéo fait plus de 25Mo, merci de réduire la taille de votre vidéo<br>" ;
  • $res_write = fwrite ($logerrorpt, "\r\nla taille de la vidéo $nom_fic est de $size et supérieure à 25Mo, arret de l'upload\r\n");
  • continue;
  • }//if ()
  • else
  • {
  • $res_write = fwrite ($logconnectpt, "\r\ntaille de la vidéo ok, poursuite de l'upload \r\n");
  • $is_ext_ok = true;
  • }//else
  • }//else
  • //==================
  • //Début de l'upload
  • //==================
  • if ($is_ext_ok)
  • {
  • $res_write = fwrite ($logconnectpt, "\r\ndebut de l'upload de la vidéo \r\n");
  • $result = move_uploaded_file( $source, $destination);
  • $res_write = fwrite ($logconnectpt, "\r\nresultat de move_upload_file = $result\r\n");
  • $erreur = $_FILES[$fichier]['error'];
  • echo "<br>erreur : $erreur<br>";
  • if (!$result)
  • {
  • $res_write = fwrite ($logerrorpt, "erreur lors de l'upload : ");
  • switch ($erreur)
  • {
  • case 1: // UPLOAD_ERR_INI_SIZE
  • $res_write = fwrite ($logerrorpt, "UPLOAD_ERR_INI_SIZE\r\n");
  • echo "Attention le fichier dépasse la taille autorisée par le serveur<br>";
  • break;
  • case 2: //UPLOAD_ERR_FORM_SIZE
  • $res_write = fwrite ($logerrorpt, "UPLOAD_ERR_FORM_SIZE\r\n");
  • echo "Attention le fichier dépasse la taille autorisée par le formulaire<br>";
  • break;
  • case 3: //UPLOAD_ERR_PARTIAL
  • $res_write = fwrite ($logerrorpt, "UPLOAD_ERR_PARTIAL\r\n");
  • echo "Attention, l'upload du fichier a été interrompu<br>";
  • break;
  • case 4: // UPLOAD_ERR_NO_FILE
  • $res_write = fwrite ($logerrorpt, "UPLOAD_ERR_NO_FILE\r\n");
  • echo "Attention, le fichier envoyé à une taille nulle<br>";
  • break;
  • }//switch ()
  • $res_write = fwrite ($logconnectpt, "\r\nune erreur est survenue lors de l'upload de $nom_fic, consultez le log erreur\r\n");
  • continue;
  • }
  • else
  • {
  • $traitable = true;
  • $res_write = fwrite ($logconnectpt, "\r\nfichier uploadé, début du traitement de la vidéo\r\n");
  • }
  • }//if ()
  • //===================================
  • //Phase de traitement de la vidéo
  • //===================================
  • if ($traitable&&$is_ext_ok)
  • {
  • $res_write = fwrite ($logconnectpt, "\r\ndebut du traitement de la vidéo\r\n");
  • $mod=chmod ($destination, 0770);
  • //vérification, si le son doit être inclu
  • if ($_POST['son1'] == 1)
  • {
  • $res_write = fwrite ($logconnectpt, "\r\nson sélectionné\r\n");
  • $commande = "$path_ffmpeg -y -i $destination -t 00:00:40 -vcodec flv -s 350x250 -acodec mp3 ./film_flv/".$nom_final.".flv";
  • }
  • else
  • {
  • $res_write = fwrite ($logconnectpt, "son non sélectionné\r\n");
  • $commande = "./ffmpeg/ffmpeg -y -i $destination -t 00:00:40 -f flv -an -vcodec flv -s 350x250 ./film_flv/".$nom_final.".flv";
  • }//else
  • $res = system ($commande, $res_var);
  • $res_write = fwrite ($logconnectpt, "\r\ncommande à executer : $commande \r\n\r\n");
  • if ($res_var == 0)
  • {
  • $res_write = fwrite ($logconnectpt, "\r\nla vidéo $nom_fic a bien été traitée\r\ndébut de la suppression de la vidéo uploadée\r\n");
  • $bool = unlink ($destination);
  • if ($bool)
  • {
  • $res_write = fwrite ($logconnectpt, "\r\n$destination supprimée avec succés\r\n");
  • }//if ()
  • else
  • {
  • $res_write = fwrite ($logerrorpt, "\r\n$destination non supprimée\r\n");
  • }//else
  • }//if ()
  • else
  • {
  • $res_write = fwrite ($logerrorpt, "\r\nerreur lors de l'encodage... vidéo $destination non supprimée\r\n");
  • exit;
  • }//else
  • $bool = unlink($nomlogerror);
  • if ($bool)
  • {
  • $res_write = fwrite ($logconnectpt, "\r\nle fichier $nomlogerror a été supprimé avec succès\r\n");
  • }//if ()
  • }//if ()
  • }//for
  • ?>
<?php

//===================================
//on fixe les variables de php.ini :
//===================================
$res_ini = @ini_set ("MAX_INPUT_TIME", 1200);
@set_time_limit (1200);


//===================================
//obtention de l'extension
//===================================
function getextension($fichier) {
         $bouts = explode(".", $fichier);
         $extension = array_pop($bouts);
         $extension = strtoupper ($extension);
         return $extension;
}//getextension ()

//==================================================
//supression de l'extension dans le nom d'un fichier
//==================================================
function supprextension ($fichier) {
         $fichier= substr ( $fichier, 0, strrpos($fichier, "."));
         return $fichier;
}//supprextension ()

//=====================================
//initialisation des vars et tableaux
//=====================================
$traitable = false;
$is_ext_ok = false;
$path_ffmpeg = "ffmpeg/ffmpeg";
$ext_admise = array ("MOV", "AVI", "MWV", "DV", "MPG", "MPEG", "FLV", "DIVX");
$taille = false;

for ($i=0; $i<3; $i++)
{
  echo "<br>$i<br>";
    $fichier = "fichier".($i+1);
    $source = $_FILES[$fichier]["tmp_name"];
    $nom_fic = $_FILES[$fichier]["name"];
    $size = $_FILES[$fichier]["size"];
    $destination = "./tmp2/".$nom_fic;  //dossier destination
    $nom_final = supprextension ($nom_fic);
    
    if ($size < 25000000)
    {
       echo "<br>taille : $taille<br>size : $size<br>";
       $taille = true;
    }//if ()

    //sortie des qu'il n'y a plus de fichier dans la file d'attente.
    if (!file_exists($source))
    {
       echo "<br>sortie<br>";
       continue;
    }//if ()


//=================================
//initialisation des fichiers logs
//=================================
$nomlogerror = "./log/logerror".$nom_final.".txt";
$nomlogconnect ="./log/logconnect".$nom_final.".txt";
$logerrorpt = @fopen ($nomlogerror, "at");
$logconnectpt = @fopen  ($nomlogconnect, "at");

if (is_writable($nomlogerror))
{
  if (!$logerrorpt)
  {
    echo "<br>impossible d'ouvrir le fichier logerror<br>";
    exit ;
  }//if ()
  else
  {
   $res_write = fwrite ($logerrorpt, "erreurs apparues lors de l'upload et du traitement :\r\n" );
  }//else
}//if
else
{

  echo "<br>fichier non accessible<br>";
}//else
if (is_writable($nomlogconnect))
{
  if (!$logconnectpt)
  {
    $res_write = fwrite ($logerrorpt, "Impossible d'ouvrir $nomlogconnect\r\n");
    exit;
  }//if
  else
  {
    if (!$res_write = fwrite ($logconnectpt, "compte rendu de l'upload et du traitement de la vidéo\r\n\r\n"))
    {
      $res_write = fwrite ($logerrorpt, "\r\nImpossible d'ecrire dans $nomlogconnect\r\n");
    }//if ()

  }//else
}
else
{
  $res_write = fwrite ($logerrorpt, "fichier $nomlogconnect non accessible\r\n");
}//else

//=========================================
//vérification de l'existence de la vidéo
//=========================================
  if (file_exists ("./film_flv/".$nom_final.".flv"))
  {
    $res_write = fwrite ($logerrorpt, "\r\nla vidéo $nom_fic a déjà été uploadée et traitée, arret de l'upload\r\n");
    $res_write = fwrite ($logconnectpt, "\r\nla vidéo $nom_fic a déjà été uploadée et traitée, arret de l'upload\r\n");
    continue;
  }//if ()



//==================
//test de la vidéo
//==================

$extension = getextension ($nom_fic);
echo "<br>extension: $extension<br>";
$res_write = fwrite ($logconnectpt, "dossier source : $source \r\n ");
$res_write = fwrite ($logconnectpt, "nom du fichier : $nom_fic\r\n");
$res_write = fwrite ($logconnectpt, "nom du fichier destination : $destination\r\n");
$res_write = fwrite ($logconnectpt, "extension : $extension \r\n");
$res_write = fwrite ($logconnectpt, "taille : $size\r\n");


if (!in_array ($extension, $ext_admise))
{
   echo "<br>Attention, le fichier que vous venez de sélectionner n'est pas une vidéo au format valide.<br>";
   echo "Les formats utilisables sont : AVI, MPEG, DIVX, MOV, FLV, DV, WMV merci de compresser votre vidéo au format voulu.<br>";
   $res_write = fwrite ($logerrorpt, "\r\nformat vidéo non adapté, extension de la vidéo : $extension, upload arrété \r\n");
}//if ()
else
{
    $res_write = fwrite ($logconnectpt, "\r\nextension de la vidéo ok, poursuite de l'upload \r\n");
    if (/*$size> 26214400*/!$taille)
    {
       echo "<br>Impossible de charger $nom_fic, cette vidéo fait plus de 25Mo, merci de réduire la taille de votre vidéo<br>" ;
       $res_write = fwrite ($logerrorpt, "\r\nla taille de la vidéo $nom_fic est de $size et supérieure à 25Mo, arret de l'upload\r\n");
       continue;
    }//if ()
    else
    {
        $res_write = fwrite ($logconnectpt, "\r\ntaille de la vidéo ok, poursuite de l'upload \r\n");
        $is_ext_ok = true;
    }//else
}//else


//==================
//Début de l'upload
//==================
if ($is_ext_ok)
{
   $res_write = fwrite ($logconnectpt, "\r\ndebut de l'upload de la vidéo \r\n");
   $result = move_uploaded_file( $source, $destination);
   $res_write = fwrite ($logconnectpt, "\r\nresultat de move_upload_file = $result\r\n");

    $erreur = $_FILES[$fichier]['error'];
    echo "<br>erreur : $erreur<br>";
   if (!$result)
   {
      $res_write = fwrite ($logerrorpt, "erreur lors de l'upload : ");
      switch ($erreur)
      {
          case 1: // UPLOAD_ERR_INI_SIZE
               $res_write = fwrite ($logerrorpt, "UPLOAD_ERR_INI_SIZE\r\n");
               echo "Attention le fichier dépasse la taille autorisée par le serveur<br>";
               break;
          case 2: //UPLOAD_ERR_FORM_SIZE
               $res_write = fwrite ($logerrorpt, "UPLOAD_ERR_FORM_SIZE\r\n");
               echo "Attention le fichier dépasse la taille autorisée par le formulaire<br>";
               break;
          case 3: //UPLOAD_ERR_PARTIAL
               $res_write = fwrite ($logerrorpt, "UPLOAD_ERR_PARTIAL\r\n");
               echo "Attention, l'upload du fichier a été interrompu<br>";
               break;
          case 4: // UPLOAD_ERR_NO_FILE
               $res_write = fwrite ($logerrorpt, "UPLOAD_ERR_NO_FILE\r\n");
               echo "Attention, le fichier envoyé à une taille nulle<br>";
               break;
      }//switch ()
      $res_write = fwrite ($logconnectpt, "\r\nune erreur est survenue lors de l'upload de $nom_fic, consultez le log erreur\r\n");
      continue;
   }
   else
   {
       $traitable = true;
       $res_write = fwrite ($logconnectpt, "\r\nfichier uploadé, début du traitement de la vidéo\r\n");
   }
}//if ()

//===================================
//Phase de traitement de la vidéo
//===================================
if ($traitable&&$is_ext_ok)
{
   $res_write = fwrite ($logconnectpt, "\r\ndebut du traitement de la vidéo\r\n");
   $mod=chmod ($destination, 0770);

   //vérification, si le son doit être inclu
   if ($_POST['son1'] == 1)
   {
      $res_write = fwrite ($logconnectpt, "\r\nson sélectionné\r\n");
      $commande = "$path_ffmpeg -y -i $destination -t 00:00:40 -vcodec flv -s 350x250 -acodec mp3 ./film_flv/".$nom_final.".flv";
   }
   else
   {
       $res_write = fwrite ($logconnectpt, "son non sélectionné\r\n");
       $commande = "./ffmpeg/ffmpeg -y -i $destination -t 00:00:40 -f flv -an -vcodec flv -s 350x250 ./film_flv/".$nom_final.".flv";
   }//else

   $res = system ($commande, $res_var);
   $res_write = fwrite ($logconnectpt, "\r\ncommande à executer : $commande \r\n\r\n");

   if ($res_var == 0)
   {
      $res_write = fwrite ($logconnectpt, "\r\nla vidéo $nom_fic a bien été traitée\r\ndébut de la suppression de la vidéo uploadée\r\n");
      $bool = unlink ($destination);
      if ($bool)
      {
         $res_write = fwrite ($logconnectpt, "\r\n$destination supprimée avec succés\r\n");
      }//if ()
      else
      {
          $res_write = fwrite ($logerrorpt, "\r\n$destination non supprimée\r\n");
      }//else
   }//if ()
   else
   {
       $res_write = fwrite ($logerrorpt, "\r\nerreur lors de l'encodage... vidéo $destination non supprimée\r\n");
       exit;
   }//else

   $bool = unlink($nomlogerror);
   if ($bool)
   {
      $res_write = fwrite ($logconnectpt, "\r\nle fichier $nomlogerror a été supprimé avec succès\r\n");
   }//if ()
}//if ()

}//for

?>

 Conclusion

bon voila, une ptite mise a jour, le code est mieux structuré et j'ai ajouté la gestion des journaux de connections et d'erreur pour une application serveur (ce qui sera le cas au final.

EDIT :

J'ai rajouté dans le zip le code (refait), plus les 2 formulaires.
La nouvelle version du code permet l'envoi de plusieurs vidéos a la fois... enfin c'est seulement une fonctionnalité donc j'avais besoin...

Dans mon cas, il me reste malheureusement un unique problème, il est apparement impossible d'avoir du son dans le flv final lorsque la vidéo uploadée est au format mpg...
je vais peut etre trouver une solution (après des heures de bidouillages en tout genre) mais ca risque d'allourdir un peu le code et le temps de traitement.. m'enfin au moins il sera complet comme ca ..

voila merci

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

13 avril 2005 17:18:44 :
optimisation, ajout fonctionnalité
14 avril 2005 15:22:46 :
ajout du zip envoi multiple de vidéos
14 avril 2005 15:33:47 :

 Sources du même auteur

CLASSE FFMPEG DE GESTION DE VIDÉOS
CLASSE DE REDIMENSION D'IMAGE.

 Sources de la même categorie

UPLOADER DES FICHIER DANSUN DOSSIER, SÉCURISÉ AVEC MOT DE PA... par raizzo
COMPTEUR DE VISITES SUR FICHIER par pierreSabatier
FONCTION RECURSIVE DE DOSSIERS par tefa24600
Source avec Zip CONVERSION DES UNITÉS INFORMATIQUE (O, KIO, MIO, GIO, TIO...... par genetApt151
TROUVER LES DOUBLONS DANS UNE LISTE DE FICHIERS par soobook

Commentaires et avis

Commentaire de Yaug le 11/04/2005 14:28:46

voila, ma premiere ptite source, j'ai passé pas mal de temps dessus vu mon petit niveau en php, et vu le temps necessaire a lire la doc de mplayer ... mais bon, ca n'en reste pas moins une source utile à mon avis.
Merci

Commentaire de NeoZer0 le 11/04/2005 18:45:38

Premiere fois que je vois ce genre de code pas mal très bonne idée j'ai pas testé mais original. Bravo

Commentaire de Anthomicro le 11/04/2005 19:53:17

Salut ;-)

vu que ini_set() et set_time_limit() sont deux fonctions qui sont la plupart du temps désactivées sur les hébergements mutualisés, autant rajouter un @ devant les fonctions ou implémenter une gestion d'erreur plus poussée ;-)

a ++

Commentaire de Yaug le 12/04/2005 08:54:57

ok, merci anthomicro, je vais tenter d'y penser et d'appliquer ca assez vite

Commentaire de vvince le 12/04/2005 15:59:21

Sachant que mplayer est un soft windows, est-ce que ton code peut etre porté sous linux ?

(je n'ai pas testé, je pose la question un peu en l'air en fait)

A+

Commentaire de Yaug le 12/04/2005 16:02:41

c'est pour un serveur linux :P
et mencoder et spéciale pour linux ^^

quoi qu'il en soit, je suis en train de l'améliorer, y'aura plus besoin de "mencoder" mais seulement de "ffmpeg".

Mais pour le moment, je doit résoudre un dernier probleme car je n'arrive pas a avoir le son sur le flv lorsque l'on a du mpg en entré

Commentaire de fuckya le 12/04/2005 16:48:00

antho > Si ini_set et set time limit sont désactivées, alors system le sera aussi, donc pour les @ ca servira a rien ici, meme que ca sera plutot utile : on pourra voir que notre hébergeur n'accepte pas ce script. ;)

Commentaire de Anthomicro le 12/04/2005 18:25:37

"ini_set et set time limit sont désactivées, alors system le sera aussi"

dans la plupart des cas oui, mais pas forcément. Tu peux très bien activer system() et désactiver ini_set() :-)

Commentaire de Yaug le 13/04/2005 17:30:28

bon, je viens de faire une mise a jour, j'ai optimisé le tout (enfin j'espére :D) j'ai ajouté le traitement de log, et plus important j'ai rétrécie le temps de traitement d'1 tier en limitant à l'utilisation d'un seul logiciel...
si vous avez des questions, des commentaires...
merci

Commentaire de Yaug le 14/04/2005 15:23:52

voila, zip ajouté avec les formulaires (t'aurais pu le faire toi même, si moi je le fais c'est vraiment a la porté de tous ^^)
tu veux l'adresse de l'installeur de ffmpeg aussi? :D

Commentaire de ophidte le 16/12/2005 21:18:40

Bon j'y connais pas grand chose en code mais ton idée est exactement ce que je cherche .
Par contre je tourne avec GALLERY2 (www.gallery.menalto.com) et je voulais savoir si je pouvais integrer ton script ( uniquement la partie de conversion ) car l'upload est gerer par Gallery .

Pense tu que ce soit possible ?

Commentaire de killer27 le 04/01/2006 02:18:03

Salut,

Merci pour ce script, as-tu finalement réussi à résoudre le souci de son ?

Paul

Commentaire de Yaug le 08/01/2006 13:17:36

hum non... le probleme ne vient apparement pas de moi mais d'un soucis avec la norme FFMPEG pour le FLV. Donc j'ai du enlever le son pour le moment. Je pense que je m'y collerai plus tard

Ophidte : en bidouillant tu peux effectivement t'en servir

Commentaire de tatcrew le 12/06/2006 20:21:26

Bonjour donc si j'ai bien compri il faut ffmpeg sur son ftp, dans le dossier ffmpeg, pour pouvoir encoder les vidéos ?

Commentaire de Yaug le 14/06/2006 18:46:20

voila.
Aussi simple que cela.
Enfin. sur son serveur, une personne me l'a demandé cette semaine, il faut installer ffmpeg :)

Commentaire de PtitKev le 07/07/2006 17:15:34

Slt Yaug.

Nickel ton script. J'ai pas encore test mais ca correspond tt à fait a ce que je veux. Par contre, sais tu si ffmpeg peu ajouter une image sur tt le long de la video (logo), une video ou photo d'intro.

@+

Commentaire de pierrero le 09/11/2006 23:09:06

Salut Yaug !

A priori ton pb de piste audio est dû à ffmpeg.
La plupart des distrib fournissent un package ffmpeg compilé sans les librairies lame (mp3). Il faut donc installer les librairies dont tu as besoin et recompiler ffmpeg à partir de la source cvs en activant les options dont tu as besoin.
Personnellement j'ai dû retoucher quelques lignes des sources C pour désactiver complètement le codec video x264 qui me générait des erreurs.
Mon binaire fonctionne très bien désormais et ton code a été une bonne base pour démarrer.

Merci et bonne continuation :)

Commentaire de Yaug le 05/12/2006 09:05:57

hum.
Content de voir que mon probleme a désormais une solution.
Du trifouillage certe mais une solution.
Ravi de voir que ca vous a aidé.

Commentaire de boissonnfive le 05/12/2006 19:55:57

Bonjour Yaug,
Tu n'es pas obligé de recompiler. Si tu travailles sous windows, tu trouveras ici l'exécutable avec le lameMP3:
http://esby.free.fr/CelticDruid/mirror/ffmpeg/
build du 24-Nov-2006 07:54  2.3M


D:\Video\ffmpeg\ffmpeg.rev7165>ffmpeg -i PowerPoint.avi
FFmpeg version SVN-r7165, Copyright (c) 2000-2006 Fabrice Bellard, et al.
  configuration:  --enable-mp3lame --enable-libnut --enable-libogg --enable-vorb
is --enable-faad --enable-faac --enable-libgsm --enable-xvid --enable-x264 --ena
ble-mingw32 --enable-a52 --enable-dts --enable-pp --enable-amr_nb --enable-amr_w
b --enable-swscaler --enable-avisynth --enable-gpl --enable-memalign-hack --cpu=
i686 --extra-ldflags=-static
  libavutil version: 49.1.0
  libavcodec version: 51.25.0
  libavformat version: 51.6.0
  built on Nov 24 2006 18:53:03, gcc: 4.0.3
Input #0, avi, from 'PowerPoint.avi':
  Duration: 00:01:36.5, start: 0.000000, bitrate: 1539 kb/s
  Stream #0.0: Video: IV50 / 0x30355649, 1600x1172, 15.00 fps(r)
Must supply at least one output file

Voilà. Si ça peut aider...
A+.

Commentaire de ramey1 le 06/12/2006 22:47:41

bonjour
super ta source
je cherchais ca depuis un bon moment
une question
je voudrais le tester en local avec easyphp
peut ton installer ffmpeg sur easyphp
merci

Commentaire de PtitKev le 07/12/2006 09:05:52

Ramey1, comme tu peux le constater, il génère une variable $commande puis en suite il fait :

$res = system ($commande, $res_var);

car ffmpeg n'est pas un module pour apache ou php. c'est juste une application.

Et boissonnfive le dis juste au dessus : il existe une version windows donc il te suffit de la télécharger et utiliser son dossier dans la commande en remplaçant:

$path_ffmpeg = "ffmpeg/ffmpeg";

par

$path_ffmpeg = "c:\\dossier\\ffmpeg.exe";

En esperant avoir été assez clair :P

Commentaire de cel2006 le 10/12/2006 23:27:08

Bonjour,

Ce code est vraiment ce que je recherche. Le problème est que je l'ai testé sous mac, que ça ne marche pas avec easy PHP et donc je l'ai testé sur mon serveur ovh, ca ne marche pas non plus... comment puis-je faire??
Merci par avance pour votre aide!

Bonne soirée

Commentaire de Rhobby le 11/12/2006 19:17:57

Bonjour,
Merci beaucoup pour ce code car j'ai lontemps chercher ce fameux code sur le net mais rien, puis je suis tombé ici...
seulement, je ne sais pas si quelqu'un a eu cette erreur mais moi sur machine locale (easyphp) je n'arrive pas à trouver pourquoi :

0
Notice: Undefined index: fichier1 in c:\program files\easyphp1-8\www\test_ffmpeg\test_upload.php on line 41
Notice: Undefined index: fichier1 in c:\program files\easyphp1-8\www\test_ffmpeg\test_upload.php on line 42
Notice: Undefined index: fichier1 in c:\program files\easyphp1-8\www\test_ffmpeg\test_upload.php on line 43
taille :
size :
sortie

1
Notice: Undefined index: fichier2 in c:\program files\easyphp1-8\www\test_ffmpeg\test_upload.php on line 41
Notice: Undefined index: fichier2 in c:\program files\easyphp1-8\www\test_ffmpeg\test_upload.php on line 42
Notice: Undefined index: fichier2 in c:\program files\easyphp1-8\www\test_ffmpeg\test_upload.php on line 43
taille : 1
size :
sortie

2
Notice: Undefined index: fichier3 in c:\program files\easyphp1-8\www\test_ffmpeg\test_upload.php on line 41
Notice: Undefined index: fichier3 in c:\program files\easyphp1-8\www\test_ffmpeg\test_upload.php on line 42
Notice: Undefined index: fichier3 in c:\program files\easyphp1-8\www\test_ffmpeg\test_upload.php on line 43
taille : 1
size :
sortie

C'est sur la 1re boucle :
...
for ($i=0; $i<3; $i++)
{
  echo "<br>$i<br>";
    $fichier = "fichier".($i+1);
    $source = $_FILES[$fichier]["tmp_name"];
    $nom_fic = $_FILES[$fichier]["name"];
    $size = $_FILES[$fichier]["size"];
...

et pourtant dans le formulaire .htm c'est bien
<input type="file" name="fichier1" />

Si qq'un pourrait m'aider ?
Merci beaucoup

Commentaire de cel2006 le 12/12/2006 21:55:24

Ca ne marche toujours pas pour ma part... quelqu'un aurait la gentillesse de m'expliquer pas à pas?... Merci beaucoup par avance!

Céline

Commentaire de Rhobby le 13/12/2006 08:19:19

Pour moi, j'ai trouvé la cause des erreurs...seulement les fichiers que j'utilise sont >8M (qui est une limite que j'ai pas encore trouvée où la regler!!!) j'ai essayé dans php.ini mais ça reste encore bloqué à 8M...
Puis ffmpeg que boissonnfive a préconisé marche trop bien en commande DOS mais avec un code php c'est toujours "ffmpeg n'est pas une application interne valable...etc" et le code sort avec les fichiers log où tout est bien marqué...
Alors si qqu'un a bien pu le faire marcher, je le remercie beaucoup d'avance de bien vouloir nous expliquer comment faire ?
Merci encore

Commentaire de totolero le 02/01/2007 05:01:53

bonjour à tous et bravo pour l'initiative de ce code. Je ne suis pas développeur, et j'ai essayé de suivre pas à pas votre fil de discussion, et pour 'linstant, j'ai tenté d'installer le script sur un easyphp moi aussi. Pour ma part, et malgré les modification apportées et le téléchargement d'une version de ffmpeg pour windows, j'ai toujours les mêmes erreurs :

Warning: fwrite(): supplied argument is not a valid File-Handle resource in e:\lesyeux\upload\test_upload.php on line 104

extension: AVI

Warning: fwrite(): supplied argument is not a valid File-Handle resource in e:\lesyeux\upload\test_upload.php on line 125

etc...
Si quelqu'un avait une piste, je suis preneur.

A bientôt

Commentaire de ffwrude le 06/02/2007 12:12:45

Petit erratum un peu bête mais on ne sais jamais ^^

Ligne 34 : $ext_admise = array ("MOV", "AVI", "MWV", "DV", "MPG", "MPEG", "FLV", "DIVX");

ca serait mieu avec WMV à la place de MWV ^^

Ligne 34 : $ext_admise = array ("MOV", "AVI", "WMV", "DV", "MPG", "MPEG", "FLV", "DIVX");

Commentaire de Yaug le 19/02/2007 10:30:13

totolero,
pour ton probleme, jarte les ligne correspondantes.
Il ne s'agit que des logs (enfin ce qui y ressemble de pret ou de loin).

FFWRUDE, merci pour l'erratum.
Ca fait 2 ans que j'ai pas touché à cette source, mais jvais la mettre a jour sous peu.

Commentaire de salut tlm le 23/03/2007 08:50:45

Hello,
Je vien de télécharger le programme, le concept à l'air super bon, mais j'aimerais bien savoir ou télécharger ffmpeg.

Merci par avance

Commentaire de Yaug le 03/01/2008 21:56:13

Je viens de créer une classe beaucoup plus pratique que cette source datant de mes début.
Pour la voir c'est ici : http://www.phpcs.com/codes/CLASSE-FFMPEG-GESTION-VIDEOS_45279.aspx

Commentaire de Sniark le 01/02/2008 00:22:48

Bonjour,

J'essais d'installer FFMPEG depuis plus d'une semaine... J'ai cherché partout sur google, et rien de ce que j'ai trouvé n'a fonctionné. J'ai un server/passerelle avec SME SERVER qui tourne.
Je suis débutant et je comprends pas encore tout.
L'idée, si j'ai bien compris c'est de copier la library dans un dossier sur le server ? Mais lequel ? Et j'ai trouvé plusieurs versions de FFMPEG laquelle est ce que je dois utiliser ? J'ai trouvé plein de lignes de commande sur le net, mais rien n'a fonctionner... Quelqu'un peut m'aider ?

Merci à tous !

Commentaire de samy79 le 14/02/2010 21:43:34

Salut, tout d'abord superbe travail! Et merci beaucoup pour le partage !
Je lis dans le formulaire que la vidéo ne doit pas faire plus de 2 minutes...peut-on augmenter cette limite ? Je ne trouve pas ce paramètre dans ton code...ça viens de FFMPEG ?

Merci

Commentaire de Sishare le 20/07/2010 10:38:27

Salut tous le monde,
Merci pour ce taf car il n'existe pas beaucoups d'exemple d'utilisation de ffmpeg et de php
bon ba comme tout le monde je galère!
bon alors pour les erreurs "Notice: Undefined index: fichier1" vous avez mal lancer votre formulaire (par exemple chargé la page html dans votre navigateur directement et non par votre server) pour moi c'était le cas.
Ensuite j'ai eu aussi "Warning: fwrite(): supplied argument is not a valid" vous devez créez plusieurs dossier à l'endroit du test_upload.php nommé : "log" "tmp2" "film_flv"
Ensuite je suis bloqué, l'execution de la commande system ne fonctionne pas chez moi. Je pense fortement que mon installation de ffmpeg n'est pas complète. c'est pourquoi Yaug il aurait était cool que tu nous mettes un petit descriptif de l'install de ffmpeg.
Pour ma part de ce que j'ai vus sur le net :
Plusieurs versions de ffmpeg :
en open source et l'officiel ce sont les sources non compilées et beaucoups de fichiers incompréhensibles. Impossibles de trouvés un tuto pour compilé sous windows ou cygwin. A précisé qu'aucune dll n'est fournies dans le pack.
Des versions précompilées avec plus ou moin de dll  et un .exe
Certaines personnes parle d'ajouté les codecs au servers, oui je veux bien faut il encore me dire comment? et comment savoir si on ne les possède pas déjà?
Ensuite certains parle d'activer une extension sous php pour utiliser directement ffmpeg comme une classe, cette méthode n'a donné aucuns résultats pour ma part, je n'arrive même pas à charger l'extension.
SI QUELQU'UN CONNAIT UN BON TUTO JE SUIS PRENEUR!

Commentaire de Sishare le 20/07/2010 13:35:12

Re
Bon j'apporte des lumières si elles peuvent être utile.
Donc la commande systeme na l'aire de fonctionné qu'avec des .exe dans le même dossier que se trouve le fichier dans lequel fout executé system. Donc
   Test_upload.php-
       ffmpeg.exe_|
    tmp2(dossier)_|
flv_film(dossier)_|

dans le code il faut donc modifier la variable path_ffmpeg et dans commande mettre "ffmpeg.exe ..." au lieu de "./ffmmpeg/ffmpeg"
Une fois ces étapes faites aucuns problème ne devrait etre trouvée mis à part lors de la supression ou de la réupload de la même vidéo.
Pour cela il faut bien sur faire des controle sur le nom vidéo et modifier en conséquence quand à la supression voire du coté des droits utilisateurs.

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,619 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales