Recherche avancée

Médias (1)

Mot : - Tags -/livre électronique

Autres articles (46)

  • Keeping control of your media in your hands

    13 avril 2011, par

    The vocabulary used on this site and around MediaSPIP in general, aims to avoid reference to Web 2.0 and the companies that profit from media-sharing.
    While using MediaSPIP, you are invited to avoid using words like "Brand", "Cloud" and "Market".
    MediaSPIP is designed to facilitate the sharing of creative media online, while allowing authors to retain complete control of their work.
    MediaSPIP aims to be accessible to as many people as possible and development is based on expanding the (...)

  • Gestion générale des documents

    13 mai 2011, par

    MédiaSPIP ne modifie jamais le document original mis en ligne.
    Pour chaque document mis en ligne il effectue deux opérations successives : la création d’une version supplémentaire qui peut être facilement consultée en ligne tout en laissant l’original téléchargeable dans le cas où le document original ne peut être lu dans un navigateur Internet ; la récupération des métadonnées du document original pour illustrer textuellement le fichier ;
    Les tableaux ci-dessous expliquent ce que peut faire MédiaSPIP (...)

  • Des sites réalisés avec MediaSPIP

    2 mai 2011, par

    Cette page présente quelques-uns des sites fonctionnant sous MediaSPIP.
    Vous pouvez bien entendu ajouter le votre grâce au formulaire en bas de page.

Sur d’autres sites (4763)

  • 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;
  • ffmpeg quits if one output stream fails - can this be prevented ? [duplicate]

    5 décembre 2017, par Caius Jard

    I’m responsible for maintaining a device that streams a live webcam feed to a remote relay server, and simultaneously writes a version of the stream to the local disk. It does this by a single instance of ffmpeg that has two outputs - one to the local disk, and one over rtsp to the streaming server

    I’m encountering a problem where by if the streaming server disconencts for any reason, ffmpeg quits. I’m not really bothered if the live stream is lost, but it’s a big problem that the local recording is lost also - it’s not a huge detriment to the particular business process if it cannot be watched live, but losing the locally stored copy is a disaster

    ffmpeg is started with a command line similar to :

    ffmpeg -thread_queue_size 4096 -async 1 -f v4l2
     -input_format mjpeg -framerate 30 -video_size 1280x720
     -i /dev/video0 -thread_queue_size 4096 -async 1 -f alsa
     -i plughw:CARD=Set,DEV=0 -r 30 -c:a aac -b:a 96k -c:v h264 -b:v 983040
     -profile:v baseline -preset veryfast -pix_fmt yuv420p
     -f tee -map 0:v -map 1:a
       [f=matroska]'/var/recordings/yyyy-mm-dd/backup.mkv'|
       [f=rtsp:rtsp_transport=tcp]rtsp://streamingserver.com:1234/session.sdp`

    Is there any way (command line switch etc) that ffmpeg can be made to carry on if an output stream is lost, rather than quitting ?

  • Piwik Analytics becomes Matomo to reflect Users’ Privacy Focus

    10 janvier 2018, par Matomo Core Team

    One of the world’s leading analytics software platforms is changing its name. Piwik is the sixth most-used web and mobile analytics computer solution worldwide. It is now changing its name to Matomo.

    The name change comes after 10 years of Piwik building its top analytics software, with great success. It is already used on over one million websites in more than 170 countries. Matomo will build on that success, and focus even more on privacy.

    ‘Privacy has become a huge concern worldwide’, says Matomo’s creator, Matthieu Aubry. ‘Privacy legislation is being developed in Europe, and we will be ahead of the game in being ready for those changes. We’ll grow in line with the law and regulation changes.’

    Matomo will lead the way in openness and transparency for its users. Its new name means honesty in Japanese.
    ‘Matomo will always be free and community-driven, just as Piwik was’, says Matthieu Aubry. ‘We have worked with hundreds of people to create the best open digital analytics solution in the world. We’re committed to giving every user full control of their data.’

    The change of name is appropriate as the Matomo platform moves into a new stage of growth. But for its community, little will obviously change. The same people will still be involved, and users will still get useful data to improve their own website. That data includes who visits their site, what they do there, how long they stay, and what they buy.
    Matomo is an all-in-one analytics solution that gives companies a 360 degree view of their users.

    ‘They can grow their business while still keeping 100% ownership of their data, and being fully compliant with privacy laws’, says Matthieu Aubry. ‘We’re more motivated than ever to building on that, so that Matomo stays ahead of the pack.’

    The platform can be fully customised with hundreds of plug-ins, integrations and configurations.

    Matomo’s updated website and new logo is now available on https://matomo.org.
    For further information, please contact the Matomo Team on hello@matomo.org

    The post Piwik Analytics becomes Matomo to reflect Users’ Privacy Focus appeared first on Analytics Platform - Matomo.