If you want to convert videos for use on the default iPhone video player, Handbrake is a good choice (there's now a native Linux GUI version available) -- it is now accepting any video input to create a Apple-compatible video file.
However, if your iPhone is jailbroken and you don't want to play the video back using the native iPhone video player (which for example doesn't support XVid/DiVX file formats), you do need to use a video converter like WinFF and an alternative video player such as MPlayer.
This conversion involves using mplayer4iphone (available through Cydia on jailbroken iPhones) and WinFF using an iPhone 3g with 2.2 firmware.
- Jailbreak your iPhone
- Install mplayer4iphone through Cydia
- Install WinFF on Ubuntu (Medibuntu repository) through Synaptic
- Now convert your videos using WinFF. Use these settings: 480x320, 15fps, XVid in AVI. It's crucial to keep the fps to 15, since 24fps, etc. was jerky for me. Here's my preset for WinFF if you want to create one: -r 15 -vcodec libxvid -vtag XVID -s 480x320 -aspect 4:3 -maxrate 1800k -b 1500k -qmin 3 -qmax 5 -bufsize 4096 -mbd 2 -bf 2 -flags +4mv -trellis 1 -cmp 2 -subcmp 2 -g 300 -acodec libmp3lame -ar 48000 -ab 128k -ac 2
- Once you have your video converted, connect to your iPhone using the SSH method detailed above. This will open a window showing your iPhone file structure.
- Mplayer needs your videos to be in this folder: root/var/media. Just drag your video files to that folder. (In Kubuntu, first install the 'SSH' and 'OpenSSH' packages. Then enter the following in Konqueror: sftp://root@[IP address]/var/media/. Your folder's contents will appear in Konqueror, and then just drag-and-drop as above.)
Now you can just play your files in fullscreen on Mplayer on your iPhone, with audio synch working fine.