Recherche avancée

Médias (91)

Autres articles (26)

  • MediaSPIP v0.2

    21 juin 2013, par

    MediaSPIP 0.2 est la première version de MediaSPIP stable.
    Sa date de sortie officielle est le 21 juin 2013 et est annoncée ici.
    Le fichier zip ici présent contient uniquement les sources de MediaSPIP en version standalone.
    Comme pour la version précédente, 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 (...)

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

  • Mise à disposition des fichiers

    14 avril 2011, par

    Par défaut, lors de son initialisation, MediaSPIP ne permet pas aux visiteurs de télécharger les fichiers qu’ils soient originaux ou le résultat de leur transformation ou encodage. Il permet uniquement de les visualiser.
    Cependant, il est possible et facile d’autoriser les visiteurs à avoir accès à ces documents et ce sous différentes formes.
    Tout cela se passe dans la page de configuration du squelette. Il vous faut aller dans l’espace d’administration du canal, et choisir dans la navigation (...)

Sur d’autres sites (3329)

  • curl | tar - gzip : stdin : not in gzip format

    17 avril 2021, par Jonathan Ong

    I'm trying to install ffmpeg on travis with this command :

    



    curl http://johnvansickle.com/ffmpeg/releases/ffmpeg-release-64bit-static.tar.xz | tar -C /usr/local/bin/ -xvz


    



    I get this error :

    



    $ curl http://johnvansickle.com/ffmpeg/releases/ffmpeg-release-64bit-static.tar.xz | tar -C /usr/local/bin/ -xvz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time      Current
                                 Dload  Upload   Total   Spent    Left      Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
gzip: stdin: not in gzip format
tar: Child died with signal 13
tar: Error is not recoverable: exiting now
The command "curl http://johnvansickle.com/ffmpeg/releases/ffmpeg-release-64bit-static.tar.xz | tar -C /usr/local/bin/ -xvz" failed and exited with 2 during .


    



    however, it works locally on OS X. what's going on ?

    


  • Piping stream to ffmpeg via forked process stdin

    6 novembre 2019, par Yanick Salzmann

    I am piping data from my raspberry pi camera to ffmpeg to convert them into an mp4 stream. I do so not with libavformat/libavformat but I call ffmpeg directly like this :

           context->ffmpeg_process = utils::launch_subprocess(
                   "ffmpeg",
                   {"-f", "rawvideo", "-pix_fmt", "yuv420p", "-s", "1920x1080", "-r", "30", "-i", "-", "-c", "libx264", "-f", "mp4", "-movflags", "frag_keyframe+empty_moov", "-", "-loglevel", "trace"}
           );

    This is my wrapper around fork and exec like this :

           const auto child = fork();
           if(child == 0) {
               if (dup2(stdin_pipe[PIPE_READ], STDIN_FILENO) == -1) {
                   exit(errno);
               }

               // same for stdout and sterr

               execvp(command.c_str(), proc_args);
               exit(errno);
           } else if(child > 0) {
               // same for stdout and stderr
               ret_process.stdin_pipe = stdin_pipe[PIPE_WRITE];
           }

    Now I have a callback that is called by the raspberry pi camera :

       void CameraHandler::handle_camera_frame(const std::vector &data, std::size_t size) {
           FILE* f = fopen("output.yuv4", "ab");
           fwrite(data.data(), 1, size, f);
           fclose(f);

           std::lock_guard l{_listener_lock};
           for (const auto &listener : _data_listeners) {
               std::size_t written = 0;
               while (written < size) {
                   const auto num_written = write(listener->ffmpeg_process.stdin_pipe, data.data() + written, size - written);
                   written += num_written;
                   if(num_written < 0) {
                       log->error("Broken stdin pipe");
                       break;
                   }
               }
           }
       }

    I deliberately append every frame to a file because I am running the exact same command as above (with cat output.yuv4 | ffmpeg ... > output4.mp4 to cross check).

    Now I can see that I am reading some data from my camera and pushing it to the ffmpeg process. But already after the first read ffmpeg complains, that the input data is invalid :

    [2019-11-06 20:08:04.010] [11872:11932] [carpi::data::CameraHandler] [info] Launched ffmpeg process. PID: 11933, error: 0
    [2019-11-06 20:08:04.014] [11872:11932] [carpi::video::RawCameraStream] [info] Camera dimension: 1920/1080
    ffmpeg version 4.1.4-1+rpt1~deb10u1 Copyright (c) 2000-2019 the FFmpeg developers
     built with gcc 8 (Raspbian 8.3.0-6+rpi1)
     configuration: --prefix=/usr --extra-version='1+rpt1~deb10u1' --toolchain=hardened --libdir=/usr/lib/arm-linux-gnueabihf --incdir=/usr/include/arm-linux-gnueabihf --arch=arm --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-omx-rpi --enable-mmal --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared
     libavutil      56. 22.100 / 56. 22.100
     libavcodec     58. 35.100 / 58. 35.100
     libavformat    58. 20.100 / 58. 20.100
     libavdevice    58.  5.100 / 58.  5.100
     libavfilter     7. 40.101 /  7. 40.101
     libavresample   4.  0.  0 /  4.  0.  0
     libswscale      5.  3.100 /  5.  3.100
     libswresample   3.  3.100 /  3.  3.100
     libpostproc    55.  3.100 / 55.  3.100
    Successfully parsed a group of options.
    Parsing a group of options: input url -.
    Applying option pix_fmt (set pixel format) with argument yuv420p.
    Applying option s (set frame size (WxH or abbreviation)) with argument 1920x1080.
    Applying option r (set frame rate (Hz value, fraction or abbreviation)) with argument 30.
    Successfully parsed a group of options.
    Opening an input file: -.
    [NULL @ 0xcd02d0] Opening 'pipe:' for reading
    [pipe @ 0xcd0b50] Setting default whitelist 'crypto'
    [AVIOContext @ 0xcd8d50] Statistics: 1048576 bytes read, 0 seeks
    pipe:: Invalid data found when processing input

    I am now confused. This is literally the same as I am fwriteing and then piping from the file. Is there something wrong with my write ?

  • NodeJS - FFmpeg : Extract Frame from Video stdin stream (EPIPE write Error)

    3 avril 2022, par ManiB

    I want to pipe an input steam (video) (should later be an http stream) to ffmpeg child process to extract an thumbnail :

    


    require("stream").pipeline(
  require("fs").createReadStream("files/myVideo.mp4"),
  require("child_process").spawn("ffmpeg", ["-i", "-", "-ss", "00:00:01", "-frames:v", "1", "-y", "files/myImage.jpeg"]).stdin,
  (err) => console.log("Done", err)
);


    


    So far so good, I get an extracted Image, but also an Error :

    


    Error: write EPIPE
    at WriteWrap.onWriteComplete [as oncomplete] (node:internal/stream_base_commons:94:16) {
  errno: -32,
  code: 'EPIPE',
  syscall: 'write'
}


    


    Converting full videos (e.g. mp4 -> mkv) works without errors.

    


    My suggestion is, FFmpeg will close stdin too early (because image is already found on first second) and readable-stream is not able to write to stdin anymore.

    


    How can I manage, to fix the error and gracefully close all streams ?

    


    System :

    


      

    • Linux Centos 7 (also tried Windows Server 1809)
    • 


    • NodeJS v16.14.1 (Windows v16.13.0)
    • 


    • FFmpeg v4.4.1-static (Windows v4.4-full_build-www.gyan.dev)
    •