
Recherche avancée
Autres articles (12)
-
Organiser par catégorie
17 mai 2013, parDans MédiaSPIP, une rubrique a 2 noms : catégorie et rubrique.
Les différents documents stockés dans MédiaSPIP peuvent être rangés dans différentes catégories. On peut créer une catégorie en cliquant sur "publier une catégorie" dans le menu publier en haut à droite ( après authentification ). Une catégorie peut être rangée dans une autre catégorie aussi ce qui fait qu’on peut construire une arborescence de catégories.
Lors de la publication prochaine d’un document, la nouvelle catégorie créée sera proposée (...) -
Les thèmes de MediaSpip
4 juin 20133 thèmes sont proposés à l’origine par MédiaSPIP. L’utilisateur MédiaSPIP peut rajouter des thèmes selon ses besoins.
Thèmes MediaSPIP
3 thèmes ont été développés au départ pour MediaSPIP : * SPIPeo : thème par défaut de MédiaSPIP. Il met en avant la présentation du site et les documents média les plus récents ( le type de tri peut être modifié - titre, popularité, date) . * Arscenic : il s’agit du thème utilisé sur le site officiel du projet, constitué notamment d’un bandeau rouge en début de page. La structure (...) -
Selection of projects using MediaSPIP
2 mai 2011, parThe examples below are representative elements of MediaSPIP specific uses for specific projects.
MediaSPIP farm @ Infini
The non profit organizationInfini develops hospitality activities, internet access point, training, realizing innovative projects in the field of information and communication technologies and Communication, and hosting of websites. It plays a unique and prominent role in the Brest (France) area, at the national level, among the half-dozen such association. Its members (...)
Sur d’autres sites (3213)
-
How to optimize video to animated GIF conversion using PHP + shell commands
15 mars 2012, par user1070798I have a web application that converts any video into an animated GIF. The app runs in PHP and the following steps are executed through php's shell_exec :
- Scale video to smaller dimensions, if they are large (ffmpeg -i $in -s 200x150 -an $out)
- Use ffmpeg to extract 1 jpeg every x seconds (ffmpeg -i $in -ss $ss -vframes 1 $out)
-
Convert jpegs to animated GIF using imagick (convert -delay $delay -loop 0 $dir/* $out)
aside - the reason I don't use the ffmpeg gif89a output is because the quality sucks.
I want to be able to except any major image format, but the most common will probably be .flv (flash) and .avi/.mpg.
My application runs fine, but I am a perfectionist and it needs to be faster for scalability.
My web server has 16 cores and I would like to utilize them as much as possible, but .flv multi-threading appears to not be supported by ffmpeg, while .avi and some others are supported. Also, ffmpeg doesn't support multi-threading when outputting to jpegs.
Does anyone know of any other programs that support multi-threading for .flv and others ? Are there any more efficient methods to create an animated GIF from video, while maintaining relatively decent quality (aka not the 100-color palette that ffmpeg supports) ?
Also, if anyone knows which codecs might perform best for stages 1 and 2, particularly with flv, I'd love to know. I've done hours of testing, but there are just so many options I haven't come to any solid conclusions.
***Update : My online app is working well so far animated gif generator. I would still love to make it faster though, so if anyone has run into similar circumstances... let me know !
-
The New Samples Regime
1er décembre 2011, par Multimedia Mike — GeneralA little while ago, I got a big head over the fact that I owned and controlled the feared and revered MPlayer samples archive. This is the repository that retains more than a decade of multimedia samples.
Conflict
Where once there was one multimedia project (FFmpeg), there are now 2 (also Libav). There were various political and technical snafus regarding the previous infrastructure. I volunteered to take over hosting the vast samples archive (53 GB at the time) at samples.mplayerhq.hu (s.mphq for this post).However, a brand new server is online at samples.libav.org (s.libav for this post).
Policies
The server at s.libav will be the authoritative samples repository going forward. Why does s.libav receive the honor ? Mostly by virtue of having more advanced features. My simple (yet bandwidth-rich) web hosting plan does not provide for rsync or anonymous FTP services, both of which have traditionally been essential for the samples server. In the course of hosting s.mphq for the past few months, a few more discrepancies have come to light– apparently, the symlinks weren’t properly replicated. And perhaps most unusual is that if a directory contains aREADME
file, it won’t be displayed in the directory listing (which frustrated me greatly when I couldn’t find this README file that I carefully and lovingly crafted years ago).The s.mphq archive will continue to exist — nay, must exist — going forward since there are years’ worth of web links pointing into it. I’ll likely set up a mirroring script that periodically (daily) rsyncs from s.libav to my local machine and then uses lftp (the best facility I have available) to mirror the files up to s.mphq.
Also, since we’re starting fresh with a new upload directory, I think we need to be far more ruthless about policing its content. This means making sure that anything that is uploaded has an accompanying file which explains why it’s there and ideally links the sample to a bug report somewhere. No explanation = sample terminated.
RSS
I think it would be nifty to have an RSS feed that shows the latest samples to appear in the repository. I figure that I can use the Unix ‘find’ command on my local repository in concert with something like PyRSS2Gen to accomplish this goal.Monetization
In the few months that I have been managing the repository, I have had numerous requests for permission to leech the entire collection in one recursive web-suck. These requests often from commercial organizations who wish to test their multimedia product on a large corpus of diverse samples. Personally, I believe the archive makes a rather poor corpus for such an endeavor, but so be it. Go ahead ; hosting this archive barely makes a dent in my fairly low-end web hosting plan. However, at least one person indicated that it might be easier to mail a hard drive to me, have me copy it, and send it back.This got me thinking about monetization opportunities. Perhaps, I should provide a service to send HDs filled with samples for the cost of the HD, shipping, and a small donation to the multimedia projects. I immediately realized that that is precisely the point at which the vast multimedia samples archive — with all of its media of questionable fair use status — would officially run afoul of copyright laws.
Which brings me to…
Clean Up
I think we need to clean up some samples, starting with the ones that were marked not-readable in the old repository. Apparently, some ‘samples’ were, e.g., full anime videos and were responsible for a large bandwidth burden when linked from various sources.We multimedia nerds are a hoarding lot, never willing to throw anything away. This will probably the most challenging proposal to implement.
-
Parsing the STDERR output of node.js child_process line by line
3 janvier 2012, par primerI'm writing a simple online conversion tool using FFMPEG and Node.js. I'm trying to figure out how to parse each line of the conversion output received from FFMPEG and only display pertinent results client side in the browser. In my case I want the encoding time counter that FFMPEG spits out on the command line.
My function thus far is :
function metric(ffmpeg, res) {
ffmpeg.stdout.on('data', function(data) {
res.writeHead(200, {'content-type': 'text/html'});
res.write('received upload:\n\n');
console.log(data);
});
ffmpeg.stderr.on('data', function (data) {
var temp += data.toString();
var lines = temp.split('\n');
//for debugging purposes
for(var i = 0;icode>What this ends up returning is multiple arrays, each of which includes the data from the previous array as well as the next data chunk. For example, the function returns array 1 :0=>A, 1=>B, array 2 :0=>A, 1=>B, 2=>C, array 3 :0=>A, 1=>B, 2=>C, 3=>D, and so on.
I'm quite new to Node so I'm probably missing something simple. Any guidance would be much appreciated !