Recherche avancée

Médias (29)

Mot : - Tags -/Musique

Autres articles (111)

  • Publier sur MédiaSpip

    13 juin 2013

    Puis-je poster des contenus à partir d’une tablette Ipad ?
    Oui, si votre Médiaspip installé est à la version 0.2 ou supérieure. Contacter au besoin l’administrateur de votre MédiaSpip pour le savoir

  • Emballe Médias : Mettre en ligne simplement des documents

    29 octobre 2010, par

    Le plugin emballe médias a été développé principalement pour la distribution mediaSPIP mais est également utilisé dans d’autres projets proches comme géodiversité par exemple. Plugins nécessaires et compatibles
    Pour fonctionner ce plugin nécessite que d’autres plugins soient installés : CFG Saisies SPIP Bonux Diogène swfupload jqueryui
    D’autres plugins peuvent être utilisés en complément afin d’améliorer ses capacités : Ancres douces Légendes photo_infos spipmotion (...)

  • Contribute to documentation

    13 avril 2011

    Documentation is vital to the development of improved technical capabilities.
    MediaSPIP welcomes documentation by users as well as developers - including : critique of existing features and functions articles contributed by developers, administrators, content producers and editors screenshots to illustrate the above translations of existing documentation into other languages
    To contribute, register to the project users’ mailing (...)

