Recherche avancée

Médias (1)

Mot : - Tags -/net art

Autres articles (68)

  • Publier sur MédiaSpip

    13 juin 2013

    Puis-je poster des contenus à partir d’une tablette Ipad ?
    Oui, si votre Médiaspip installé est à la version 0.2 ou supérieure. Contacter au besoin l’administrateur de votre MédiaSpip pour le savoir

  • Support audio et vidéo HTML5

    10 avril 2011

    MediaSPIP utilise les balises HTML5 video et audio pour la lecture de documents multimedia en profitant des dernières innovations du W3C supportées par les navigateurs modernes.
    Pour les navigateurs plus anciens, le lecteur flash Flowplayer est utilisé.
    Le lecteur HTML5 utilisé a été spécifiquement créé pour MediaSPIP : il est complètement modifiable graphiquement pour correspondre à un thème choisi.
    Ces technologies permettent de distribuer vidéo et son à la fois sur des ordinateurs conventionnels (...)

  • De l’upload à la vidéo finale [version standalone]

    31 janvier 2010, par

    Le chemin d’un document audio ou vidéo dans SPIPMotion est divisé en trois étapes distinctes.
    Upload et récupération d’informations de la vidéo source
    Dans un premier temps, il est nécessaire de créer un article SPIP et de lui joindre le document vidéo "source".
    Au moment où ce document est joint à l’article, deux actions supplémentaires au comportement normal sont exécutées : La récupération des informations techniques des flux audio et video du fichier ; La génération d’une vignette : extraction d’une (...)

Sur d’autres sites (11091)

  • Nodejs ffmpeg "The input file path can not be empty" error, but files exist

    29 octobre 2022, par 0szi

    I'm trying to merge an audio file with a video file from the same source (Youtube)

    


    In the following code I first read in the console parameters wirh commander then i define the videoOutput dir and download the highset res. video from youtube with node-ytdl-core. After that I download the audio for the video. and in the callback of the video.on("end", ....)
