Recherche avancée

Médias (1)

Mot : - Tags -/illustrator

Autres articles (104)

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

  • Websites made ​​with MediaSPIP

    2 mai 2011, par

    This page lists some websites based on MediaSPIP.

  • Creating farms of unique websites

    13 avril 2011, par

    MediaSPIP platforms can be installed as a farm, with a single "core" hosted on a dedicated server and used by multiple websites.
    This allows (among other things) : implementation costs to be shared between several different projects / individuals rapid deployment of multiple unique sites creation of groups of like-minded sites, making it possible to browse media in a more controlled and selective environment than the major "open" (...)

Sur d’autres sites (14069)

  • building voice recorder using ffmpeg and html5

    15 juillet 2014, par user3789242

    I’m building a voice recorder program using html5 I have managed so far to record the voice and save the audio file as .wav I also can convert that file to a selected file format using ffmpeg. what I want to do is to let the user choose the format before recording so that when saving the audio file will be converted directly using ffmpeg into the selected format.I have been looking for demos for weeks and can’t find anything if someone can help me with a demo please.
    thank you in advance
    this is my javascript code for uploading the saved audio as .wav in a folder named upload, and the fmpeg conversion, i’m missing the call of the file saved in the folder please :

    function handleWAV(blob) {

    if (currentEditedSoundIndex !== -1) {
    $('#inFile2 tr:nth-child(' + (currentEditedSoundIndex + 1) + ')').remove();

    }

    var url = URL.createObjectURL(blob);

    var li = document.createElement('li');
    var au = document.createElement('audio');
    var hf = document.createElement('a');

    au.controls = true;
    au.src = url;
    hf.href = url;
    hf.download = 'audio_recording_' + new Date().getTime() + '.wav';
    hf.innerHTML = hf.download;
    li.appendChild(au);
    li.appendChild(hf);
    inFile2.appendChild(li);


    fileName=hf.download;

    var reader = new FileReader();
    reader.onload = function(event){
       var fd = new FormData();
       var Name = encodeURIComponent('audio_recording_' + new Date().getTime() + '.wav');
       console.log("name = " + Name);
       fd.append('fname', Name);
       fd.append('data', event.target.result);
       $.ajax({
           type: 'POST',
           url: 'upload.php',
           data: fd,
           processData: false,
           contentType: false,
           success: function(data){
               //console.log(data);
           }
       });
    };      
    reader.readAsDataURL(blob);



    var fileBuffer;



    // create ffmpeg worker
    function getFFMPEGWorker() {


        var ffmpegWorker = new Worker('worker.js');

        ffmpegWorker.addEventListener('message', function(event) {
            var message = event.data;
            console.log(message.type);
            if (message.type === "ready" && window.File && window.FileList && window.FileReader) {
                // script loaded, hide loader

            } else if (message.type == "stdout") {
                console.log(message.data);
            } else if (message.type == "stderr") {
                console.log(message.data);
            } else if (message.type == "done") {
                var code = message.data.code;
                console.log(code);
                console.log(message.data);
                var outFileNames = Object.keys(message.data.outputFiles);

                console.log(outFileNames);
                if (code == 0 && outFileNames.length) {
                    var outFileName = outFileNames[0];
                    console.log(outFileName);
                    var outFileBuffer = message.data.outputFiles[outFileName];
                    console.log(outFileBuffer);
                    var src = url;
                    console.log(url);
                    $("#downloadLink2").attr('href', src);
                    $("#download2").show();
                } else {
                    $("#error").show();
                }

            }
        }, false);
        return ffmpegWorker;
    }

    // create ffmpeg worker
    var ffmpegWorker = getFFMPEGWorker();
    var ffmpegRunning = false;
    if (ffmpegRunning) {
        ffmpegWorker.terminate();
        ffmpegWorker = getFFMPEGWorker();
    }
    ffmpegRunning = true;



    // hide download div
    $("#download2").hide();

    // change download file name
    var fileNameExt = fileName.substr(fileName.lastIndexOf('.') + 1);

    var outFileName = fileName.substr(0, fileName.lastIndexOf('.')) + "." + getOutFormat();

    $("#downloadLink2").attr("download2", outFileName);
    $("#downloadLink2").text(outFileName);

    var arguments = [];
    arguments.push("-i");
    arguments.push(fileName);

    arguments.push("-b:a");
    arguments.push(getBitrate());

    switch (getOutFormat()) {
        case "mp3":
            arguments.push("-acodec");
            arguments.push("libmp3lame");
            arguments.push("out.mp3");
            break;

        case "wma":
            arguments.push("-acodec");
            arguments.push("wmav1");
            arguments.push("out.asf");
            break;

        case "pcm":
            arguments.push("-f");
            arguments.push("s16le");
            arguments.push("-acodec");
            arguments.push("pcm_s16le");
            arguments.push("out.pcm");
    }

    ffmpegWorker.postMessage({
        type: "command",
        arguments: arguments,
        files: [
            {
                "name": fileName,
                "buffer": fileBuffer
            }
        ]
    });


    function getOutFormat() {
    return $('input[name=format]:checked').val();
    }

    function getBitrate() {
    return $('input[name=bitrate]:checked').val();
    }

    function readInputFile(file) {


    // load file content
    var reader = new FileReader();
    reader.onload = function(e) {

        fileName = file.name;
        console.log(fileName);
        fileBuffer = e.target.result;
    }
    reader.readAsArrayBuffer(file);

    }



    function handleFileSelect(event) {
    var files = event.target.files; // FileList object
    console.log(files);
    // files is a FileList of File objects. display first file name
    file = files[0];
    console.log(file);
    if (file) {

        readInputFile(file);
        console.log(file);

    }
    }

    // setup input file listeners
    el=document.getElementById('inFile2');

    el.addEventListener('change',handleFileSelect, true);

    }

    note that this code was taken from a demo where the user upload the file to be converted by browisng it, I just want to cancel the browsing process and upload the saved file directly

  • How can I transcode a file with FFMPEG and stream the output file in the response of a Java servlet ?

    6 octobre 2012, par user1700589

    Basically, this is what I'm trying to do :
    1. User passes a URL as a GET parameter to my servlet.
    2. Servlet uses a ProcessBuilder to convert the media contained in that URL to a valid media format (ie : MP3).
    3. The servlet streams the output file being transcoded by FFMPEG back to the browser.

    1 and 2 work fine, but it is 3 I am having a problem with. The best I can do is create a FileInputStream to the output file being transcoded and send that as the response but it is not working. My guess is that it is because the file is being written as I'm trying to stream it.

    Is there anyway to intercept the output file argument in FFMPEG and read it into an InputStream ? In my mind it does not seem that it should be difficult to take input file A, transcode it to output file B, and then stream output file B back to the client, on the fly.

    ProcessBuilder pb = new ProcessBuilder("ffmpeg.exe", "-i", url, "file.mp3");
       Process p = pb.start();

       final InputStream inStream = p.getErrorStream();

       new Thread(new Runnable() {

       public void run() {
               InputStreamReader reader = new InputStreamReader(inStream);
               Scanner scan = new Scanner(reader);
               while (scan.hasNextLine()) {
                   System.out.println(scan.nextLine());
               }
           }
       }).start();

       ServletOutputStream stream = null;
       BufferedInputStream buf = null;
       try {

           stream = response.getOutputStream();
           File mp3 = new File(file.mp3");

           //set response headers
           response.setContentType("audio/mpeg");

           response.addHeader("Content-Disposition", "attachment; filename=file.mp3");

           response.setContentLength(-1);

           //response.setContentLength((int) mp3.length());

           FileInputStream input = new FileInputStream(mp3);
           buf = new BufferedInputStream(input);
           int readBytes = 0;
           //read from the file; write to the ServletOutputStream
           while ((readBytes = buf.read()) != -1) {
               stream.write(readBytes);
           }
       } catch (IOException ioe) {
           throw new ServletException(ioe.getMessage());
       } finally {
           if (stream != null) {
               stream.close();
           }
           if (buf != null) {
               buf.close();
           }
       }
  • avcodec/bitpacked_dec : optimize bitpacked_decode_yuv422p10

    5 mai 2023, par Devin Heitmueller
    avcodec/bitpacked_dec : optimize bitpacked_decode_yuv422p10
    

    Rework the code a bit to speed up the 10-bit bitpacked decoding
    routine. This is probably about as fast as I can get it without
    switching to assembly language.

    Demonstratable with :

    ./ffmpeg -f lavfi -i "smptehdbars=size=3840x2160" -c bitpacked -f image2 -frames:v 1 source.yuv
    ./ffmpeg -f bitpacked -pix_fmt yuv422p10le -s 3840x2160 -c:v bitpacked -i source.yuv -pix_fmt yuv422p10le out.yuv

    On my development system, it went from 80ms for a 2160p frame
    down to 20ms (i.e. a 4X speedup). Good enough for now, I hope...

    Comments from Marton :

    Originally on my system better performance could be achieved by simply
    switching to the cached bitstream reader, but for Devin it was slower than
    his direct byte operations.

    I changed the order of writing output from u/y/v/y to u/v/y/y, and that made
    the code faster than the cached bitstream reader on my system as well.

    TIMER measurement of the decode loop on Ryzen 5 3600 with command line :

    ./ffmpeg -stream_loop 256 -threads 1 -f bitpacked -pix_fmt yuv422p10le -s 3840x2160 -c:v bitpacked -i source.yuv -pix_fmt yuv422p10le -f null none -loglevel error

    Before : 823204127 decicycles in YUV, 256 runs, 0 skips
    After : 315070524 decicycles in YUV, 256 runs, 0 skips

    Signed-off-by : Devin Heitmueller <dheitmueller@ltnglobal.com>
    Signed-off-by : Marton Balint <cus@passwd.hu>

    • [DH] libavcodec/bitpacked_dec.c