Raspberry Pi: Experimenting with MPEG-2 (DVD) and VC-1 (WMV) licences

Raspberry Pi: Experimenting with MPEG-2 (DVD) and VC-1 (WMV) licences

Summary: Adding these two video codecs allows you to play DVD movies and recorded TV.


I've had a bit of a struggle getting this post written, because I have been fluctuating between: "Wow, Look, that's really great!" and "Why the heck doesn't that work?"

But I think that I have enough of it figured out now to make it useful to others — so here we go.

A bit of explanation is needed first. The creators of the Raspberry Pi initially decided not to include MPEG-2 and VC-1 codecs with every unit. 

The decision was based on a combination of the cost involved — the licences required would have raised the unit price significantly — and their belief that the Pi would be primarily an educational tool, so there wouldn't be a lot of demand for these codecs. It didn't take long before it was clear that both of those assumptions were wrong; the Pi was wildly popular not only for educational purposes, and especially with the various Media Centre packages the demand for codecs was substantial.

My first question when I heard about these codecs was, "what do I need or want these codecs for"? 

Raspberry Pi : Vital statistics

  • Broadcom BCM 2835 chipset
  • ARM1176JZFS chip with a floating point co-processor, running at 700MHz
  • Videocore IV GPU, capable of BluRay quality playback, using H.264 at 40MBits/s
  • Ships with OpenGL ES2.0 and OpenVG libraries
  • HDMI out
  • Model B: 512MB of memory, two USB ports and a 10/100 BaseT Ethernet port
  • Model A: 256MB of memory, one USB port

As I have said many times, I am not a multimedia expert or even enthusiast, so the various formats and decoders often baffle me. Fortunately, there are a couple of good explanatory posts on the Raspberry Pi website — first, the announcement of the codecs, and then a what can you do with them, including a nice table that shows what plays and what doesn't with which decoder(s). 

For my purposes, the important fact was that I needed an MPEG-2 codec to play commercial DVD movies. I know that there are various ways to rip/copy/convert such things so that they might play another way, but besides the fact that I will always choose the path of least resistance — especially when the cost involved is $2 — I simply don't do that kind of thing.

My next question was, "how do I use these codecs"?  Obviously they have to be installed somehow/somewhere, but where and how?  Figuring that out, and getting it done, turned out to be a bit more trouble than actually buying them. Read on for details.

If you want/need these codecs, all you have to do is go to the Raspberry Pi Store and spend a very small amount of money. You will need the serial number of your Raspberry Pi, because the licence is keyed to it; the order page explains how to read that from the system.

The MPEG-2 codec costs £2.40, and the VC-1 codec costs £1.20, including VAT. In fact, the codecs only cost me £2 and $1 — I suppose because I am outside the UK or EU and they removed the VAT from my order. 

I got an email confirming the order, and another confirming the payment (via PayPal) almost immediately, along with a statement that the licences would be emailed within 72 hours. 

It actually took a lot less than that; my first order was for MPEG-2 only, made on a Thursday night, and I got the licence key on Friday; the second order, for VC-1, was made on Monday morning, and I got the key that afternoon. 

To the very kind order-processing people at the Pi Store, I apologise for not ordering both licences at the same time, I was being a bonehead. To others who are thinking of ordering one or the other licence, I strongly suggest that you splurge and spend the extra pound or two to get both licences. The cost is minimal and the trouble it might save you and the people at the store is non-trivial.

What you get from the Pi store is an email containing the licence key, which you need to enter into the config file on your Raspberry Pi.  There are three general ways to do this:

  • If you are running NOOBS, hold down the Shift key while the Pi boots. That will take you to the Install/Configure menu, with a list of available/installed operating systems. From there you can choose an operating system and then click "Edit Configuration File".
  • If you have another computer with an SD card slot, you can shut down the Pi, remove the SD card and put it into that system and edit the config file from there.
  • If you can get a Linux command line, either from the console or via ssh from another system, you can edit the config.txt file in place.  The "trick" here is that the boot filesystem is normally mounted read-only, so you have to remount it read-write, edit the file, and then put it back to read-only.

None of these methods is particularly difficult, so pick the one which you like best, or which seems least intimidating to you. Remember that you have to reboot after adding the key to the config file.  Also remember that if you are running NOOBS, and have multiple systems installed which may use MPEG-2, you have to add the key to the config file for each of them separately.

I will also inject a plug here for the PiHub USB hub. If you are planning to connect an external USB DVD drive, you need to think carefully about it and check the power requirements for the drive.  A lot of those things need quite a bit of power — from 0.5 to 1.5 amps — and if you simply plug it directly into the Raspberry Pi, it might be too much for the power supply you are using. The normal PiHub power supply is rated at about twice the output of a typical Pi power supply, so plugging a DVD drive into it should be no problem.

