avconv replaces the venerable ffmpeg. It can be used to convert videos for the iPhone quite easily.
apt-get install avconv libavcodec-extra-53 libx264-123 x264
then run this script:
avconv -i input-file.mp4 \
-vcodec libx264 -vprofile high \
-t 30 \
-preset slow \
-b:v 1000k -maxrate 1000k \
-bufsize 2000k -vf scale=1136:474 \
-acodec libvo_aacenc -b:a 192k output_file.mp4
Another example. This uses time to calculate elapsed time, also nice and ionice to try to reduce impact on system resources. It forces downsampling to two audio channels (-ac 2), useful if the source audio stream is in e.g. 5.1 format.
time ionice -c 3 nice -20 avconv -i whatever.avi \
-vcodec libx264 -vprofile high -preset slow -b:v 1000k\
-maxrate 1000k -bufsize 2000k -acodec libvo_aacenc \
-ac 2 -ab 112k output.mp4
A final example which forces a specific aspect ratio. The source video had the correct pixel dimensions but a bad aspect ratio was encoded in the original file (and was carried over to the recoded one), making it look squished.
avconv -i input.avi -vcodec libx264 -aspect 16:9 \
-vprofile high -preset slow -b:v 1900k -maxrate 1900k \
-bufsize 3800k -acodec libvo_aacenc -ac 2 -ab 112k output-iphone.mp4