Advanced search

Medias (3)

Tag: - Tags -/collection

Other articles (37)

  • Contribute to a better visual interface

    13 April 2011

    MediaSPIP is based on a system of themes and templates. Templates define the placement of information on the page, and can be adapted to a wide range of uses. Themes define the overall graphic appearance of the site.
    Anyone can submit a new graphic theme or template and make it available to the MediaSPIP community.

  • Qu’est ce qu’un éditorial

    21 June 2013, by

    Ecrivez votre de point de vue dans un article. Celui-ci sera rangé dans une rubrique prévue à cet effet.
    Un éditorial est un article de type texte uniquement. Il a pour objectif de ranger les points de vue dans une rubrique dédiée. Un seul éditorial est placé à la une en page d’accueil. Pour consulter les précédents, consultez la rubrique dédiée.
    Vous pouvez personnaliser le formulaire de création d’un éditorial.
    Formulaire de création d’un éditorial Dans le cas d’un document de type éditorial, les (...)

  • Dépôt de média et thèmes par FTP

    31 May 2013, by

    L’outil MédiaSPIP traite aussi les média transférés par la voie FTP. Si vous préférez déposer par cette voie, récupérez les identifiants d’accès vers votre site MédiaSPIP et utilisez votre client FTP favori.
    Vous trouverez dès le départ les dossiers suivants dans votre espace FTP : config/ : dossier de configuration du site IMG/ : dossier des média déjà traités et en ligne sur le site local/ : répertoire cache du site web themes/ : les thèmes ou les feuilles de style personnalisées tmp/ : dossier de travail (...)

On other websites (3462)

  • electron fluent-ffmpeg mergeToFile() command promise not triggering

    12 September 2020, by Martin

    I am trying to use fluent-ffmpeg with my electron app to concatenate multiple audio files together with an image in a video. So if i have three files:

    


    song1.mp3 1:00
song2.mp3 0:30
song3.mp3 2:00
front.jpg

    


    I could create output.mp4 which would be 3:30 seconds long, and play each file one after the other in order. With front.jpg set as the background image.

    


    I am trying to create the concatenated audio file first for this video, then I can just render a vid with two inputs; image and the 3:30second long concatenated audio file. But I'm having difficulty getting my electron app to wait for the ffmpeg job to run and complete.

    


    I know how to do all of these ffmpeg jobs on the command-line, but I've been following this guide for how to package ffmpeg into an electron app that can run on mac/win10/linux environments. I'm developing it on win10 right now.
