Recherche avancée

Médias (91)

Autres articles (94)

  • Personnaliser en ajoutant son logo, sa bannière ou son image de fond

    5 septembre 2013, par

    Certains thèmes prennent en compte trois éléments de personnalisation : l’ajout d’un logo ; l’ajout d’une bannière l’ajout d’une image de fond ;

  • Personnaliser les catégories

    21 juin 2013, par

    Formulaire de création d’une catégorie
    Pour ceux qui connaissent bien SPIP, une catégorie peut être assimilée à une rubrique.
    Dans le cas d’un document de type catégorie, les champs proposés par défaut sont : Texte
    On peut modifier ce formulaire dans la partie :
    Administration > Configuration des masques de formulaire.
    Dans le cas d’un document de type média, les champs non affichés par défaut sont : Descriptif rapide
    Par ailleurs, c’est dans cette partie configuration qu’on peut indiquer le (...)

  • 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

Sur d’autres sites (16583)

  • How do I stop ffmpeg from spamming itself when I auto restart ?

    15 décembre 2019, par billy61300
    const fs = require("fs");
    const express = require("express");
    const app = express();
    const path = require("path");
    const ffmpeg = require("fluent-ffmpeg");
    const md5 = require("md5");
    const readline = require("readline");
    const formidable = require("formidable");

    const dir = "Custom/Dir";
    const thumb = __dirname + "/thumb";
    const ph = __dirname + "/placeholder";

    app.use("/serve", express.static(dir));
    app.use("/thumb", express.static(thumb));
    app.use("/ph", express.static(ph));

    const list = [];
    const listThumb = [];

    process.on("uncaughtException", (err) => {
       console.log("Caught Exception: " + err);
    });

    let passwords = fs.readFileSync("passwords.txt").toString().split("\n");

    app.get("/", (req, res) => {
       res.sendFile(__dirname + "/index.html")
    });

    app.get("/upload", (req, res) => {
       res.sendFile(__dirname + "/upload.html");
    });

    app.post("/uploadFile", (req, res) => {
       let form = new formidable.IncomingForm();
       form.parse(req, (err, fields, files) => {
           if (passwords.includes(md5(fields.password))) {
               fs.readFile(files.filetoupload.path, (err, data) => {
                   let newPath = dir + "/" + files.filetoupload.name;
                   if (!fs.existsSync(newPath)) {
                       fs.writeFile(newPath, data, (err) => {
                           res.writeHead(200, {"Content-Type": "text/html"});
                           res.write("<h1>File Uploaded</h1>");
                           res.end();
                       });
                   } else {
                       res.writeHead(200, {"Content-Type": "text/html"});
                       res.write("<h1>File already exists. Upload with a different name please.</h1>");
                       res.end();
                   }
               });
           }
       });
    });

    fs.readdir(dir, (err, files) => {
       if (err) {
           throw err;
       } else {
           let i = 0;
           files.forEach((file) => {
               list[i] = path.basename(file);
               if (!fs.existsSync(__dirname + "\\thumb\\" + list[i] + ".png")) {
                   console.log("Generating: " + list[i] + ".png");
                   let proc = new ffmpeg({source: dir + "/" + file, nolog: true});
                   proc.setFfmpegPath(__dirname + "\\ffmpeg.exe");
                   proc.screenshots({
                       timestamps: [0.0],
                       filename: list[i] + ".png",
                       folder: __dirname + "\\thumb\\",
                       size: "100x100"
                   });
               }
               i++;
           });
           let serveDoc = "";
           for (let j = 0; j &lt; list.length; j++) {
               if (path.extname(list[j]).toLowerCase() !== ".jpg" &amp;&amp; path.extname(list[j]).toLowerCase() !== ".jpeg" &amp;&amp; path.extname(list[j]).toLowerCase() !== ".png") {
                   if (path.extname(list[j]).toLowerCase() == ".mp3" || path.extname(list[j]).toLowerCase() == ".wav") {
                       serveDoc += "<a href="http://stackoverflow.com/feeds/tag/address&#034; + list[j] + &#034;">" + "<img width='100' height='100' src="http://stackoverflow.com/feeds/tag/address" />" + "</a> ";;
                   }/* else if (path.extname(list[j]).toLowerCase() == ".webm") {
                       serveDoc += "<a href="http://stackoverflow.com/feeds/tag/address&#034; + list[j] + &#034;">" + "<img width='100' height='100' src="http://stackoverflow.com/feeds/tag/address" />" + "</a> ";;
                   }*/ else {
                       serveDoc += "<a href="http://stackoverflow.com/feeds/tag/address&#034; + list[j] + &#034;">" + "<img width='100' height='100' src="http://stackoverflow.com/feeds/tag/address&#034; + list[j] + &#034;.png" />" + "</a> ";
                   }
               } else {
                   serveDoc += "<a href="http://stackoverflow.com/feeds/tag/address&#034; + list[j] + &#034;">" + "<img width='100' height='100' src="http://stackoverflow.com/feeds/tag/address&#034; + list[j] + &#034;" />" + "</a> ";
               }
           }
           serveDoc += "";
           fs.writeFile("index.html", serveDoc, (err) => {
               if (err) throw err;
           });
       }
    });

    setTimeout(() => {
       process.exit(0);
    }, 1000 * 60 * 30);

    app.listen(80, (err) => {
       if (err) {
           throw err;
       } else {
           console.log("Listening on port 80.");
       }
    });

    Issue is that the program needs to be restarted every X minutes so that the list of media will update on it’s own. However, upon a restart, ffmpeg goes crazy and starts to spam a batch window under it’s name repeatedly over and over again without stopping. The only way out of it is to restart my computer.

    I’ve tried to use PM2, Forever, Supervisor. Nodemon afaik won’t auto restart.

  • FileNotFoundError on aws Lambda when concatenating videos with ffmpeg

    2 juillet 2021, par Shibu Menon

    Goal :

    &#xA;&#xA;

      &#xA;
    • Concat 2 videos (both are in an s3 bucket) via aws Lambda using ffmpeg
    • &#xA;

    • Upload the resultant output.mp4 to another S3 bucket
    • &#xA;

    • Python 3+
    • &#xA;

    &#xA;&#xA;

    I've already created a layer containing a static ffmpeg

    &#xA;&#xA;

    The Error :

    &#xA;&#xA;

    {&#xA;  "errorMessage": "[Errno 2] No such file or directory: &#x27;/tmp/output.mp4&#x27;",&#xA;  "errorType": "FileNotFoundError",&#xA;  "stackTrace": [&#xA;    [&#xA;      "/var/task/lambda_function.py",&#xA;      19,&#xA;      "lambda_handler",&#xA;      "s3.Object(bucketLowRes, mp4OutputFileName).put(Body=open(new_file_key, &#x27;rb&#x27;))"&#xA;    ]&#xA;  ]&#xA;}&#xA;

    &#xA;&#xA;

    My Lambda function :

    &#xA;&#xA;

    import json&#xA;import os&#xA;import subprocess&#xA;import boto3&#xA;&#xA;s3 = boto3.resource(&#x27;s3&#x27;)&#xA;bucketLowRes = s3.Bucket("bucket-conc-lowres")&#xA;&#xA;def lambda_handler(event, context):&#xA;    # TODO implement&#xA;&#xA;    mp4OutputFileName = &#x27;output.mp4&#x27;&#xA;&#xA;    new_file_key = os.path.abspath(os.path.join(os.sep, &#x27;tmp&#x27;, mp4OutputFileName))&#xA;    subprocess.call( [&#x27;/opt/ffmpeg&#x27;, &#x27;-i&#x27;, &#x27;concat:s3://bucket-word-clips/00th76kqwfs915hbixycb77y9v3riwsj30.mp4|s3://bucket-word-clips/00uoakp6jyafbu13ycvl6w2i9tj42eux30.mp4&#x27;, new_file_key ] )&#xA;&#xA;    s3.Object(bucketLowRes, mp4OutputFileName).put(Body=open(new_file_key, &#x27;rb&#x27;))&#xA;&#xA;    return {&#xA;        &#x27;statusCode&#x27;: 200,&#xA;        &#x27;body&#x27;: json.dumps(&#x27;Hello from Lambda!&#x27;)&#xA;    }&#xA;

    &#xA;&#xA;

    Question :

    &#xA;&#xA;

      &#xA;
    • FileNotFoundError : Where is the output mp4 file of my ffmpeg concat being saved ??
    • &#xA;

    • And if it is being saved to /tmp/output.mp4 , then why the FileNotFoundError ??
    • &#xA;

    &#xA;&#xA;

    thanks

    &#xA;

  • Simples loop to iterate over files and send them to ffmpeg

    25 octobre 2019, par user2752471

    I want to do a shell script that will iterate over several video files in a directory, send everyone of them to ffmpeg, that will then reencode each one, producing a reencoded file that will have the same name as the original, except with .avi extension instead .mkv or .mp4.

    I found a fairly simple script in another topic here on SO, tried to change it slightly to take into account the file extension and the destination directory.

    However my script only produces countless "anything : No such file or directory"

    Here is it :

    $ for f in $(find -type f -name *.mkv); do ffmpeg -n -i "$f" -c:v copy ".$f" ; done

    And these is the ffmpeg command that I usually use :

    ffmpeg -y -i  -vf scale=720:-2 -c:v mpeg4 -vtag xvid -b:v 969k -pass 1 -an -f avi /dev/null &amp;&amp; ffmpeg -i -c:a libmp3lame -b:a 48k -ac 1 -vf scale=720:-2 -c:v mpeg4 -vtag xvid -b:v 969k -pass 2  .avi

    So I need to identify what is incorrect in the first script, that is considering each small word of the file’s name as a file, and then change it as to add all these ffmpeg parameters.

    Somethings that I do not understand in the script :

    1)Are the -type and f in find command necessary. From what I read of the documentation, all it does is to tell find that it shall look for normal files, something that seems irrelevant for my case. When I use find, I do : find starting dir -name filename. So do I have to keep it ?

    2)What -n means for ffmpeg ? I am currently without a man entry for ffmpeg. Is it necessary for my needs ?

    3)Do I need to have "" around $f ? What it does ?

    4)As far as I understand $ denotes a variable. But what the "f" after it does ? Do I need it ?

    5)The " ;" after the closing ")" and the ".$f" are necessary ? The first is used to indicate the end of the for loop,and the second the end of the ffmpeg command ?

    6)The "do" and the "does" are also necessary for the same motives behind the " ;"

    Here is my attempt of the ffmpeg part of the script. Please tell me what to change on it, as in the find part of it.

    do ffmpeg -n -y -i "$f.mkv" -vf scale=720:-2 -c:v mpeg4 -vtag xvid -b:v 969k -pass 1 -an -f avi /dev/null &amp;&amp; ffmpeg -n -i "$f" -c:a libmp3lame -b:a 48k -ac 1 -vf scale=720:-2 -c:v mpeg4 -vtag xvid -b:v 969k -pass 2  ".$f.avi" ; done

    If I would like the script to also look for ".mp4" besides ".mkv" how I would need to change it ?

    Thanks for any input.