Recherche avancée

Médias (1)

Mot : - Tags -/artwork

Autres articles (82)

  • De l’upload à la vidéo finale [version standalone]

    31 janvier 2010, par

    Le chemin d’un document audio ou vidéo dans SPIPMotion est divisé en trois étapes distinctes.
    Upload et récupération d’informations de la vidéo source
    Dans un premier temps, il est nécessaire de créer un article SPIP et de lui joindre le document vidéo "source".
    Au moment où ce document est joint à l’article, deux actions supplémentaires au comportement normal sont exécutées : La récupération des informations techniques des flux audio et video du fichier ; La génération d’une vignette : extraction d’une (...)

  • Librairies et binaires spécifiques au traitement vidéo et sonore

    31 janvier 2010, par

    Les logiciels et librairies suivantes sont utilisées par SPIPmotion d’une manière ou d’une autre.
    Binaires obligatoires FFMpeg : encodeur principal, permet de transcoder presque tous les types de fichiers vidéo et sonores dans les formats lisibles sur Internet. CF ce tutoriel pour son installation ; Oggz-tools : outils d’inspection de fichiers ogg ; Mediainfo : récupération d’informations depuis la plupart des formats vidéos et sonores ;
    Binaires complémentaires et facultatifs flvtool2 : (...)

  • HTML5 audio and video support

    13 avril 2011, par

    MediaSPIP uses HTML5 video and audio tags to play multimedia files, taking advantage of the latest W3C innovations supported by modern browsers.
    The MediaSPIP player used has been created specifically for MediaSPIP and can be easily adapted to fit in with a specific theme.
    For older browsers the Flowplayer flash fallback is used.
    MediaSPIP allows for media playback on major mobile platforms with the above (...)

