Recherche avancée

Médias (1)

Mot : - Tags -/lev manovitch

Autres articles (54)

  • Websites made ​​with MediaSPIP

    2 mai 2011, par

    This page lists some websites based on MediaSPIP.

  • MediaSPIP v0.2

    21 juin 2013, par

    MediaSPIP 0.2 est la première version de MediaSPIP stable.
    Sa date de sortie officielle est le 21 juin 2013 et est annoncée ici.
    Le fichier zip ici présent contient uniquement les sources de MediaSPIP en version standalone.
    Comme pour la version précédente, 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 (...)

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

  • Get video resolution in nodejs

    11 septembre 2019, par tgdn

    I have been trying to get an answer to this without really finding any. Excuse me if this sounds stupid or obvious.

    I have a nodejs application and basically I would like to simply get the resolution of a video. Imagine I have film stored on disk and I would like to be able to know if it is in 720p or 1080p or anything else.

    I understood that I might need to use ffmpeg to do so, but then I also understood that ffmpeg was mostly used to "record, convert and stream audio and video files".
    That does not mean retrieve video resolution.

    Thank you for your help

    Edit 1 :
    The node.js app is a desktop app and needs to be portable to Linux, windows and OS X. If possible a portable answer would be more appreciated but of course any answer is welcome.

  • MP4 to DASH using ffmpeg linux too slow

    16 mai 2022, par darox

    Currently, I'm working at a project that contains 2000 video mp4 files, and I need convert all of them in mpeg dash files.

    



    I have this script :

    



    MYDIR=$(dirname $(readlink -f ${BASH_SOURCE[0]}))
SAVEDIR=$(pwd)

# Check programs
if [ -z "$(which ffmpeg)" ]; then
    echo "Error: ffmpeg is not installed"
    exit 1
fi

if [ -z "$(which MP4Box)" ]; then
    echo "Error: MP4Box is not installed"
    exit 1
fi

cd "$MYDIR"

TARGET_FILES=$(find ./ -maxdepth 1 -type f \( -name "*.mov" -or -name "*.mp4" \))
for f in $TARGET_FILES
do
  fe=$(basename "$f") # fullname of the file
  f="${fe%.*}" # name without extension

  if [ ! -d "${f}" ]; then #if directory does not exist, convert
    echo "Converting \"$f\" to multi-bitrate video in MPEG-DASH"

    mkdir "${f}"

    ffmpeg -y -i "${fe}" -c:a aac -b:a 192k -vn "${f}_audio.m4a"


    ffmpeg -y -i "${fe}" -preset slow -tune film -vsync passthrough -write_tmcd 0 -an -c:v libx264 -x264opts 'keyint=25:min-keyint=25:no-scenecut' -crf 23 -maxrate 800k -bufsize 2000k -pix_fmt yuv420p -vf "scale=-2:720" -f mp4  "${f}_800.mp4"
    # static file for ios and old browsers and mobile safari
    ffmpeg -y -i "${fe}" -preset slow -tune film -movflags +faststart -vsync passthrough -write_tmcd 0 -c:a aac -b:a 160k -c:v libx264  -crf 23 -maxrate 1400 -bufsize 3000k -pix_fmt yuv420p -f mp4 "${f}/${f}.mp4"


    rm -f ffmpeg*log*
    # if audio stream does not exist, ignore it
    if [ -e "${f}_audio.m4a" ]; then
        MP4Box -dash-strict 2000 -rap -frag-rap  -bs-switching no -profile "dashavc264:live" "${f}_5000.mp4" "${f}_3000.mp4" "${f}_1500.mp4" "${f}_800.mp4" "${f}_400.mp4" "${f}_audio.m4a" -out "${f}/${f}.mpd"
        rm "${f}_5000.mp4" "${f}_3000.mp4" "${f}_1500.mp4" "${f}_800.mp4" "${f}_400.mp4" "${f}_audio.m4a"
    else
        MP4Box -dash-strict 2000 -rap -frag-rap  -bs-switching no -profile "dashavc264:live" "${f}_5000.mp4" "${f}_3000.mp4" "${f}_1500.mp4" "${f}_800.mp4" "${f}_400.mp4" -out "${f}/${f}.mpd"
        rm "${f}_5000.mp4" "${f}_3000.mp4" "${f}_1500.mp4" "${f}_800.mp4" "${f}_400.mp4" 
    fi
    # create a jpg for poster. Use imagemagick or just save the frame directly from ffmpeg is you don't have cjpeg installed.
    ffmpeg -i "${fe}" -ss 00:00:00 -vframes 1  -qscale:v 10 -n -f image2 - | cjpeg -progressive -quality 75 -outfile "${f}"/"${f}".jpg

    fi