i call the function merge()

    


    const path = require(&#x27;path&#x27;);&#xA;const fs = require(&#x27;fs&#x27;);&#xA;const readline = require("readline");&#xA;const ytdl = require(&#x27;ytdl-core&#x27;);&#xA;const { program } = require(&#x27;commander&#x27;);&#xA;const ffmpeg = require(&#x27;ffmpeg&#x27;);&#xA;&#xA;program&#xA;    .option("--url, --url <url>", "Youtube video url")&#xA;    .option("--name, --name <name>", "Name of the video in hard drive")&#xA;&#xA;program.parse(process.argv);&#xA;&#xA;&#xA;const options = program.opts();&#xA;let url = options.url;&#xA;let name = options.name;&#xA;&#xA;let videoOutput = path.resolve(`./video${name}.mp4`);&#xA;&#xA;let video = ytdl(url, {&#xA;  quality: "highestvideo"&#xA;});&#xA;&#xA;let starttime = 0;&#xA;&#xA;video.pipe(fs.createWriteStream(videoOutput));&#xA;&#xA;video.once(&#x27;response&#x27;, () => {&#xA;  starttime = Date.now();&#xA;});&#xA;&#xA;video.on(&#x27;progress&#x27;, (chunkLength, downloaded, total) => {&#xA;    const percent = downloaded / total;&#xA;    const downloadedMinutes = (Date.now() - starttime) / 1000 / 60;&#xA;    const estimatedDownloadTime = (downloadedMinutes / percent) - downloadedMinutes;&#xA;    readline.cursorTo(process.stdout, 0);&#xA;    process.stdout.write(`${(percent * 100).toFixed(2)}% downloaded `);&#xA;    process.stdout.write(`(${(downloaded / 1024 / 1024).toFixed(2)}MB of ${(total / 1024 / 1024).toFixed(2)}MB)\n`);&#xA;    process.stdout.write(`running for: ${downloadedMinutes.toFixed(2)}minutes`);&#xA;    process.stdout.write(`, estimated time left: ${estimatedDownloadTime.toFixed(2)}minutes `);&#xA;    readline.moveCursor(process.stdout, 0, -1);&#xA;  });&#xA;&#xA;  video.on(&#x27;end&#x27;, () => {&#xA;    process.stdout.write(&#x27;\n\n&#x27;);&#xA;  });&#xA;&#xA;&#xA;//   repeat for audio&#xA;video = ytdl(url, {&#xA;  quality: "highestaudio"&#xA;});&#xA;  &#xA;starttime = 0;&#xA;&#xA;let audioOutput = path.resolve(`./audio${name}.mp3`);&#xA;&#xA;video.pipe(fs.createWriteStream(audioOutput));&#xA;&#xA;video.once(&#x27;response&#x27;, () => {&#xA;  starttime = Date.now();&#xA;});&#xA;&#xA;video.on(&#x27;progress&#x27;, (chunkLength, downloaded, total) => {&#xA;    const percent = downloaded / total;&#xA;    const downloadedMinutes = (Date.now() - starttime) / 1000 / 60;&#xA;    const estimatedDownloadTime = (downloadedMinutes / percent) - downloadedMinutes;&#xA;    readline.cursorTo(process.stdout, 0);&#xA;    process.stdout.write(`${(percent * 100).toFixed(2)}% downloaded `);&#xA;    process.stdout.write(`(${(downloaded / 1024 / 1024).toFixed(2)}MB of ${(total / 1024 / 1024).toFixed(2)}MB)\n`);&#xA;    process.stdout.write(`running for: ${downloadedMinutes.toFixed(2)}minutes`);&#xA;    process.stdout.write(`, estimated time left: ${estimatedDownloadTime.toFixed(2)}minutes `);&#xA;    readline.moveCursor(process.stdout, 0, -1);&#xA;  });&#xA;&#xA;&#xA;function merge(){&#xA;    ffmpeg()&#xA;    .input("./videotest.mp4") //your video file input path&#xA;    .input("./audiotest.mp3") //your audio file input path&#xA;    .output("./finished.mp4") //your output path&#xA;    .outputOptions([&#x27;-map 0:v&#x27;, &#x27;-map 1:a&#x27;, &#x27;-c:v copy&#x27;, &#x27;-shortest&#x27;])&#xA;    .on(&#x27;start&#x27;, (command) => {&#xA;      console.log(&#x27;TCL: command -> command&#x27;, command)&#xA;    })&#xA;    .on(&#x27;error&#x27;, (error) => console.log("errrrr",error))&#xA;    .on(&#x27;end&#x27;,()=>console.log("Completed"))&#xA;    .run()  &#xA;}&#xA;&#xA;video.on(&#x27;end&#x27;, () => {&#xA;  process.stdout.write(&#x27;\n\n&#x27;);&#xA;  merge();&#xA;});&#xA;&#xA;</name></url>

    &#xA;

    But even though the files are there ffmpeg throws me this error :&#xA;enter image description here

    &#xA;

    I also tried this in the video-end callback, because maybe the audio is finished downloading before the video, still doesn't work. I've also tried to rename the outputDirs for the files and keep the old files and rerun the script so the files are 100% there. Still doesn't work.

    &#xA;

    I have also tried absolute paths ("C :/..." also with backslash "C :\...") but I still get the error message that the input file path can't be empty.

    &#xA;

    Appreciate any piece of advise or help !

    &#xA;

  • ffmpeg crashes with "Internal bug", "Failed to inject frame into filter network" while trying to convert PNG files into an animated gif using filters

    12 août 2022, par EigentlichOracler

    ffmpeg version : ffmpeg version 4.2.7-0ubuntu0.1

    &#xA;

    Kernel : 5.4.0-122-lowlatency #138-Ubuntu SMP PREEMPT x86_64 x86_64 x86_64 GNU/Linux

    &#xA;

    PNG-Images : 996 pieces, all equal in size : 1000x50

    &#xA;

    Then trying to build palette using palettegen :

    &#xA;

    export filters="scale=1000:-1:flags=lanczos"&#xA;export palette=./stripes_palette.png&#xA;ffmpeg -v warning -i ./palette_source_stripes.png -vf "$filters,palettegen=stats_mode=diff" -y $palette&#xA;[Parsed_palettegen_1 @ 0x55f0eea30e00] Dupped color: FF63000D&#xA;

    &#xA;

    Palette file has been created, looks good so far. Then I tried to convert all 996 PNG files into one single (space optimized) animated GIF file using paletteuse :

    &#xA;

    ffmpeg -v warning -framerate 5 -thread_queue_size 2048 -i ./tmp/temp.%04d.png -i $palette -lavfi "$filters,paletteuse=dither=bayer:bayer_scale=5:diff_mode=rectangle" -r 5 -loop -1 -y testanim.gif&#xA;Error while filtering: Internal bug, should not have happened&#xA;Failed to inject frame into filter network: Internal bug, should not have happened&#xA;Error while processing the decoded data for stream #0:0&#xA;

    &#xA;

    The reason for "-framerate 5" for the input and "-r 5" for the output is : I wanted the animated GIF to use a determined time for running through animation. It already had worked out without using complex filtering, but the results were huge GIF files which are hard to handle.&#xA;But even when I avoid both framerate parameters, still the same error message occurs.

    &#xA;

    Should I look deeper into the "Dupped color" which has been mentioned ? Did anybody encounter a similar issue using ffmpeg ?&#xA;I'm not used to deal with filters (nor "complex filters") in ffmpeg, I'm very new at this, but I've found no tips regarding an ffmpeg crash like I've right here.

    &#xA;

    ------------------------------- EDIT 2022-08-12/1 ---------------------

    &#xA;

    Same error occurs with current stable version&#xA;ffmpeg version 4.4.2-0ubuntu0.22.04.1 Copyright (c) 2000-2021 the FFmpeg developers

    &#xA;

    ------------------------------- EDIT 2022-08-12/2 ---------------------

    &#xA;

    Found workaround, see answer below

    &#xA;

  • "fixing" RTL texts from logical to visual, before embedding in video as subtitles with ffmpeg

    13 mai 2024, par Berry Tsakala

    I'm searching for the correct way to pre-process my subtitles files before hard-coding them into video clips.

    &#xA;

    Currently, ffmpeg does not process RTL (right-to-left) languges properly ; I have detailed the problem here :&#xA;https://superuser.com/questions/1679536/how-to-embed-rtl-subtitles-in-a-video-hebrew-arabic-with-the-correct-lan

    &#xA;

    However, there could be 2 programmatic solutions :

    &#xA;

      &#xA;
    1. adding certain unicode control characters can fix (or partially fix) the text, which is then fed into ffmpeg, giving good results.
    2. &#xA;

    &#xA;

      &#xA;
    • character 0x200F at the end of a hebrew clause, after punctuation
    • &#xA;

    • character 0x202B, I haven't yet learned its usage.
    • &#xA;

    &#xA;

      &#xA;
    1. I can edit the text so that it will produce the correct results on ffmpeg.&#xA;But that requires smart BiDi algorithm.
    2. &#xA;

    &#xA;

    Do you know how to preprocess such text ?

    &#xA;

    (this is NOT an encoding question. It is about RTL/LTR algorithm to use.)

    &#xA;

    Thank you

    &#xA;