Sur d’autres sites (9122)

  • Revision 39129 : Amélioration du formulaire de changement de pagination . Si le nombre ...

    1er juillet 2010, par kent1@… — Log

    Amélioration du formulaire de changement de pagination . Si le nombre total d’élément est inférieur à la limite maximale, on affiche que jusqu’au nombre total d’éléments On n’affiche le formulaire que s’il y a effectivement pagination On ajoute ce formulaire de pagination à droite à (...)

  • Revision 39129 : Amélioration du formulaire de changement de pagination . Si le nombre ...

    1er juillet 2010, par kent1@… — Log

    Amélioration du formulaire de changement de pagination . Si le nombre total d’élément est inférieur à la limite maximale, on affiche que jusqu’au nombre total d’éléments On n’affiche le formulaire que s’il y a effectivement pagination On ajoute ce formulaire de pagination à droite à (...)

  • using ffmpeg as multiple downloads

    26 avril 2013, par user2321982

    well guys, I'm having problems with my application.
    well I'll explain more, I'm using the plugin uploader uploads multiple videos and I'm using the ffmpeg extension to my php version.

    <code class="echappe-js">&lt;script type=&quot;text/javascript&quot;&gt;<br />
    // Convert divs to queue widgets when the DOM is ready<br />
    $(function() {<br />
       $(&quot;#uploader&quot;).pluploadQueue({<br />
           // General settings<br />
           runtimes : &amp;#39;gears,flash,silverlight,browserplus,html5&amp;#39;,<br />
           url : &amp;#39;upload.php?id=&amp;lt;?= $login_usuario; ?&gt;&amp;amp;name=&amp;lt;?= $name_user; ?&gt;&amp;#39;,<br />
           flash_swf_url : &amp;#39;plugins/plupload/plupload.flash.swf&amp;#39;,<br />
           containers: &amp;#39;plupload&amp;#39;,<br />
           multipart: true,<br />
           urlstream_upload: true,<br />
           multipart_params:{directory:&amp;#39;uploads&amp;#39;},<br />
           multi_selection: true,<br />
    <br />
           max_file_size : &amp;#39;500mb&amp;#39;,<br />
           chunk_size : &amp;#39;1mb&amp;#39;,<br />
           unique_names : true,<br />
    <br />
           // Specify what files to browse for<br />
           filters : [<br />
               {title : &quot;Video Files&quot;, extensions : &quot;avi,mpg,wmv,flv,3gp,mpeg,mpeg4,mpg4,mp4&quot;}<br />
           ],<br />
           // Silverlight settings<br />
           silverlight_xap_url : &amp;#39;plugins/plupload/plupload.silverlight.xap&amp;#39;<br />
       });<br />
    <br />
       uploader.ini();<br />
    <br />
    // Client side form validation<br />
           $(&amp;#39;form&amp;#39;).submit(function(e) {<br />
               var uploader = $(&amp;#39;#uploader&amp;#39;).plupload(&amp;#39;getUploader&amp;#39;);<br />
    <br />
               // Files in queue upload them first<br />
               if (uploader.files.length &gt; 0) {<br />
                   // When all files are uploaded submit form<br />
                   uploader.bind(&amp;#39;StateChanged&amp;#39;, function() {<br />
                       if (uploader.files.length === (uploader.total.uploaded + uploader.total.failed)) {<br />
                           $(&amp;#39;form&amp;#39;)[0].submit();<br />
                       }<br />
                   });<br />
    <br />
                   uploader.start();<br />
               } else<br />
                   alert(&amp;#39;You must at least upload one file.&amp;#39;);<br />
    <br />
               return false;<br />
           });<br />
       });<br />
    &lt;/script&gt;

    You browser doesn't have Flash, Silverlight, Gears, BrowserPlus or HTML5 support.

    well he calls javascript in a php file, in case it will upload the videos.

    what I want is to get the length, resolution, file size and take a screenshot of the video randomly, so far so good, the problem is that it only works with only one upload at a time.
    When sending more than one he does the procedure with ffmpeg, besides the most is not taking a screenshot of the video.
    below is my code

    &lt;?php
    ini_set(&#39;max_execution_time&#39;, 300); //300 seconds = 5 minutes
    if (!extension_loaded (&#39;ffmpeg&#39;) ) exit ( &#39;ffmpeg não foi carregado!&#39; );
    // HTTP headers for no cache etc
    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
    header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
    header("Cache-Control: no-store, no-cache, must-revalidate");
    header("Cache-Control: post-check=0, pre-check=0", false);
    header("Pragma: no-cache");

    include("includes/seguranca.php");
    include("includes/classes/class.mysql.php");
    include("includes/funcoes/sql_inject.php");

    $id_user = anti_injection($_GET[&#39;id&#39;]);
    session_start();

    // Settings
    //$targetDir = ini_get("upload_tmp_dir") . DIRECTORY_SEPARATOR . "plupload";
    $targetDir = &#39;uploads/&#39;;

    //$cleanupTargetDir = false; // Remove old files
    //$maxFileAge = 60 * 60; // Temp file age in seconds

    // 5 minutes execution time
    @set_time_limit(5 * 60);

    // Uncomment this one to fake upload time
    // usleep(5000);

    // Get parameters
    $chunk = isset($_REQUEST["chunk"]) ? $_REQUEST["chunk"] : 0;
    $chunks = isset($_REQUEST["chunks"]) ? $_REQUEST["chunks"] : 0;
    $fileName = isset($_REQUEST["name"]) ? $_REQUEST["name"] : &#39;&#39;;

    // Clean the fileName for security reasons
    $fileName = preg_replace(&#39;/[^\w\._]+/&#39;, &#39;&#39;, $fileName);

    // Make sure the fileName is unique but only if chunking is disabled
    if ($chunks &lt; 2 &amp;&amp; file_exists($targetDir . DIRECTORY_SEPARATOR . $fileName)) {
       $ext = strrpos($fileName, &#39;.&#39;);
       $fileName_a = substr($fileName, 0, $ext);
       $fileName_b = substr($fileName, $ext);

       $count = 1;
       while (file_exists($targetDir . DIRECTORY_SEPARATOR . $fileName_a . &#39;_&#39; . $count . $fileName_b))
           $count++;

       $fileName = $fileName_a . &#39;_&#39; . $count . $fileName_b;


    }

    // Create target dir
    if (!file_exists($targetDir))
       @mkdir($targetDir);

    // Look for the content type header
    if (isset($_SERVER["HTTP_CONTENT_TYPE"]))
       $contentType = $_SERVER["HTTP_CONTENT_TYPE"];

    if (isset($_SERVER["CONTENT_TYPE"]))
       $contentType = $_SERVER["CONTENT_TYPE"];

    // Handle non multipart uploads older WebKit versions didn&#39;t support multipart in HTML5
    if (strpos($contentType, "multipart") !== false) {
       if (isset($_FILES[&#39;file&#39;][&#39;tmp_name&#39;]) &amp;&amp; is_uploaded_file($_FILES[&#39;file&#39;][&#39;tmp_name&#39;])) {


           // Open temp file
           $out = fopen($targetDir . DIRECTORY_SEPARATOR . $fileName, $chunk == 0 ? "wb" : "ab");
           if ($out) {
               // Read binary input stream and append it to temp file
               $in = fopen($_FILES[&#39;file&#39;][&#39;tmp_name&#39;], "rb");

               if ($in) {
                   while ($buff = fread($in, 4096))
                       fwrite($out, $buff);
               } else
                   die(&#39;{"jsonrpc" : "2.0", "error" : {"code": 101, "message": "Failed to open input stream."}, "id" : "id"}&#39;);
               fclose($in);
               fclose($out);
               @unlink($_FILES[&#39;file&#39;][&#39;tmp_name&#39;]);



           } else
               die(&#39;{"jsonrpc" : "2.0", "error" : {"code": 102, "message": "Failed to open output stream."}, "id" : "id"}&#39;);
       } else
           die(&#39;{"jsonrpc" : "2.0", "error" : {"code": 103, "message": "Failed to move uploaded file."}, "id" : "id"}&#39;);
    } else {
       // Open temp file
       $out = fopen($targetDir . DIRECTORY_SEPARATOR . $fileName, $chunk == 0 ? "wb" : "ab");
       if ($out) {
           // Read binary input stream and append it to temp file
           $in = fopen("php://input", "rb");

           if ($in) {
               while ($buff = fread($in, 4096))
                   fwrite($out, $buff);
           } else
               die(&#39;{"jsonrpc" : "2.0", "error" : {"code": 101, "message": "Failed to open input stream."}, "id" : "id"}&#39;);

           fclose($in);
           fclose($out);
       } else
           die(&#39;{"jsonrpc" : "2.0", "error" : {"code": 102, "message": "Failed to open output stream."}, "id" : "id"}&#39;);
    }
    $photoName = $_FILES[&#39;file&#39;][&#39;name&#39;];

    $exploded_photoName = explode(&#39;.&#39;, $photoName);

    $user_id = $_SESSION[&#39;SESS_MEMBER_ID&#39;];

    if(!isset($_SESSION[$photoName])) {

       $_SESSION[$photoName] = &#39;1&#39;;
    }

    if($chunk==1){

    $movie_file = realpath("/uploads/".$fileName);

    // instancia a classe ffmpeg_movie para pegarmos as informações que queremos o vídeo
    $movie = new ffmpeg_movie($movie_file);
    // pegamos a duranção do video em segundos
    $duration = round ( $movie->getDuration() , 0 );
    // recebemos o número de frames do vídeo
    $totalFrames = $movie->getFrameCount();
    // recebemos a altura do vídeo em pixels
    $height = $movie->getFrameHeight ();
    // recebemos a largura do vídeo em pixels
    $width = $movie->getFrameWidth ();

    $thumbnailOf = $movie->getFrameRate() * 5;

    $thumbnailOf = round ( $movie->getFrameCount() / 2 );

    // precisamos criar uma imagem GD para o ffmpeg-php trabalhar nela
    $image = imagecreatetruecolor ($width,$height ) ;
    // criamos a instancia do frame com a classe ffmpeg_frame
    $frame = new ffmpeg_frame ($image);
    // escolhemos o frame que queremos salvar como jpeg
    $thumbnailOf = rand (1,$movie->getFrameCount());
    // recebe o frame
    $frame = $movie->getFrame ( $thumbnailOf );
    // converte para uma imagem GD
    $image = $frame->toGDImage ();

    $size = filesize("uploads/".$fileName);

    $valuea = rand(0,100);
    $valueb = rand(0,100);
    $valuec = rand(0,10);

    $nome = @md5(date(&#39;now&#39;) * $valuea - $valueb / $valuec);

    $dir = realpath("uploads/snapshots/$nome.jpg");
    //salva no HD.
    imagejpeg($image, $dir, 100);


    $resolu = $width."x".$height;

       mysql_query("INSERT INTO video
    (poster_id,duration,video,titulo,resolucao,tamanho)
       VALUES
    (&#39;$id_user&#39;,&#39;$duration&#39;,&#39;$fileName&#39;,&#39;$exploded_photoName[0]&#39;,&#39;$resolu&#39;,&#39;$size&#39;)") or die(mysql_error());

    }
    // Return JSON-RPC response
    die(&#39;{"jsonrpc" : "2.0", "result" : null, "id" : "id"}&#39;);

    ?>

    I did another method not so effective to do what I want but it only works if I open the page individually.

    I removed the code from ffmpeg extension and put an include to that page.

    &lt;?
    ini_set(&#39;max_execution_time&#39;, 300); //300 seconds = 5 minutes
    if (!extension_loaded (&#39;ffmpeg&#39;) ) exit ( &#39;ffmpeg não foi carregado!&#39; );

    include("includes/seguranca.php");
    include("includes/classes/class.mysql.php");
    include("includes/funcoes/sql_inject.php");

    $id_user = @anti_injection($_GET[&#39;id&#39;]);

    class process{
       public $videos;
       public $target;
       public $id_vid;

    public function screen(){

    $videos = $this->videos;
    $target = $this->target;

    $movie_file = realpath($videos);
    // instancia a classe ffmpeg_movie para pegarmos as informações que queremos o vídeo
    $movie = new ffmpeg_movie($movie_file);
    $totalFrames = $movie->getFrameCount();
    $thumbnailOf = $movie->getFrameRate() * 5;
    $thumbnailOf = round ( $movie->getFrameCount() / 2 );

    // criamos a instancia do frame com a classe ffmpeg_frame
    $frame = new ffmpeg_frame ( $image );
    // escolhemos o frame que queremos salvar como jpeg

    $thumbnailOf = rand (1,$movie->getFrameCount());
    // recebe o frame
    $frame = $movie->getFrame ( $thumbnailOf );
    // converte para uma imagem GD
    $image = $frame->toGDImage ();
    $valuea = rand(0,100);
    $valueb = rand(0,100);
    $valuec = rand(0,10);

    $nome = @md5(date(&#39;now&#39;) * $valuea - $valueb / $valuec);

    $dir = $target."snapshots/".$nome.".jpeg";
    //salva no HD.
    imagejpeg($image,$dir, 100);

    $q = new Query;
    $q  ->update(&#39;video&#39;)
       ->set(
           array(
              &#39;screen&#39;=>$nome.".jpeg"
           )
       )
           ->where_equal_to(
                   array(
                           &#39;id_video&#39;=>$this->id_vid
                   )
           )
           ->limit(1)

       ->run();

    }


    public function duration(){

    $videos = $this->videos;    
    $movie_file = realpath($videos);
    // instancia a classe ffmpeg_movie para pegarmos as informações que queremos o vídeo
    $movie = new ffmpeg_movie($movie_file);
    // pegamos a duranção do video em segundos
    $duration = round ( $movie->getDuration() , 0 );

    $q = new Query;
    $q  ->update(&#39;video&#39;)
       ->set(
           array(
              &#39;duration&#39;=>$duration
           )
       )
           ->where_equal_to(
                   array(
                           &#39;id_video&#39;=>$this->id_vid
                   )
           )
           ->limit(1)

       ->run();
    }


    public function resolution(){

    $videos = $this->videos;    
    $movie_file = realpath($videos);
    // instancia a classe ffmpeg_movie para pegarmos as informações que queremos o vídeo
    $movie = new ffmpeg_movie($movie_file);
    // recebemos a altura do vídeo em pixels
    $height = $movie->getFrameHeight ();
    // recebemos a largura do vídeo em pixels
    $width = $movie->getFrameWidth ();
    $resolucao =  $width."x".$height;


    $q = new Query;
    $q  ->update(&#39;video&#39;)
       ->set(
           array(
              &#39;resolucao&#39;=>$resolucao
           )
       )
       ->where_equal_to(
                   array(
                           &#39;id_video&#39;=>$this->id_vid
                   )
           )
           ->limit(1)

       ->run();
    }

    final public function checar($a){

    $q = new Query;
    $q  ->update(&#39;video&#39;)
       ->set(
           array(
              &#39;process&#39;=>$a
           )
       )
       ->where_equal_to(
                   array(
                           &#39;id_video&#39;=>$this->id_vid
                   )
           )
           ->limit(1)

       ->run();

    }

    }

    $q=new Query;
    $q->select(
                   array(
                           &#39;id_video&#39;,
                           &#39;video&#39;,
                           &#39;dir&#39;,
                           &#39;screen&#39;,
                           &#39;poster_id&#39;,
                           &#39;resolucao&#39;,
                           &#39;duration&#39;
                   )
           )
           ->from(&#39;video&#39;)



           ->run();
    if($q){
           $users=$q->get_selected();
           foreach($users as $user){
            $c = new process;

            $c->videos = $user[&#39;video&#39;];
            $c->target = $user[&#39;dir&#39;];
            $c->id_vid = $user[&#39;id_video&#39;];

           if(($user[&#39;screen&#39;] == &#39;NULL&#39;) or ($user[&#39;duration&#39;] == &#39;NULL&#39;) or ($user[&#39;resolucao&#39;] == &#39;NULL&#39;)){
                   $c->checar(0);

                   if($user[&#39;screen&#39;] == &#39;NULL&#39;){      
                   $c->screen();
                   }

                   if($user[&#39;duration&#39;] == &#39;NULL&#39;){
                   $c->duration();
                   }

                   if($user[&#39;resolucao&#39;] == &#39;NULL&#39;){
                   $c->resolution();  
                   }

           }else{

           $c->checar(1);

           }

           }
    }
    else{
           echo &#39;Sorry, no users found.&#39;;
    }



    ?>