Encoding video is hard. I've been poking around Final Cut Pro X for the last 2 days, trying to find a good way to encode the video of a Talk I gave, and couldn't get to a reasonable size (~300MB) without terrible image and sound quality. Until I found this discussion: http://flowplayer.org/forum/7/12671

FFmpeg is, as always, the way to go. So to convert a 5GB H264 video into a 200MB video of decent quality, use this magic command:

ffmpeg -i InputVideo.mov -threads 6  -ar 44100 -ab 96k \
-vcodec libx264 -level 41 -crf 20 -bufsize 20000k \
-maxrate 25000k -g 250 -r 20 -s 1280x544 -coder 1 \
-flags +loop -cmp +chroma -subq 7 -me_range 16 \
-keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -bf 16 \
-b_strategy 1 -bidir_refine 1 -refs 6 -deblockalpha 0 \
-deblockbeta 0 OutputVideo.mp4