Recherche avancée

Médias (2)

Mot : - Tags -/kml

Autres articles (46)

  • Amélioration de la version de base

    13 septembre 2013

    Jolie sélection multiple
    Le plugin Chosen permet d’améliorer l’ergonomie des champs de sélection multiple. Voir les deux images suivantes pour comparer.
    Il suffit pour cela d’activer le plugin Chosen (Configuration générale du site > Gestion des plugins), puis de configurer le plugin (Les squelettes > Chosen) en activant l’utilisation de Chosen dans le site public et en spécifiant les éléments de formulaires à améliorer, par exemple select[multiple] pour les listes à sélection multiple (...)

  • Emballe médias : à quoi cela sert ?

    4 février 2011, par

    Ce plugin vise à gérer des sites de mise en ligne de documents de tous types.
    Il crée des "médias", à savoir : un "média" est un article au sens SPIP créé automatiquement lors du téléversement d’un document qu’il soit audio, vidéo, image ou textuel ; un seul document ne peut être lié à un article dit "média" ;

  • Ajouter des informations spécifiques aux utilisateurs et autres modifications de comportement liées aux auteurs

    12 avril 2011, par

    La manière la plus simple d’ajouter des informations aux auteurs est d’installer le plugin Inscription3. Il permet également de modifier certains comportements liés aux utilisateurs (référez-vous à sa documentation pour plus d’informations).
    Il est également possible d’ajouter des champs aux auteurs en installant les plugins champs extras 2 et Interface pour champs extras.

Sur d’autres sites (7377)

  • Threads creating process in infinite loop

    10 décembre 2013, par bhupinder

    In my application a thread runs while(1){} in it so thread terminates when my app is terminated by user.

    Is it safe to do like this ? I am using while(1){} because my app continuously monitors devices on system.

    After some time I am getting "(R6016) not enough space for thread data" on ffmpeg.

    I read this but did not get solution of my problem :

    http://support.microsoft.com/kb/126709

    Thread description :
    Thread uses ffmpeg and handle utility (http://technet.microsoft.com/en-us/sysinternals/bb896655.aspx). within while(1){} loop.

    ffmpeg and handle is running through QProcess which I am deleting after process ends.

    while(1){} loop waits for 5 seconds using
    msleep(5000).

  • ffmpeg - Continuously stream webcam to single .jpg file (overwrite)

    8 octobre 2016, par Germanunkol

    I have installed ffmpeg and mjpeg-streamer. The latter reads a .jpg file from /tmp/stream and outputs it via http onto a website, so I can stream whatever is in that folder through a web browser.

    I wrote a bash script that continuously captures a frame from the webcam and puts it in /tmp/stream :

    while true
    do
       ffmpeg -f video4linux2 -i /dev/v4l/by-id/usb-Microsoft_Microsoft_LifeCam_VX-5000-video-index0 -vframes 1 /tmp/stream/pic.jpg
    done

    This works great, but is very slow ( 1 fps). In the hopes of speeding it up, I want to use a single ffmpeg command which continuously updates the .jpg at, let’s say 10 fps. What I tried was the following :

    ffmpeg -f video4linux2 -r 10 -i /dev/v4l/by-id/usb-Microsoft_Microsoft_LifeCam_VX-5000-video-index0 /tmp/stream/pic.jpg

    However this - understandably - results in the error message :

    [image2 @ 0x1f6c0c0] Could not get frame filename number 2 from pattern '/tmp/stream/pic.jpg'
    av_interleaved_write_frame(): Input/output error

    ...because the output pattern is bad for a continuous stream of images.

    Is it possible to stream to just one jpg with ffmpeg ?

    Thanks...

  • using ffmpeg plugin with plugin uploaded

    17 avril 2013, par Bruno Ribeiro

    good he uploads the video registers in the database but does not take the print screen of the video and did not register on the database.

       <?
       class upload{

           public $vide;
           public $dir_video;
           public $dir_screen;
           //public $id_user;

       //private function video(){
       //return isset($_REQUEST["name"]) ? $_REQUEST["name"] : '';
       //}

       private function id_user(){
       return anti_injection($_GET['id']);
       }

       private function get_duration(){
           $getID3 = new getID3;
           $file = $getID3->analyze($this->video);
               return $file['playtime_string'];
       }

       private function rand_duration(){
       @list($h, $m, $s) = explode(":", $this->get_duration());
       $hms = ($h * 3600) + ($m * 60) + $s;
       $rhms = rand(0, $hms);
       return date('H:i', mktime(0,0,$rhms,0,0,0));

       }


       private function rand_name(){
           $a = base64_encode($this->video);
           return @md5(date('Y-m-d H:i:s') * $a);  
       }


       private function get_resolution(){

           $getID3 = new getID3;
           $file = $getID3->analyze($this->video);
               return $file['video']['resolution_x']."x".$file['video']['resolution_y'];

       }

       private function get_size(){
           $getID3 = new getID3;
           $file = $getID3->analyze($this->video);
               return $file['filesize'];

       }

       private function get_printscreen(){
           $cmd = "ffmpeg  -i ".$this->video." -f mjpeg -an -ss ".$this->rand_duration()." -an -vframes 1 -y ".$this->dir_screen.$this->rand_name().".jpg";
           return exec($cmd, $output);
               //echo "executed command: [".$cmd."] with result: ".print_r($output, true)."<br />\n";
       }

       private function get_extension($a){

           $arquivo = pathinfo($a);
           return $arquivo[&#39;extension&#39;];

       }

       private function verify_extension(){
           if($this->get_extension() == "flv"){
               return "0";
           } else {

               return "1";
           }

       }



       public function _build(){
       // 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");
       */

           session_start();

       // Settings
       //$targetDir = ini_get("upload_tmp_dir") . DIRECTORY_SEPARATOR . "plupload";
       $targetDir = $this->dir_video;

       //$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){

           $this->get_printscreen();

           mysql_query("INSERT INTO video
           (poster_id,video,titulo,extension,screen,duration,resolucao,tamanho)
                       VALUES
           (&#39;".$this->id_user()."&#39;,&#39;$fileName&#39;,&#39;$exploded_photoName[0]&#39;,&#39;".$this->get_extension($fileName)."&#39;,&#39;".$this->rand_name().".jpg&#39;,&#39;".$this->get_duration()."&#39;,&#39;".$this->get_resolution()."&#39;,&#39;".$this->get_size()."&#39;)")
           or die(mysql_error());


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


           //$this->get_printscreen();
           //return print $this->video();
           //return print $this->rand_name();  
       }


       }

    ?>

    I'm using the class to become more organized and clean, but I can not get the information from the video and get the printscreen using the plugin class and uploaded.