Advanced search

Medias (91)

Other articles (19)

  • Pas question de marché, de cloud etc...

    10 April 2011

    Le vocabulaire utilisé sur ce site essaie d’éviter toute référence à la mode qui fleurit allègrement
    sur le web 2.0 et dans les entreprises qui en vivent.
    Vous êtes donc invité à bannir l’utilisation des termes "Brand", "Cloud", "Marché" etc...
    Notre motivation est avant tout de créer un outil simple, accessible à pour tout le monde, favorisant
    le partage de créations sur Internet et permettant aux auteurs de garder une autonomie optimale.
    Aucun "contrat Gold ou Premium" n’est donc prévu, aucun (...)

  • Keeping control of your media in your hands

    13 April 2011, by

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

  • ANNEXE : Les plugins utilisés spécifiquement pour la ferme

    5 March 2010, by

    Le site central/maître de la ferme a besoin d’utiliser plusieurs plugins supplémentaires vis à vis des canaux pour son bon fonctionnement. le plugin Gestion de la mutualisation; le plugin inscription3 pour gérer les inscriptions et les demandes de création d’instance de mutualisation dès l’inscription des utilisateurs; le plugin verifier qui fournit une API de vérification des champs (utilisé par inscription3); le plugin champs extras v2 nécessité par (...)

On other websites (3642)

  • Cancelling ffpeg launched as a C# process

    22 April 2016, by DarwinIcesurfer

    I’m launching ffmpeg in a c# process to encode a video. In a command window, ffmpeg can be interrupted by pressing CTRL-C. I have tried to achieve the same effect by closing the process, however ffmpeg does not appear to close (it is still visible in task manager and it does not release the handle on the file it was encoding)

    How can ffmpeg be interrupted programatically?

    static Process proc;
    static BackgroundWorker bw;    

    public void EncodeVideoWithProgress(string filename, string arguments, BackgroundWorker worker, DoWorkEventArgs e)
    {
       proc = new Process();

       // assign the backgroud worker to a class member variable so all function within the class will have access
       bw = worker;

       proc.StartInfo.FileName = "ffmpeg";
       proc.StartInfo.Arguments = "-i " + " \"" + filename + "\" " + arguments;

       proc.StartInfo.UseShellExecute = false;
       proc.EnableRaisingEvents = true;
       proc.StartInfo.RedirectStandardError = true;
       proc.StartInfo.RedirectStandardOutput = false;
       proc.StartInfo.CreateNoWindow = true;

       proc.ErrorDataReceived += new DataReceivedEventHandler(NetErrorDataHandler);

       proc.Start();
       proc.BeginErrorReadLine();

       proc.WaitForExit();
    }

    private static void NetErrorDataHandler(object sendingProcess,
              DataReceivedEventArgs errLine)
    {
       if (bw.CancellationPending)
       {
           proc.CloseMainWindow();
           proc.Close();  
       }
       else
       {
        // do other tasks
       }
    }
  • Properly handling FFMpeg multithreading

    31 March 2020, by Salvo Passaro

    I’m writing a program that receives multiple RTSP live streams and transmuxes them into various formats. My first idea was to spawn a thread for each stream to handle receiving, demuxing and remuxing; then i realized it was conceptually better to instead spread the work across "workers".

    So i eventually ended up building

    • a std::queue (and an associated mutex) of AVPackets for each stream
    • a semaphore based on std::condition_variable
    • a worker to handle network io (which essentially loops over av_read_frame and notifies the semaphore on each successful iteration)
    • a worker to "consume" received packets from the queue (which waits on the semaphore)

    Now, using the above, stream quality noticeably dropped. I’m not sure if my load balancing approach is poor or messes up libavformat somehow; is there something I’m missing?

  • convert recordRTC webm file to mp4

    29 August 2022, by SAMEER

    I'm using recordRTC in browser for creating Video Clip, but after stop recording, I'm getting blob file type.

    


    but I want to mp4 file type, for converting I used ffmpeg.js https://archive.org/download/ffmpeg_asm/ffmpeg_asm.js . yes I'm able to covert it now,

    


    but the worry thing is, Now I only can view it on after downloading to my local PC, when I upload it to the server and then retrieve it, It's not visible.

    


    recordRef.current.stopRecording(function (url) {
        convertStreams(recordRef.current.getBlob());

      });


      var workerPath = 'https://archive.org/download/ffmpeg_asm/ffmpeg_asm.js';

      function processInWebWorker() {
        var blob = URL.createObjectURL(new Blob(['importScripts("' + workerPath + '");var now = Date.now;function print(text) {postMessage({"type" : "stdout","data" : text});};onmessage = function(event) {var message = event.data;if (message.type === "command") {var Module = {print: print,printErr: print,files: message.files || [],arguments: message.arguments || [],TOTAL_MEMORY: message.TOTAL_MEMORY || false};postMessage({"type" : "start","data" : Module.arguments.join(" ")});postMessage({"type" : "stdout","data" : "Received command: " +Module.arguments.join(" ") +((Module.TOTAL_MEMORY) ? ".  Processing with " + Module.TOTAL_MEMORY + " bits." : "")});var time = now();var result = ffmpeg_run(Module);var totalTime = now() - time;postMessage({"type" : "stdout","data" : "Finished processing (took " + totalTime + "ms)"});postMessage({"type" : "done","data" : result,"time" : totalTime});}};postMessage({"type" : "ready"});'], {
          type: 'application/javascript'
        }));

        var worker = new Worker(blob);
        URL.revokeObjectURL(blob);
        return worker;
      }

      var worker;

      function convertStreams(videoBlob) {
        setBlob(videoBlob)
        setIsRecording(false)
        setVideoPreview(true)
        var aab;
        var buffersReady;
        var workerReady;
        var posted;

        var fileReader = new FileReader();
        fileReader.onload = function () {
          aab = this.result;
          postMessage();
        };
        fileReader.readAsArrayBuffer(videoBlob);

        if (!worker) {
          worker = processInWebWorker();
        }

        worker.onmessage = function (event) {
          var message = event.data;
          if (message.type == "ready") {

            workerReady = true;
            if (buffersReady)
              postMessage();
          } else if (message.type == "stdout") {
          } else if (message.type == "start") {
          } else if (message.type == "done") {
            var result = message.data[0];
            var videoFile = new File([result.data], 'test.mp4', {
              type: 'video/mpeg4'
            });
            setVideo_obj(videoFile)


          }
        };
        const postMessage = function () {
          posted = true;

          worker.postMessage({
            type: 'command',
            arguments: '-i video.webm -c:v mpeg4 -b:v 6400k -strict experimental output.mp4'.split(' '),
            // arguments: 'ffmpeg -i video.webm -movflags faststart -profile:v high -level 4.2 video.mp4',
            files: [
              {
                data: new Uint8Array(aab),
                name: 'video.webm'
              }
            ]
          });

        };
      }


    }
  }