Sur d’autres sites (7299)

  • How to show segment lengths of hls file with ffmpeg

    30 mai 2017, par endorphins

    I’m trying to use ffmpeg to retrieve the segment duration of every segment for every stream of an HLS file. It looks like I can do this if I know all of the names of the individual files in advance and call ffprobe on each one. This seems really tedious and I won’t always know the names of all of the individual files, only the main .m3u8. Is there any way I can get all of this information with just one ffmpeg command ?

    Additionally, is the duration retrieved by ffprobe on a .aac file accurate ? I get the message that it’s "Estimating duration from bitrate, this may be inaccurate".

  • MAINTAINERS : Split project server admin list

    6 août 2022, par Michael Niedermayer
    MAINTAINERS : Split project server admin list
    

    This updates the list closer to reality.
    Iam not a professional server admin, iam happy to help maintain the box as i have
    done in the past. But iam not qualified nor volunteering to fix sudden problems
    nor do i do major upgrades (i lack the experience to recover the box remotely if
    something goes wrong) and also iam not maintaining backups ATM (our backup system
    had a RAID-5 failure, raz is working on setting a new one up)

    Maybe this should be signaled in a different way than spliting the lines but ATM
    people ping me if something is wrong and what i do is mainly mail/ping raz
    and try to find another root admin so raz is not the only active & professional
    admin on the team. It would be more efficient if people contact raz and others
    directly instead of depending on my waking up and forwarding a "ffmpeg.org" is down note

    Signed-off-by : Michael Niedermayer <michael@niedermayer.cc>

    • [DH] MAINTAINERS
  • php stream any mp4

    3 avril 2012, par GRaecuS

    I'm developing a web app that converts videos and allows to play them through Flowplayer.

    On the current status, I use ffmpeg to convert the videos to mp4 and qtfaststart to fix their metadata for streaming. Everything is working smoothly as I can download any converted mp4 and view it correctly.

    For serving the videos to Flowplayer, I use a php file which contains the following (summarized) code :

    header("Content-Type: {$mediatype}");

    if ( empty($_SERVER[&#39;HTTP_RANGE&#39;]) )
    {
       if ( $filetype == &#39;flv&#39; &amp;&amp; $seekPos != 0 )
       {
           header("Content-Length: " . ($filesize + 13));
           print(&#39;FLV&#39;);
           print(pack(&#39;C&#39;, 1));
           print(pack(&#39;C&#39;, 1));
           print(pack(&#39;N&#39;, 9));
           print(pack(&#39;N&#39;, 9));
       }
       else
       {          
           header("Content-Length: {$filesize}");
       }

       $fh = fopen($filepath, "rb") or die("Could not open file: {$filepath}");

       # seek to requested file position
       fseek($fh, $seekPos);

       # output file
       while(!feof($fh))
       {
           # output file without bandwidth limiting
           echo fread($fh, $filesize);
       }
       fclose($fh);
    }
    else //violes rfc2616, which requires ignoring  the header if it&#39;s invalid
    {  
       $fp = @fopen($file, &#39;rb&#39;);

       $size   = filesize($file); // File size
       $length = $size;           // Content length
       $start  = 0;               // Start byte
       $end    = $size - 1;       // End byte
       // Now that we&#39;ve gotten so far without errors we send the accept range header
       /* At the moment we only support single ranges.
        * Multiple ranges requires some more work to ensure it works correctly
        * and comply with the spesifications: http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.2
        *
        * Multirange support annouces itself with:
        * header(&#39;Accept-Ranges: bytes&#39;);
        *
        * Multirange content must be sent with multipart/byteranges mediatype,
        * (mediatype = mimetype)
        * as well as a boundry header to indicate the various chunks of data.
        */
       header("Accept-Ranges: 0-$length");
       // header(&#39;Accept-Ranges: bytes&#39;);
       // multipart/byteranges
       // http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.2
       if (isset($_SERVER[&#39;HTTP_RANGE&#39;]))
       {
           $c_start = $start;
           $c_end   = $end;
           // Extract the range string
           list(, $range) = explode(&#39;=&#39;, $_SERVER[&#39;HTTP_RANGE&#39;], 2);
           // Make sure the client hasn&#39;t sent us a multibyte range
           if (strpos($range, &#39;,&#39;) !== false)
           {
               // (?) Shoud this be issued here, or should the first
               // range be used? Or should the header be ignored and
               // we output the whole content?
               header(&#39;HTTP/1.1 416 Requested Range Not Satisfiable&#39;);
               header("Content-Range: bytes $start-$end/$size");
               // (?) Echo some info to the client?
               exit;
           }
           // If the range starts with an &#39;-&#39; we start from the beginning
           // If not, we forward the file pointer
           // And make sure to get the end byte if spesified
           if ($range0 == &#39;-&#39;)
           {

               // The n-number of the last bytes is requested
               $c_start = $size - substr($range, 1);
           }
           else
           {
               $range  = explode(&#39;-&#39;, $range);
               $c_start = $range[0];
               $c_end   = (isset($range[1]) &amp;&amp; is_numeric($range[1])) ? $range[1] : $size;
           }
           /* Check the range and make sure it&#39;s treated according to the specs.
            * http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
            */
           // End bytes can not be larger than $end.
           $c_end = ($c_end > $end) ? $end : $c_end;
           // Validate the requested range and return an error if it&#39;s not correct.
           if ($c_start > $c_end || $c_start > $size - 1 || $c_end >= $size)
           {
               header(&#39;HTTP/1.1 416 Requested Range Not Satisfiable&#39;);
               header("Content-Range: bytes $start-$end/$size");
               // (?) Echo some info to the client?
               exit;
           }
           $start  = $c_start;
           $end    = $c_end;
           $length = $end - $start + 1; // Calculate new content length
           fseek($fp, $start);
           header(&#39;HTTP/1.1 206 Partial Content&#39;);
       }

       // Notify the client the byte range we&#39;ll be outputting
       header("Content-Range: bytes $start-$end/$size");
       header("Content-Length: $length");

       // Start buffered download
       $buffer = 1024 * 8;
       while(!feof($fp) &amp;&amp; ($p = ftell($fp)) &lt;= $end)
       {
           if ($p + $buffer > $end)
           {
               // In case we&#39;re only outputtin a chunk, make sure we don&#39;t
               // read past the length
               $buffer = $end - $p + 1;
           }
           set_time_limit(0); // Reset time limit for big files
           echo fread($fp, $buffer);
           flush(); // Free up memory. Otherwise large files will trigger PHP&#39;s memory limit.
       }

       fclose($fp);
    }

    Unfortunately, it is working only for the majority of the videos. For some of them, Flowplayer keeps returning Error 200, even though they were encoded correctly.

    How can I fix this ? Is it a coding problem or those videos are faulty ?