How to install ffmpeg, mencoder and flvtool2 on Mac OSX Leopard, convert an AVI to FLV, and view the FLV video with FlowPlayer

This is a short tutorial on how to quickly get up to speed with FLV movie creation (transcoding) and viewing (Flash player). I tried to install ffmpeg using ports and fink, but had problems. The instructions I found [here](http://www.macosxhints.com/article.php?story=20061220082125312) work though. The following is my adaptation of the instruction, where I show you how to install both ffmpeg and flvtool2. First, download ffmpegx, which contains ffmpeg from Then, mount the .dmg file, navigate to the mounted disk, and control-click on the ffmpegX application (ffmpegX.app), choose Show Package Contents from the pop-up menu, and copy the ffmpeg binary to, for example, /tmp. Now execute the following commands in a terminal shell: ```bash # Move ffmpeg to /usr/local/bin: sudo mv /tmp/ffmpeg /usr/local/bin/ # Change owner and make executable sudo chown root:wheel /usr/local/bin/ffmpeg sudo chmod 755 /usr/local/bin/ffmpeg ``` You're now ready to use ffmpeg; the following command lists all the supported input and output formats: ```bash ffmpeg -formats ``` Use the following command to transcode an AVI to FLV (Flash video) format: ```bash fmpeg -i mymovie.avi -s 320x240 -ar 44100 -r 12 mymovie.flv cat mymovie.flv | flvtool2 -U stdin mymovie.flv ``` To add metadata to the FLV file—such as video length, which is required for the Flash player progress bar—you need to install [flvtool2](http://rubyforge.org/projects/flvtool2/). This is done with the following command (note this requires Ruby and RubyGems, which are not part of all OSX Leopard installations): ```bash sudo gem install flvtool2 ``` Now add the metadata to the FLV file: ```bash flvtool2 -UP mymovie.flv ``` To test the FLV movie you just created, download and extract [FlowPlayer](http://flowplayer.org) to your folder of choice. Now create a page that loads your FLV movie; note that you need to update the paths: ```bash
This will be replaced by the player.
``` I've [been told](http://www.macosxhints.com/article.php?story=20060923203722112&query=dec) that [mencoder](http://www2.mplayerhq.hu/MPlayer/releases/) produces higher quality FLV videos, so lets compare the mencoder output to ffmpeg by first downloading and extracting mencoder to /tmp. Now move mencoder to /usr/local/bin: ```bash sudo mv /tmp/mencoder /usr/local/bin/ sudo chown root:wheel /usr/local/bin/mencoder sudo chmod 755 /usr/local/bin/mencoder ``` Next transcode the video to FLV format using mencoder: ```bash mencoder mymovie.avi -ofps 12 -o mymovie.flv -of lavf -lavfopts \ i_certify_that_my_video_stream_does_not_use_b_frames -oac lavc -lavcopts \ acodec=mp3:abitrate=32 -srate 22050 -ovc lavc -lavcopts vcodec=flv:\ vbitrate=100:mbd=2:mv0:trell:v4mv:cbp:last_pred=3:predia=2:dia=2:\ vmax_b_frames=0:vb_strategy=1:precmp=2:cmp=2:subcmp=2:preme=2:qns=2 \ -vop scale=360:240 ``` View the video in the Flash player; you should notice the difference in quality... For even higher quality encode the videos using the H.264 format, which FlowPlayer also supports; instructions can be found [here](http://www.brad-x.com/2007/05/19/yet-another-linuxnix-video-h264-howto/).