gur.com/LtykP.png

    


    I have a button:&#xA;<button>FULLALBUM</button>

    &#xA;

    that when I click runs the fullAlbum() function that calls combineMp3FilesOrig to run the actual ffmpeg job:

    &#xA;

    async function fullAlbum(uploadName) {&#xA;    //document.getElementById("buttonId").disabled = true;&#xA;&#xA;    //get table&#xA;    var table = $(`#upload_${uploadNumber}_table`).DataTable()&#xA;    //get all selected rows&#xA;    var selectedRows = table.rows( &#x27;.selected&#x27; ).data()&#xA;    //get outputFile location&#xA;    var path = require(&#x27;path&#x27;);&#xA;    var outputDir = path.dirname(selectedRows[0].audioFilepath)&#xA;    //create outputfile&#xA;    var timestamp = new Date().getUTCMilliseconds();&#xA;    let outputFilepath = `${outputDir}/output-${timestamp}.mp3` &#xA;&#xA;    &#xA;    console.log(&#x27;fullAlbum() button pressed: &#x27;, timestamp)&#xA;&#xA;    await combineMp3FilesOrig(selectedRows, outputFilepath, &#x27;320k&#x27;, timestamp);&#xA;    //document.getElementById("buttonId").disabled = false;&#xA;&#xA;    console.log(`fullAlbum() /output-${timestamp}.mp3 should be created now`)&#xA;}&#xA;&#xA;function combineMp3FilesOrig(selectedRows, outputFilepath, bitrate, timestamp) {&#xA;    console.log(`combineMp3FilesOrig(): ${outputFilepath}`)&#xA;    &#xA;    //begin get ffmpeg info&#xA;    const ffmpeg = require(&#x27;fluent-ffmpeg&#x27;);&#xA;    //Get the paths to the packaged versions of the binaries we want to use&#xA;    const ffmpegPath = require(&#x27;ffmpeg-static&#x27;).replace(&#x27;app.asar&#x27;,&#x27;app.asar.unpacked&#x27;);&#xA;    const ffprobePath = require(&#x27;ffprobe-static&#x27;).path.replace(&#x27;app.asar&#x27;,&#x27;app.asar.unpacked&#x27;);&#xA;    //tell the ffmpeg package where it can find the needed binaries.&#xA;    ffmpeg.setFfmpegPath(ffmpegPath);&#xA;    ffmpeg.setFfprobePath(ffprobePath);&#xA;    //end set ffmpeg info&#xA;&#xA;    //create ffmpeg command&#xA;    console.log(`combineMp3FilesOrig(): create command`)&#xA;    const command = ffmpeg();&#xA;    //set command inputs&#xA;    command.input(&#x27;C:\\Users\\marti\\Documents\\martinradio\\uploads\\CharlyBoyUTurn\\5. Akula (Club Mix).flac&#x27;)&#xA;    command.input(&#x27;C:\\Users\\marti\\Documents\\martinradio\\uploads\\CharlyBoyUTurn\\4. Civilian Barracks.flac&#x27;)&#xA;&#xA;    return new Promise((resolve, reject) => {&#xA;        console.log(`combineMp3FilesOrig(): command status logging`)&#xA;        command.on(&#x27;progress&#x27;, function(progress) {&#xA;            console.info(`Processing : ${progress.percent} % done`);&#xA;        })&#xA;        .on(&#x27;codecData&#x27;, function(data) {&#xA;            console.log(&#x27;codecData=&#x27;,data);&#xA;        })&#xA;        .on(&#x27;end&#x27;, function() {&#xA;            console.log(&#x27;file has been converted succesfully; resolve() promise&#x27;);&#xA;            resolve();&#xA;        })&#xA;        .on(&#x27;error&#x27;, function(err) {&#xA;            console.log(&#x27;an error happened: &#x27; &#x2B; err.message, &#x27;, reject()&#x27;);&#xA;            reject(err);&#xA;        })&#xA;        console.log(`combineMp3FilesOrig(): add audio bitrate to command`)&#xA;        command.audioBitrate(bitrate)&#xA;        console.log(`combineMp3FilesOrig(): tell command to merge inputs to single file`)&#xA;        command.mergeToFile(outputFilepath);&#xA;        console.log(`combineMp3FilesOrig(): end of promise`)&#xA;    });&#xA;    console.log(`combineMp3FilesOrig(): end of function`)&#xA;}&#xA;

    &#xA;

    When I click my button once, my console.logs show the promise is entered, the command is created, but the function just ends without waiting for a resolve();&#xA;Waiting a couple minutes doesnt change anything.

    &#xA;

    enter image description here

    &#xA;

    If I press the button again:

    &#xA;

    enter image description here

    &#xA;

    A new command gets created, reaches the end of the promise, but this time actually starts, and triggers the previous command to start. Both jobs then run and their files are rendered at the correct length (12:08) and the correct quality (320k)

    &#xA;

    Is there something with my promise I need to fix involving async functions and promises in an electron app? I tried editing my ffmpeg command to include

    &#xA;

    command.run()

    &#xA;

    At the end of my promise to ensure it gets triggered; but that leads to an err in console saying Uncaught (in promise) Error: No output specified because apparently in fluent-ffmpeg command.mergeToFile(outputFilepath); isnt good enough and I need to include .output(outputFilepath) as well. If I change command.run() to command.output(outputFilepath).run(), when i click my button, the ffmpeg job gets triggered and rendered perfectly fine. EXCEPT THAT THE FILE IS ALWAYS 128kbps

    &#xA;

    So I'm trying to figure out why my included code block, my ffmpeg command doesn't run the first time when its created.

    &#xA;

  • Revision 3330: Un élément de menu pour la configuration

    25 April 2010, by kent1 — Log

    Un élément de menu pour la configuration

  • Revision 35507: une erreur grossière de caractères en trop

    23 February 2010, by kent1@… — Log

    une erreur grossière de caractères en trop