Recherche avancée

Médias (91)

Autres articles (82)

  • Les tâches Cron régulières de la ferme

    1er décembre 2010, par

    La gestion de la ferme passe par l’exécution à intervalle régulier de plusieurs tâches répétitives dites Cron.
    Le super Cron (gestion_mutu_super_cron)
    Cette tâche, planifiée chaque minute, a pour simple effet d’appeler le Cron de l’ensemble des instances de la mutualisation régulièrement. Couplée avec un Cron système sur le site central de la mutualisation, cela permet de simplement générer des visites régulières sur les différents sites et éviter que les tâches des sites peu visités soient trop (...)

  • Keeping control of your media in your hands

    13 avril 2011, par

    The vocabulary used on this site and around MediaSPIP in general, aims to avoid reference to Web 2.0 and the companies that profit from media-sharing.
    While using MediaSPIP, you are invited to avoid using words like "Brand", "Cloud" and "Market".
    MediaSPIP is designed to facilitate the sharing of creative media online, while allowing authors to retain complete control of their work.
    MediaSPIP aims to be accessible to as many people as possible and development is based on expanding the (...)

  • Le profil des utilisateurs

    12 avril 2011, par

    Chaque utilisateur dispose d’une page de profil lui permettant de modifier ses informations personnelle. Dans le menu de haut de page par défaut, un élément de menu est automatiquement créé à l’initialisation de MediaSPIP, visible uniquement si le visiteur est identifié sur le site.
    L’utilisateur a accès à la modification de profil depuis sa page auteur, un lien dans la navigation "Modifier votre profil" est (...)

Sur d’autres sites (12775)

  • select audio channels with ffmpeg [on hold]

    4 août 2015, par Jecki

    im pushing my stream to shoutcast server using ffmpeg to decode the stream , right now im using the following :

    ffmpeg -loglevel quiet -i udp ://@224.5.0.122:5000 -eng 96000 -f s16le
    -f alsa pcm.pulse

    im trying to select audio from track2 using

    -map 0:1

    ffmpeg -loglevel quiet -i -map 0:a:1 udp ://@224.3.0.222:5000 -ar
    96000 -f s16le -f alsa pcm.pulse

    option and its always give me audio signal delayed

    any advise what i’m missing here

    Regards

  • 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.

  • 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...