done

cd "$SAVEDIR"


    



    This is working fine, but, taking a long time to convert only single file, I have intel 7 and a simple mp4 file take 30 min to be converted. How can I accelerate this process ? Must I change something in this script ?

    



    Thank you.

    


  • Cannot convert video file to audio file inside AWS lambda function using Node js

    21 février 2019, par Arun

    I cannot convert a video file into an audio file inside AWS lambda function using Node JS. While running my lambda function it doesn’t throw any error it executes without any error. But the audio file size is still 0 MB size. I am not able to find bugs or any issues in my code.

    Here is my code,

    const fs = require('fs');
    const childProcess = require('child_process');
    const AWS = require('aws-sdk');
    const path = require('path');
    AWS.config.update({
       region : 'us-east-2'
    });
    const s3 = new AWS.S3({apiVersion: '2006-03-01'});


    exports.handler = (event, context, callback) => {
       process.env.PATH = process.env.PATH + ':/tmp/';
       process.env['FFMPEG_PATH'] = '/tmp/ffmpeg';
       const BIN_PATH = process.env['LAMBDA_TASK_ROOT'];
       process.env['PATH'] = process.env['PATH'] + ':' + BIN_PATH;

       childProcess.exec(
           'cp /var/task/ffmpeg /tmp/.; chmod 755 /tmp/ffmpeg;',
           function (error, stdout, stderr) {
               if (error) {
                   console.log('Error occured',error);
               } else {
                   var ffmpeg = '/tmp/ffmpeg';
                   var createStream = fs.createWriteStream("/tmp/video.mp3");
                   createStream.end();
                   var params = {
                       Bucket: "test-bucket",
                       Key: event.Records[0].s3.object.key
                   };
                   s3.getObject(params, function(err, data) {
                       if (err) {
                           console.log("Error", err);
                       }
                       fs.writeFile("/tmp/vid.mp4", data.Body, function (err) {
                           if (err) console.log(err.code, "-", err.message);
                           return callback(err);
                       }, function() {
                           try {
                               var stats = fs.statSync("/tmp/vid.mp4");
                               console.log("size of the file1 ", stats["size"]);
                               try {
                                   console.log("Yeah");
                                   const inputFilename = "/tmp/vid.mp4";
                                   const mp3Filename = "/tmp/video.mp3";
                                   // // Convert the FLV file to an MP3 file using ffmpeg.
                                   const ffmpegArgs = [
                                       '-i', inputFilename,
                                       '-vn', // Disable the video stream in the output.
                                       '-acodec', 'libmp3lame', // Use Lame for the mp3 encoding.
                                       '-ac', '2', // Set 2 audio channels.
                                       '-q:a', '6', // Set the quality to be roughly 128 kb/s.
                                       mp3Filename,
                                   ];
                                   try {
                                       const process = childProcess.spawnSync(ffmpeg, ffmpegArgs);
                                       console.log("stdout ", process.stdout);
                                       console.log("stderr ", process.stderr);
                                       console.log("tmp files ");
                                       fs.readdir('/tmp/', (err, files) => {
                                           files.forEach(file => {
                                               var stats = fs.statSync(`/tmp/${file}`);
                                               console.log("size of the file2 ", stats["size"]);
                                             console.log(file);
                                           });
                                         });

                                   } catch (e) {
                                       console.log("error while converting video to audio ", e);
                                   }

                                   // return process;
                               } catch (e) {
                                   console.log(e);
                               }
                           } catch (e) {
                               console.log("file is not complete", e);
                           }
                       }, function () {
                           console.log("checking ");
                           var stats = fs.statSync("/tmp/video.mp3");
                           console.log("size of the file2 ", stats["size"]);
                       });

                       return callback(err);
                   });
               }
           }
       )
    }

    Code workflow

    First of all, I have downloaded ffmpeg binary exec file and put into my project directory. After that, I compressed my project and put it into the lambda function. This lambda function will be triggered whenever the new files are uploaded into an S3 bucket. I have checked /tmp/ storage files and the audio file .mp3 present but the size is 0 MB.

    Note

    And also, in my code the below is not calling or this part is not reaching. When I look into Cloudwatch logs I can’t see this console log messages. I don’t know why this function is not calling.

    function () {
           console.log("checking ");
           var stats = fs.statSync("/tmp/video.mp3");
           console.log("size of the file2 ", stats["size"]);
       });

    Please help me to find the solution of this issue. I have spent a lot of times to figure out this issue. But I am not able to find the solution. Any suggestions are welcome !!
    Thanks,