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

  • OBS and OBS Portable Recording Into Same File Simultaneously

    26 juin 2020, par aerodavo

    Corrupted video file, FFprobe output text file, and FFmpeg output text files are all available to download here :
https://drive.google.com/drive/folders/1R0Y5plgkhTWWFNNKgSNJ5yitpKQbIKgg?usp=sharing

    


    I'm hoping there is a way to extract good video and audio from this video file, this was for a very important job that is impossible to do again. The video linked is a 1 minute recreation of the exact same problem... the actual video file is confidential (for a legal court case) and is much longer/larger. I used the exact same settings, the only difference was the window OBS was capturing (I used a YouTube video as opposed to the videoconference software window used for the deposition).

    


    Here's what happened :

    


    In OBS and OBS Portable, I had the save location set to the same exact folder (this was not how I intended it to be, but I made a last minute change to accommodate what I suspected was a faulty hard drive). I also had a hotkey to start recording on both apps simultaneously. I left the auto-naming scheme in place for both instances of OBS since they were supposed to be saving to two totally different external hard drives. I have since changed the auto-naming so it won't happen again, but this perfect storm resulted in both recordings being written into a single file (see link above), instead of two files as intended. It is unplayabe in VLC.

    


    I ran an FFprobe (available via link above), and found that there are 8 streams in the file. Each file should have had 4 streams (1 video and 3 audio streams per my setup in OBS), so at first glance it looks like all the data is there in some form/arrangement.

    


    I tried to map the 0:0 stream to a new file and tried the same thing with the 0:4 stream (these are the video streams), but did not have any luck extracting good video. Here are the two things I ran (again see link above for text files with full FFmpeg ouput of each) :

    


    ffmpeg -i C :\Users\David\Videos\2020-06-23_17-39-32_corrupted.mkv -map 0:0 -c copy C :\Users\David\Videos\2020-06-23_17-39-32_corrupted_map0-0.mkv

    


    ffmpeg -i C :\Users\David\Videos\2020-06-23_17-39-32_corrupted.mkv -map 0:4 -c copy C :\Users\David\Videos\2020-06-23_17-39-32_corrupted_map0-4.mkv

    


    It seems the audio is intact, as I was able to map one of the audio streams into a wav file... although there seemed to be extra/repeated audio tacked onto where the video/audio should have ended...

    


    It looks to me like both video streams got written into stream 0:0, while stream 0:4 looks empty (because this map results in a very small file). However the thing that's weird (and maybe promising) is that when I play the corrupted file in VLC, it mostly looks like smeared digital colors, but if I click around to different times in the video, it sometimes shows good video, even though it won't show any good video if you just play it from the beginning.

    


    My life would saved if there is a way to extract good video/audio from this corrupted file. Any help would be greatly appreciated, thanks in advance !

    


  • Unable to transfer continuous FFmpeg buffer to client browser using node.js

    10 décembre 2016, par chintitomasud

    I have tried to process a Video file transcoding on demand by using FFmpeg to transfer the chunk(buffer) to the client browser as mp4 format but I failed to show the mp4 content on html5 video player . Without using ffmpeg all code run properly . I have replaced createReadSteam with ffmpeg . Using it I have faced some problems. FFmpeg is new to me and I ’m kind of confused with spawn method. When I post a url path it shows the following text on the command line

    Spawning new process /samiul113039/1080.mp4:GET

    piping ffmpeg output to client, pid 10016

    HTTP connection disrupted, killing ffmpeg : 10016

    Spawning new process /samiul113039/1080.mp4:GET

    piping ffmpeg output to client, pid 4796

    HTTP connection disrupted, killing ffmpeg : 4796

    ffmpeg didn’t quit on q, sending signals ffmpeg has exited : 10016,

    code null ffmpeg didn’t quit on q, sending signals ffmpeg has exited :
    4796, code nul

    =

    var fs=require('fs');

    var url=require("url");
    var urlvalue="http://csestudents.uiu.ac.bd/samiul113039/1080.mp4";


    var parseurl=url.parse(urlvalue);

    var HDHomeRunIP = parseurl.hostname;
    var HDHomeRunPort = parseurl.port;
    var childKillTimeoutMs = 1000;

    var parseArgs = require('minimist')(process.argv.slice(2));

    // define startsWith for string
    if (typeof String.prototype.startsWith != 'function') {
     // see below for better implementation!
     String.prototype.startsWith = function (str){
       return this.indexOf(str) == 0;
     };
    }
    // Called when the response object fires the 'close' handler, kills ffmpeg
    function responseCloseHandler(command) {
     if (command.exited != true) {
       console.log('HTTP connection disrupted, killing ffmpeg: ' + command.pid);
       // Send a 'q' which signals ffmpeg to quit.
       // Then wait half a second, send a nice signal, wait another half second
       // and send SIGKILL
       command.stdin.write('q\n');
       command.stdin.destroy();
       // install timeout and wait
       setTimeout(function() {
         if (command.exited != true) {
           console.log('ffmpeg didn\'t quit on q, sending signals');
           // still connected, do safe sig kills
           command.kill();
           try {
             command.kill('SIGQUIT');
           } catch (err) {}
           try {
             command.kill('SIGINT');
           } catch (err) {}
           // wait some more!
           setTimeout(function() {
             if (command.exited != true) {
               console.log('ffmpeg didn\'t quit on signals, sending SIGKILL');
               // at this point, just give up and whack it
               try {
                 command.kill('SIGKILL');
               } catch (err) {}
             }
           }, childKillTimeoutMs);
         }    
       }, childKillTimeoutMs);
     }
    }

    // Performs a proxy. Copies data from proxy_request into response
    function doProxy(request,response,http,options) {
     var proxy_request = http.request(options, function (proxy_response) {
       proxy_response.on('data', function(chunk) {
         response.write(chunk, 'binary');
       });
       proxy_response.on('end', function() {
         response.end();
       });
       response.writeHead(proxy_response.statusCode, proxy_response.headers);
     });
     request.on('data', function(chunk) {
       proxy_request.write(chunk, 'binary');
     });
     // error handler
     proxy_request.on('error', function(e) {
       console.log('problem with request: ' + e.message);
       response.writeHeader(500);
       response.end();
     });

     proxy_request.end();
    }

    var child_process = require('child_process');
    var auth = require('./auth');
    // Performs the transcoding after the URL is validated
    function doTranscode(request,response) {
     //res.setHeader("Accept-Ranges", "bytes");
     response.setHeader("Accept-Ranges", "bytes");
     response.setHeader("Content-Type", "video/mp4");        
     response.setHeader("Connection","close");
     response.setHeader("Cache-Control","no-cache");
     response.setHeader("Pragma","no-cache");

     // always write the header
     response.writeHeader(200);

     // if get, spawn command stream it
     if (request.method == 'GET') {
       console.log('Spawning new process ' + request.url + ":" + request.method);

    var command = child_process.spawn('ffmpeg',
                                         ['-i','http://csestudents.uiu.ac.bd/samiul113039/1080.mp4','-f','mpegts','-'],
                                         { stdio: ['pipe','pipe','ignore'] });

        command.exited = false;
       // handler for when ffmpeg dies unexpectedly
       command.on('exit',function(code,signal) {
         console.log('ffmpeg has exited: ' + command.pid + ", code " + code);
         // set flag saying we've quit
         command.exited = true;
         response.end();
       });
       command.on('error',function(error) {
         console.log('ffmpeg error handler - unable to kill: ' + command.pid);
         // on well, might as well give up
         command.exited = true;
         try {
           command.stdin.close();
         } catch (err) {}
         try {
           command.stdout.close();
         } catch (err) {}
         try {
           command.stderr.close();
         } catch (err) {}
         response.end();
       });
       // handler for when client closes the URL connection - stop ffmpeg
       response.on('end',function() {
        responseCloseHandler(command);
       });
       // handler for when client closes the URL connection - stop ffmpeg
       response.on('close',function() {
         responseCloseHandler(command);
       });

       // now stream
       console.log('piping ffmpeg output to client, pid ' + command.pid);
       command.stdout.pipe(response);
       command.stdin.on('error',function(err) {
         console.log("Weird error in stdin pipe ", err);
         response.end();
       });
       command.stdout.on('error',function(err) {
         console.log("Weird error in stdout pipe ",err);
         response.end();
       });
     }
     else {
       // not GET, so close response
       response.end();
     }
    }

    // Load the http module to create an http server.
    var http = require('http');

    // Configure our HTTP server to respond with Hello World to all requests.
    var server = http.createServer(function (request, response) {
     //console.log("New connection from " + request.socket.remoteAddress + ":" + request.url);

     if (auth.validate(request,response)) {
       // first send a HEAD request to our HD Home Run with the same url to see if the address is valid.
       // This prevents an ffmpeg instance to spawn when clients request invalid things - like robots.txt/etc
       var options = {method: 'HEAD', hostname: HDHomeRunIP, port: HDHomeRunPort, path: request.url};
       var req = http.request(options, function(res) {
         // if they do a get, and it returns good status
         if (request.method == "GET" &&
             res.statusCode == 200 &&
             res.headers["content-type"] != null &&
             res.headers["content-type"].startsWith("video")) {
           // transcode is possible, start it now!
           doTranscode(request,response);
         }
         else {
           // no video or error, cannot transcode, just forward the response from the HD Home run to the client
           if (request.method == "HEAD") {
             response.writeHead(res.statusCode,res.headers);
             response.end();
           }
           else {
             // do a 301 redirect and have the device response directly  

             // just proxy it, that way browser doesn't redirect to HDHomeRun IP but keeps the node.js server IP
             options = {method: request.method, hostname: HDHomeRunIP, /* port: HDHomeRunPort, */path: request.url};
             doProxy(request,response,http,options);
           }
         }
       });
       req.on('error', function(e) {
         console.log('problem with request: ' + e.message);
         response.writeHeader(500);
         response.end();
       });
       // finish the client request, rest of processing done in the async callbacks
       req.end();
     }
    });

    // turn on no delay for tcp
    server.on('connection', function (socket) {
     socket.setNoDelay(true);
    });
    server.listen(7000);

    stdio : [’pipe’,’pipe’,’ignore’]
    Actually the code was written by someone. i have just modified the code.
    [’pipe’,’pipe’,’ignore’] what does pipe,pipe.ignore mean here,

  • Strange error with ffmpeg and unoconv in python script

    27 mai 2015, par Avery Ripoll Crocker

    I am creating a python script that can be used by other people to convert files. However when I use this script I keep getting a weird error when I run the subprocess for unoconv, this error is :

    Traceback (most recent call last):
     File "conversion.py", line 15, in <module>
       check_call(["unoconv", "-f", Fileextension, filename])
     File "/usr/lib/python2.7/subprocess.py", line 540, in check_call
       raise CalledProcessError(retcode, cmd)
    subprocess.CalledProcessError: Command '['unoconv', '-f', '.pdf', 'journal.doc']' returned non-zero exit status 1
    </module>

    I have looked through various resources for this, but the one answer I have been receiving is that I must have set up the unoconv line incorrectly. I have checked several times that the code is correct, and it is. The other peculiar thing is that my code for ffmpeg works. Does anybody have an idea as to why this happens.

    Here is my program :

    print "If at any point you wish to quit the program hit Ctrl + C"

    filetype = raw_input("What kind of file would you like to convert? Audio, Image, Video or Document: ")

    if filetype == "Document":
      path = raw_input("Please drag and drop the directory in which the file is stored into the terminal:")
      os.chdir(path[1:-2])
      filename = raw_input("Please enter the name of the file you would like to convert, including the file-type. e.g. test.txt, however please do make sure that the file-name does not have any spaces:")
      Fileextension = raw_input("What filetype would you like the program to convert your file to. E.g. .txt: ")
      from subprocess import check_call
      check_call(["unoconv", "-f", Fileextension, filename])

    elif filetype == "Audio":
      path = raw_input("Please drag and drop the directory in which the file is stored into the terminal:")
      os.chdir(path[1:-2])
      filename = raw_input("Please enter the name of the file you would like to convert, including the file-type. e.g. test.txt, however please do make sure that the file-name does not have any spaces:")
      Fileextension = raw_input("What filetype would you like the program to convert your file to. E.g. .mp3: ")
      body, ext = os.path.splitext("filename")
      from subprocess import check_call
      check_call(["ffmpeg" ,"-i", filename, body + Fileextension])

    elif filetype == "Video":
      path = raw_input("Please drag and drop the directory in which the file is stored into the terminal:")
      os.chdir(path[1:-2])
      filename = raw_input("Please enter the name of the file you would like to convert, including the file-type. e.g. test.txt, however please do make sure that the file-name does not have any spaces:")
      Fileextension = raw_input("What filetype would you like the program to convert your file to. E.g. .mp4: ")
      body, ext = os.path.splitext("filename")
      from subprocess import check_call
      check_call(["ffmpeg" ,"-i", filename, body + Fileextension])

    elif filetype == "Image":
      path = raw_input("Please drag and drop the directory in which the file is stored into the terminal:")
      os.chdir(path[1:-2])
      filename = raw_input("Please enter the name of the file you would like to convert, including the file-type. e.g. test.txt, however please do make sure that the file-name does not have any spaces:")
      Fileextension = raw_input("What filetype would you like the program to convert your file to. E.g. .Jpeg: ")
      body, ext = os.path.splitext("filename")
      from subprocess import check_call    
      check_call(["ffmpeg" ,"-i", filename, body + Fileextension])