Finally, the most important question of all — how does it work?  This is where things get a bit dicey. I did all of the following testing and playing with openELEC, but it was actually XBMC that was running so the results should be the same for RaspBMC or others which would then be using XBMC.  The critical difference would be with different versions of XBMC itself, as I learned later, and have noted below.

I got a bit of a false lead when the first DVD I tried played just fine, and I thought the world was a wonderful place, until I realised that it was a DVD full of MP4 files. I already knew the Pi could play MP4, without any additional codecs. Grrr.

The next try was a commercial DVD, which also played OK. Yay! Getting to the DVD and getting it started playing was relatively slow, as I have become accustomed to on the Raspberry Pi, but once it started playing the performance was perfect — HD video, no problems with either video or audio jumping or stuttering.  Good stuff.

Unfortunately, I then started running into problems.  First, I found that if I changed the disc in the DVD drive, the title shown in XBMC would change, but I couldn't play the new disc, and in fact I couldn't even see any files on it.  I had to reboot each time to get it to completely accept the new DVD.

Next, I found that some commercial DVDs would play and some wouldn't. The ones which did, such as the first one I tried, would play perfectly every time, and the ones which wouldn't play didn't work at all, ever — I couldn't even go in and select individual files to play. 

I either got "something didn't play", or I got useless, jumpy, blocky video and mostly no audio. So it wasn't any kind of intermittent or random problem.

Finally, I found that the DVD menus worked inconsistently or not at all even on the discs which played normally. Again, even on the ones which seemed to play OK, sometimes I couldn't select anything at all from the DVD menus, and pretty much all of the time the scene selection menu didn't work, for example. Not good.

I tried several different DVD drives, in hopes that it was something drive-specific, but no luck there. I even tried a Blu-ray drive, and got the same results when playing DVD discs (by the way, I had no luck at all playing Blu-ray discs, but I had expected that).

At this point I was going to try some different operating systems and media player software, but when I was looking around for possibilities I found some notes on the XBMC website describing exactly the problems I was having. 

It seems that there are problems specifically with XBMC 12.3 (Frodo), which causes these kinds of symptoms and which did not exist with the previous version of XBMC.

It seems that a new release of XBMC will be coming along soon, so I assume that those who are more determined than I am to play DVDs right now would have two choices — either install the previous version of XBMC, which should work properly, or wait until the next version is available.

For my part, I will be waiting for the next version, and in the meantime I am going to look at the new NOOBS release, and perhaps try making a "native" installation of Raspbian and/or openELEC on a dedicated SD card.

Further reading

Topics: Linux, Open Source, Operating Systems

J.A. Watson

About J.A. Watson

I started working with what we called "analog computers" in aircraft maintenance with the United States Air Force in 1970. After finishing military service and returning to university, I was introduced to microprocessors and machine language programming on Intel 4040 processors. After that I also worked on, operated and programmed Digital Equipment Corporation PDP-8, PDP-11 (/45 and /70) and VAX minicomputers. I was involved with the first wave of Unix-based microcomputers, in the early '80s. I have been working in software development, operation, installation and support since then.

Kick off your day with ZDNet's daily email newsletter. It's the freshest tech news and opinion, served hot. Get it.


Log in or register to join the discussion
  • Lovefilm streaming

    Interesting write-up. Has anyone managed to get Lovefilm streaming to work on a Raspberry Pi? Last I heard it wasn't possible.
    Nick Heath
  • But the thing about MP4 files is...

    You wrote: "I thought the world was a wonderful place, until I realized that it was a DVD full of MP4 files. I already knew the Pi could play MP4, without any additional codecs. Grrr."

    As I understand it, MP4 file is a container for audio and video data. And that can be any one of numerous codec data (including MPEG-2 and VC-1). This is what people need to understand. Just because a player can play one MP4, doesn't mean it can play the next MP4. It all depends on the media formats contained inside the MP4 and whether your computer has the codecs installed to decode that format.
  • VLC

    Move along no cash needed.
    Alan Smithie
    • VLC might not work

      Last I tried it, VLC's performance was awful on the Raspberry Pi. The Pi's graphics card is still using a poorly coded proprietary driver and, unless something's changed, VLC might still not have proper hardware acceleration.
  • Good work

    Great articles, keep them coming.
  • Excellent

    One little nit - the prime assumption was not flat out wrong. An awful lot of Pis are sold for educational purposes. And for a $25 computer, $5 is a large add on.

    I for one am very glad I don't have to pay a $5 surcharge on every Pi so some people can play videos, and I am quite happy to fork out my $5 if I decide to do that.
    • Agreed

      The idea is to keep Pi prices low with the option to pay for additional features

      Now it would be cool if Pi can be used to emulate retro PC such as Apple 2, Amiga, Atari etc. It would make a good intro. to history of PC
      • Emulation, oh yes!

        http://blog.petrockblock.com/retropie/ Have a look there, lots of retro emulation going on. Atari, Amiga and a whole host more.