Recherche avancée

Médias (91)

Autres articles (71)

  • MediaSPIP 0.1 Beta version

    25 avril 2011, par

    MediaSPIP 0.1 beta is the first version of MediaSPIP proclaimed as "usable".
    The zip file provided here only contains the sources of MediaSPIP in its standalone version.
    To get a working installation, you must manually install all-software dependencies on the server.
    If you want to use this archive for an installation in "farm mode", you will also need to proceed to other manual (...)

  • MediaSPIP version 0.1 Beta

    16 avril 2011, par

    MediaSPIP 0.1 beta est la première version de MediaSPIP décrétée comme "utilisable".
    Le fichier zip ici présent contient uniquement les sources de MediaSPIP en version standalone.
    Pour avoir une installation fonctionnelle, il est nécessaire d’installer manuellement l’ensemble des dépendances logicielles sur le serveur.
    Si vous souhaitez utiliser cette archive pour une installation en mode ferme, il vous faudra également procéder à d’autres modifications (...)

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

Sur d’autres sites (10567)

  • avcodec/h264dec : remove unnecessary checks in h264_decode_frame

    6 septembre 2018, par Zhao Zhili
    avcodec/h264dec : remove unnecessary checks in h264_decode_frame
    

    These conditions are checked again in is_extra(). This patch makes no
    functional changes.

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

    • [DH] libavcodec/h264dec.c
  • Evolution #4102 : Ordre des inclures dans cache/charger_plugins_options.php

    18 septembre 2018, par Peet du

    Pas de réaction, on doit pouvoir fermer ce ticket.

  • proc_open hangs when trying to read from a stream

    7 juillet 2015, par eithedog

    I’ve encountered the issue with proc_open on Windows, when trying to convert a wmv file (to flv), using ffmpeg, however I suspect I’ll encounter the same scenario whenever certain conditions occur.
    Basically my code is as follows :

    $descriptorspec = array
    (
       array("pipe", "r"),
       array("pipe", "w"),
       array("pipe", "w")
    );

    $pipes = array();
    $procedure = proc_open('cd "C:/Program Files/ffmpeg/bin" &amp;&amp; "ffmpeg.exe" -i "C:/wamp/www/project/Wildlife.wmv" -deinterlace -qdiff 2 -ar 22050 "C:/wamp/www/project/Wildlife.flv"', $descriptorspec, $pipes);
    var_dump(stream_get_contents($pipes[1]));

    Now, this code will cause PHP to hang indefinitely (it doesn’t matter if instead of stream_get_contents I’ll use fgets or stream_select, the behavior is consistent).

    The reason for it (I suspect) is that, while STDOUT stream is open succesfully, the process doesn’t write anything to it (even though running the same command in cmd displays output) and as such, trying to read from such stream, would cause the same issue as described here, so - PHP waits for the stream to have anything in it, process doesn’t write anything to it.

    However (additional fun), setting stream_set_timeout or stream_set_blocking doesn’t have any effect.

    As such - can somebody confirm/deny on what is going on, and, if possible, show how can I cater for such situation ? I’ve looked at PHP bugs, and all proc_open hangs ones seem to be fixed.

    For time being I’ve implemented such solution :

    $timeout = 60;
    while (true) {
       sleep(1);

       $status = proc_get_status($procedure);
       if (!$status['running'] || $timeout == 0) break;

       $timeout--;
    }

    However, I’d really not like to rely on something like this as :

    1. I will have processes that run for longer than a minute - such processes will be falsely reported to be of the above mentioned type
    2. I want to know when the ffmpeg has finished converting the video - currently I’ll only know that process is still running after a minute, and I can’t really do anything to check if there’s any output (as it will hang PHP).

    Also, I don’t really want to wait a full minute for the process to be checked (for example - converting the given video from command line takes <10s), and I’ll have videos that take more time to be converted.


    Per comment from @Sjon, here’s stream_select I was using, which blocks due to same issue - STDOUT not being written to :

    $descriptorspec = array
    (
       array("pipe", "r"),
       array("pipe", "w"),
       array("pipe", "w")
    );

    $pipes = array();
    $procedure = proc_open('cd "C:/Program Files/ffmpeg/bin" &amp;&amp; "ffmpeg.exe" -i "C:/wamp/www/sandbox/Wildlife.wmv" -deinterlace -qdiff 2 -ar 22050 "C:/wamp/www/sandbox/Wildlife.flv"', $descriptorspec, $pipes);

    $read = array($pipes[0]);
    $write = array($pipes[1], $pipes[2]);
    $except = array();

    while(true)
    if(($num_changed_streams = stream_select($read, $write, $except, 10)) !== false)
    {
       foreach($write as $stream)
           var_dump(stream_get_contents($stream));

       exit;
    }
    else
       break;

    Per conversation with @Sjon - reading from buffered streams on Windows is broken. The solution in the end is to use stream redirection via shell, and then read the created files - as such

    $descriptorspec = array
    (
       array("pipe", "r"),
       array("pipe", "w"),
       array("pipe", "w")
    );

    $pipes = array();
    $procedure = proc_open('cd "C:/Program Files/ffmpeg/bin" &amp;&amp; "ffmpeg.exe" -i "C:/wamp/www/sandbox/Wildlife.mp4" -deinterlace -qdiff 2 -ar 22050 "C:/wamp/www/sandbox/Wildlife.flv" > C:/stdout.log 2> C:/stderr.log', $descriptorspec, $pipes);

    proc_close($procedure);

    $output = file_get_contents("C:/stdout.log");
    $error = file_get_contents("C:/stderr.log");

    unlink("C:/stdout.log");
    unlink("C:/stderr.log");

    As the stream is buffered, in the file we will get unbuffered output (something I was after as well). And we don’t need to check if the file changes, because the result from shell is unbuffered and synchronous.