January 10, 2009

ffmpeg2theora and cpu power

This last week, I finally got the prototype for Air Mozilla 2 up and running. Air Mozilla is the live streaming video presence of Mozilla.

With the release of Firefox 3.1, we'll have native video support in the browser, actually Theora video + Vorbis audio in an Ogg container, and so I'm working on building our Air Mozilla capabilities out to support this and the new HTML5 <video> tag.

For the first prototype, the tool-chain is still very basic. I'm just focused on getting the video from my camera to your browser and none of the nice web-based UI and other cool bits I've got planned for later.

I've got Ubuntu 8.10 installed on my MacBook Pro (2.2 GHz Intel Core 2 Duo). I'm using dvgrab to pull the DV content off of a Panasonic AG-DVX100B via FireWire. The camera supports 480i/60 (NTSC), 480p/24fps, and 480p/30fps but I'm also likely to be supporting HD cameras sometime later this year. I pipe the data to ffmpeg2theora v0.23 for encoding and then use oggfwd to push the resulting video up to an icecast2 server.

This all works rather well as long as I'm using low or medium quality encoding settings in ffmpeg2theora but as soon as I move up the dial in quality, I start pushing the CPU on my MBP pretty hard. This will only get worse with HD.

I know for MPEG1, H.264 and other codecs, there are dedicated encoding cards but I don't think any such thing exists that would work with ffmpeg2theora. The standard libtheora isn't multi-threaded so I don't think more cores would help, though I could be wrong. So is this just an issue of speed then? I'd like to have some more freedom here so I'm hoping you all can help me answer this question.

What is the best value CPU for video encoding using the tool-chain I described above.

Posted by asa at 3:38 PM