August 9, 2007

Watch online video? Get Miro

Author: Nathan Willis

First it was called DTV, then Democracy Player, and now it is Miro. Whatever you call it, the Mozilla-based, cross-platform, open source video player is now in public release. Miro differs from playback front ends like VLC by offering integrated content-finding and content-management tools. If you think that's a meaningless distinction, think again.

You can download Miro for Linux, Mac OS X, and Windows. The latest release is version, designated Public Preview 1. The Miro team earns high marks for offering multiple download options for Linux users: source code with build notes, and binaries for Fedora, Ubuntu, and Debian.

Miro is built on top of the Mozilla platform, so it does inherit lots of dependencies. Mozilla's size and complexity can make for unexpected trouble. For example, some users have reported problems caused by Sun's Java plugin for Mozilla -- even though Miro itself doesn't use it at all. Check the support forums for up-to-date info.

Another catchy area is video codec support. Miro can use either Xine or GStreamer as its playback system. Right now that is a problem because the current Xine libraries have a nasty bug in H.264 playback.

You definitely want to use GStreamer; unfortunately changing playback engines requires editing a configuration file. Open /usr/share/python-support/miro/miro/frontend_implementation/, then comment out the Xine line and uncomment the GStreamer line. The process is arcane and ought be integrated into the application's general options panel, but at least you only have to do it once.

Now showing

Miro's left pane holds a content list with entries for the application's guide service, a search tool, your local library, playlists, and so on. The right pane serves as both the playback window and browser for selecting videos.

Content playback is brain-dead easy; just click on the play button and sit back. If GStreamer can read it, Miro can play it. The app doesn't offer detailed picture tweaking, but it does include a full-screen playback mode.

Where Miro excels is in getting content to your PC. The key concept is "channels" -- video feeds that Miro automatically updates for you. The simplest channel is a video podcast with a regular RSS feed, but Miro allows you to create channels in other ways, too. You can save searches as channels, subscribe to YouTube accounts as channels, and so on. However a channel is created, Miro checks for updates periodically, and can retrieve content via HTTP download or through its own internal BitTorrent client.

As with regular television, finding something worth watching is the real challenge. To that end, Miro underwriter the Participatory Culture Foundation (PCF) has constructed a channel guide service. You can search through its feeds by category, keyword, popularity, or language.

The guide service currently boasts more than 1,800 channels. Anyone can submit a channel for inclusion in the guide, although acceptance is not automatic. PCF reviews all submissions and accepts only those that conform to its technical requirements for video and RSS format and Terms of Use.

Despite the increasing popularity of video podcasts, Miro's video search service provides access to far more content. You can search YouTube, Veoh, Google Video, Blogdigger, Revver, DailyMotion, and from within the app -- although you can only search one at a time. Search results are automatically parsed and appear as ready-to-download links just like RSS-supplied videos.

Miro can also play videos from your local library. They are separated from automatic downloads, on the assumption that video podcast content will be deleted once watched. By default, downloaded videos "expire" after six days, although you can change this in the program's preferences, and you can choose not to expire individual videos on a case-by-case basis.

Your channel subscriptions (both podcast and saved search) appear in Miro's left column. There you can sort them into folders if you like, and see how many new or unwatched episodes of each are available.

Blooper reel

Miro still has some rough edges. When I first tried it, it routinely consumed 100% CPU and crashed a few seconds after startup. I tracked the problem down to Miro's attempt to read metadata and generate thumbnails for every video in my large personal library, which includes MythTV recordings. Invariably, hitting some header or frame in the video files was crashing either Miro or the underlying video engine.

Switching the engine from Xine to GStreamer helped, but what was more puzzling was that I hadn't told Miro to undertake this cataloguing, and couldn't find any way to stop it. I discovered that the cause was my decision to have Miro save downloaded content in the same directory as my larger collection -- so setting its target folder elsewhere was step one.

But even then, I couldn't get Miro to stop scanning the old location. Eventually I found that Miro notes your "downloads folder" location in a GConf key, rather than in its configuration file with the rest of your preferences. All together, that makes three different locations Miro uses for app preferences: the main config file in .miro, GConf keys, and the support files in /usr/share/python-support/miro/miro/. That's just a couple too many.

No matter the source, the fact that Miro crashes trying to read video metadata is alarming. Videos downloaded from the Internet are rife with malformed headers and missing frames; Miro's log file documents this, and Miro still crashes on an uncomfortably high percentage of videos available through the guide service (not to mention the search engines).

Worse, Miro cannot play certain proprietary formats on Linux, like QuickTime. I don't expect Miro to work the legally impossible, but this shortcoming weasels its way in at inopportune times. Take "Ask a Ninja" for example; the feed is available in two video formats, but Miro doesn't let you choose which one to use, and it by default grabs the "iPod" format that won't play in Linux.

In addition, Miro's UI is prone to freezing for mysterious reasons. The contents of the guide window are rendered HTML, and will still respond to mouse clicks, but the rest of the window will not, forcing you to force-quit the app. Depending on your system configuration, if a Flash video happens to be the cause of the trouble, the freeze-up can even crash your sound server and leave you in silence until you restart that as well.

Finally, even though I have high hopes for Miro's ability to download content via BitTorrent, that feature is still in its infancy. Few feeds deliver content this way, and Miro does not register itself with Firefox as a handler for generally-available .torrent files.

On the aisle

Those trouble spots don't outweigh Miro's overall usefulness, thanks to its content location capabilities. Searching for videos is far easier and far more natural in Miro than through a Web browser. It is a one-click process, and the selected video is automatically downloaded and stored locally in the background. Once you have done that a few times, it just doesn't make sense to do it through Firefox anymore.

Likewise, the guide service is a great utility. I hate to make Apple comparisons since they are so overdone, but while so many open source audio players were busy aping the look of the iTunes application, they completely dropped the ball on the more important iTunes Store. Miro's ability to help you find videos -- regardless of where they originate and who produces them -- puts it in a class by itself.

Sure, when I watch MythTV recordings or DVDs on my Linux PC, I'll probably continue choose to do so in VLC, where the playback and quality controls are substantially better. But for lower-resolution, non-archival content like podcasts and weird YouTube errata, a targeted app like Miro makes a world of sense.

In short, Miro makes it so much easier to find and to get video content that you won't want to switch to another app just to watch it.


  • Reviews
  • Graphics & Multimedia