{"id":340,"date":"2006-10-27T22:07:49","date_gmt":"2006-10-28T05:07:49","guid":{"rendered":"http:\/\/multimedia.cx\/eggs\/mplayer-10rc1-reviewed\/"},"modified":"2006-11-05T23:40:28","modified_gmt":"2006-11-06T06:40:28","slug":"mplayer-10rc1-reviewed","status":"publish","type":"post","link":"https:\/\/multimedia.cx\/eggs\/mplayer-10rc1-reviewed\/","title":{"rendered":"MPlayer 1.0rc1 Reviewed"},"content":{"rendered":"<p><a href=\"http:\/\/www.mplayerhq.hu\/\">MPlayer<\/a> recently blessed their latest 1.0 release candidate. As some readers may know, MPlayer is where I cut my teeth in practical multimedia hacking&#8211; that was 5 years ago, right about this time of year. Makes me sentimental just to think about it.<\/p>\n<p><center><br \/>\n<img decoding=\"async\" src=\"\/eggs\/images\/mplayer.jpg\" alt=\"MPlayer logo\" \/><br \/>\n<\/center><\/p>\n<p><a href=\"http:\/\/blogs.adobe.com\/penguin.swf\/\">Other commitments<\/a> have kept me from coming up with anything interesting for this blog. Instead, I thought I would see how well this release fulfills <a href=\"http:\/\/multimedia.cx\/eggs\/eyes-on-the-prize\/\">my original goals<\/a> from when I embarked on this multimedia hacking adventure so many years ago. It runs on Linux, is free, and is open source, so all of those bases are covered. Now let&#8217;s see if it&#8217;s simple to install and can handle any file I throw at it (I&#8217;ll defer on the GUI goal for the time being).<\/p>\n<p><!--more--><\/p>\n<p>I thought building would be the first step, blindly assuming that the download portion would be a no-brainer. As of this writing, the USA mirror (www3) does not have the package. But there are other mirrors; there is even a torrent file, though I&#8217;m not sure if that&#8217;s really warranted for an 8 megabyte file. <\/p>\n<p>So now the first real challenge&#8211; building. I go for the no-brainer build, a straight .\/configure with no options. I see that MPlayer still performs the admirable effort to craft a custom recreation of a standard autoconf-generated configure script. <em>(But I can tell the difference&#8211; this script doesn&#8217;t allow building from a separate directory.)<\/em><\/p>\n<p>Many pieces of software have a ton of legalese-laden disclaimers warning you that the software might not function as advertised and that the creators can not be held liable. This configure script repeatedly advises the user not trust the program if the user dared to deviate from the default configuration in any manner.<\/p>\n<p>Proceed with build&#8230; no problem; same with install.<\/p>\n<p>Running MPlayer will be a showcase of the state of open source multimedia on Linux. I run an AMD64 machine with a native x86_64 kernel and no 32-bit support libraries. Thus, I have no closed 32-bit modules at my disposal. I proceed to test with a sampling from my sizable collection of multimedia files. I don&#8217;t run with any command line options because A) I&#8217;m too lazy to RTFM; and B) I want know how the program performs in its default state.<\/p>\n<p>I run one of my old stand-bys&#8211; an AVI file from late 2001 with 1024&#215;468 MPEG-4 and MP3 audio. The first thing I notice is a brilliant, &#8220;I wish I had thought of it&#8221;-type feature: The video window pops up perfectly centered in the screen. I really need to <strike>steal<\/strike> adapt that feature for xine&#8217;s standard xine-ui.<\/p>\n<p>Random MPEG files look good. Every tricky or buggy MPEG file I could find works well; I&#8217;d expect nothing less from this project. Standard MP3 files are fine. QuickTime files&#8211; MPlayer perfectly plays a particular .MOV file that has been giving me trouble in xine with bleeding green from the sides (because xine has a slightly outdated and buggy version of FFmpeg&#8217;s H.264 decoder). This also includes the latest version of Kostya&#8217;s VC-1 decoder and plays that perfectly, and efficiently.<\/p>\n<p>I try some FLV files&#8211; I find one that exhibits all kinds of bugs. But to be perfectly fair, I have no assurance that this is a properly constructed FLV file, so I&#8217;ll gloss over that for now. I have a negligible collection of Real media files for no real reason other than that I just haven&#8217;t gotten around to deleting them yet. I can never remember which Real codecs are supported via open source code. However, none of my files seems to play and some even segfault MPlayer. But, hey, who cares about Real files anyway? Oh wait, here&#8217;s a .rm file that actually does play. Wow&#8211; 160&#215;120 RV20 video, the best that 1999 had to offer, apparently.<\/p>\n<p>Let&#8217;s see if it can do some more &#8212; ah &#8212; obscure formats, as I hear that MPlayer is approximately the one non-FFmpeg program that can actually leverage FFmpeg&#8217;s libavformat demuxers. It can demux WC3 MVE files and play the audio, but not the video. 4xm plays but ADPCM audio is not recognized or played correctly (PCM is fine). Interplay MVE demuxes with no video and audio is messed up. Same with Id CIN files. No luck on Westwood VQA files. Smacker looks decent. I could probably go on and on about this but the impressive point remains that MPlayer can actually make use of libavformat demuxers. If the MPlayer team were so motivated, I&#8217;m certain they could make all the fringe formats work in short order.<\/p>\n<p>How about the formats I added so long ago? FLIC, Id RoQ, and Sega FILM all still check out. Good to know. The FILM demuxer even plays non-interleaved stereo data correctly, which surprised me.<\/p>\n<p>I wonder what MPlayer does these days if I throw a DVD at it? Throwing a DVD ISO at it&#8230; hmm, it goes right into playing the main movie whilst playing the audio from the main menu. After the main menu music has transpired, it proceeds to play a random portion of audio from the movie. Simply seeking somewhere seems to fix the problem. Well, MPlayer has never been legendary for playing DVDs out of the box; that&#8217;s still xine&#8217;s territory.<\/p>\n<p>How about network capability? I just want to catch up on a QuickTime movie trailer via HTTP streaming. It plays an HTTP URL quite well, though it gets a bit unhappy if I try to seek. MPlayer  seems to do strange things on HTTP streaming, perhaps upon encountering difficulty&#8211; it goes into a loop of constantly reconnecting to the remote host and complaining that it can&#8217;t resolve the name via IPv6.<\/p>\n<p>So that pretty much does it for all the multimedia features I care deeply about. On balance, I&#8217;m incredibly impressed by how MPlayer functions in its default state, i.e., by invoking <em>&#8216;mplayer &lt;media.file&gt;&#8217;<\/em> with no special arguments. The biggest problem I noticed was that some files get grotesquely out of sync. To be fair, I can&#8217;t remember if these files are in sync with the official player. Oddly, the engine seems to be aware of the unsync as indicated by the console output. I suspect this means that I can somehow instruct the engine to keep sync using some switch, but why should I have to? I suspect that I don&#8217;t understand this problem well enough yet.<\/p>\n<p>The stated lack of configure-time flexibility is fascinating. Or rather, the lack of <em>supported<\/em> flexibility. Open source software types pride themselves flexibility. The theme here is that you can deviate from the preset path, but you do so at your own risk.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>MPlayer recently blessed their latest 1.0 release candidate. As some readers may know, MPlayer is where I cut my teeth in practical multimedia hacking&#8211; that was 5 years ago, right about this time of year. Makes me sentimental just to think about it. Other commitments have kept me from coming up with anything interesting for [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"class_list":["post-340","post","type-post","status-publish","format-standard","hentry","category-open-source-multimedia"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/posts\/340","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/comments?post=340"}],"version-history":[{"count":0,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/posts\/340\/revisions"}],"wp:attachment":[{"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/media?parent=340"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/categories?post=340"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/tags?post=340"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}