Wednesday, 7 September 2005

Tip: ffmpeg, 3GPP and QuickTime

Firstly, hands down Apple's QuickTime is the easiest way to create
3GPP-compliant content, such as for mobile phones. I use 3GPP as a format
for downloaded pod- and vid-casts so that I can watch them while I'm in

However, most of this content doesn't originate on my Mac, but on my Linux
box (connected to broadband), where the transcoding is scripted. Here I use
ffmpeg which can also encode to 3GPP (H263/MPEG4/AMR/AAC all supported) with
some work.

So in theory I've cut QuickTime out of loop -- but I get interesting results
especially with video clips longer than 10 minutes. On my pvPlayer (running
on a Nokia N-Gage) the clips steadily start to drop more and more frames as
the clip goes on.

The solution to this is to 'flatten' the 3GPP file using Apple QuickTime.
Now if you don't have QuickTime Player Pro, get BitPlayer (Mac only) which
offers the features you need in a free download. Mobilehackerz (in Japanese)
is the benchmark for this sort of encoding, and they seem to do exactly the
same thing.

Basically you use QuickTime to re-wrap the file without re-encoding it. Open
the movie in BitPlayer, choose Export Movie... from the File menu, and
change the format to 3GP. Click Options... and on the Video tab change the
codec to Passthrough. Do the same on the Audio tab and click OK and Export.
A minute later you have a file which will play through completely on all

Now this isn't superstition, QuickTime does change the file (I'm not exactly
sure how), and seems to also make it smaller. Hmmm... Wonder what the
'special sauce' is there.