Recherche avancée

Médias (29)

Mot : - Tags -/Musique

Autres articles (67)

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

  • HTML5 audio and video support

    13 avril 2011, par

    MediaSPIP uses HTML5 video and audio tags to play multimedia files, taking advantage of the latest W3C innovations supported by modern browsers.
    The MediaSPIP player used has been created specifically for MediaSPIP and can be easily adapted to fit in with a specific theme.
    For older browsers the Flowplayer flash fallback is used.
    MediaSPIP allows for media playback on major mobile platforms with the above (...)

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

  • Meteor Spawn_Child_Process for FFMpeg [duplicate]

    2 mars 2013, par user2009114

    Hi I am trying to use Meteor and javascript (Node) to spawn an ffmpeg transcoding event and then stream it live through HTML5 video tags. However, though I can get it working with node.js it seems to hang on the Meteor server and not stream anything though it does seem to be transcoding okay. It appears that the transcoding thread hangs up the server, or is not even a different thread at all ? I am pasting the relevant server side code followed by the client code calling it. One JQuery function calls the transcoding process and the PollForPlaylist is called from the video tags by the hls/. Any help would be much appreciated in solving this. I am wondering if there is a meteor function which I can call to spawn a thread for the ffmpeg function ? Or maybe there is another way to push data to the video tag through jQuery ?

    var spawnNewProcess = function(file, playlistPath) {
       var outputUrlPrefix = '/segment/';
       var args = ['-i', file, '-async', '1', '-acodec', 'libmp3lame', '-b:a', 128 + 'k', '-vf', 'scale=min(' + targetWidth + '\\, iw):-1', '-b:v', videoBitrate + 'k', '-ar', '44100', '-ac', '2', '-vcodec', 'libx264', '-x264opts', 'level=3.0', '-profile:v', 'baseline', '-preset:v' ,'superfast', '-threads', '0', '-flags', '-global_header', '-map', '0', '-f', 'segment', '-segment_time', '10', '-segment_list', 'stream.m3u8', '-segment_format', 'mpegts', '-segment_list_flags', 'live', 'stream%05d.ts'];

       var encoderChild = childProcess.spawn(transcoderPath, args, {cwd: outputPath});

       console.log(transcoderPath + args);

       encoderProcesses[file] = encoderChild;
       currentFile = file;

       console.log('Spawned transcoder instance');

       if (debug) {
           encoderChild.stderr.on('data', function(data) {
               console.log(data.toString());
           });
       }

       encoderChild.on('exit', function(code) {
           console.log('Transcoder exited with code ' + code);

           delete encoderProcesses[file];
       });

       // Kill any "zombie" processes
       setTimeout(function() {
           if (encoderProcesses[file]) {
               console.log('Killing long running process');

               killProcess(encoderProcesses[file]);
           }
       }, processCleanupTimeout);
    };

    var pollForPlaylist = function(file, response) {
       var numTries = 0;
       console.log("IN POLL FOR PLAYLIST");

       var tryOpenFile = function() {
           if (numTries > 20) {
               console.log('Gave up trying to open m3u8 file');
               response.writeHead(500);
               response.end();
           }
           else {
               console.log("IN ELSE");
               fs.readFile(playlistPath, function (err, data) {
                   console.log("Trying to read file");
                   if (err || data.length === 0) {
                       numTries++;
                       setTimeout(tryOpenFile, 200);
                       console.log("ERROR, number of tries", numTries);
                   }
                   else {
                       if (!debug) {
                           response.setHeader('Content-Type', 'application/x-mpegURL');
                       }
                       console.log('response: ' + data);
                       response.write(data);
                       response.end();
                   }
               });
           }
       };
           console.log("Try open");
           tryOpenFile();
    };

    var killProcess = function(processToKill, callback) {
       processToKill.kill();

       setTimeout(function() {
           processToKill.kill('SIGKILL');
       }, 5000);

       processToKill.on('exit', function(code) {
           if (callback) callback();
       });
    }

    var handlePlaylistRequest = function(file, request, response) {
       if (!file) {
           request.writeHead(400);
           request.end();
       }

       if (lock) {
           console.log('Ongoing spawn process not finished, denying request');
           response.writeHead(503);
           response.end();
           return;
       }

       file = path.join('/', file); // Remove ".." etc
       file = path.join(rootPath, file);

       console.log("PLAYLIST PATH", playlistPath);
       if (currentFile != file) {
           lock = true;

           console.log('New file to encode chosen');

           // Make sure old one gets killed
           if (encoderProcesses[currentFile]) {
               killProcess(encoderProcesses[currentFile], function() {
                   fs.unlink(playlistPath, function (err) {
                       spawnNewProcess(file, playlistPath, outputPath);
                       lock = false;
                   });
               });
           }
           else {
               fs.unlink(playlistPath, function (err) {
                   spawnNewProcess(file, playlistPath, outputPath);
                   lock = false;
               });
           }
           currentFile = file;
       }
    };

    The Client side code which calls this is :

    var videoNode = document.querySelector('video');
    $.get('hls/?file='+file);
    videoNode.src = "hls/" + file;
  • Anomalie #3362 (Nouveau) : Erreur de syntaxe CSS du style embarqué

    9 décembre 2014, par Fred Barboteu

    Ligne 139 dans ajaxCallback.js (SPIP 3.0.14) :
    ...

    ...
    Il manque les "px" sur left et top : provoque l’affichage d’une erreur CSS, et l’absence d’effet du positionnement souhaité.

  • Anomalie #3420 : ajaxCallback.js + les styles de la balise p

    10 avril 2015, par b b

    cette balise est visible et crée une marge blanche en bas de page

    Ha, pas chez moi sous FF 37.0.1 et Chromium 41.0.2272.76. Sous quel navigateur observes-tu le problème ?

    Par contre, il me semble tout de même nécessaire de spécifier une unité pour les valeur de left et top (l’inspecteur de chromium me signale que 5000 est une valeur invalide).