I’ve decided to convert all  movies to flv (flash video) format before saving them, inna youtube stylee.

This page seems to spell out how to do that – there’s a lot involved.  Here goes.

Step 1:  Get the source for ffmpeg from subversion.  It involves a checkout, which seems odd…i don’t want to check anything back in (real open source coding is still scary to me), i just want a copy.  Ah well, i’ll follow the instructions.

I made a new folder outside of my rails app (i hope this was the right thing to do) and in it typed this at the command line:

svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg

This copied over a load of stuff.  Next step is to configure and compile it.  This sounds complicated.   First hurdle – the instructions are all for mac!

Mencoder looks promising as well…

OK, going with a different guide -

Step 1 – mencoder.  DLd and installed mplayer and mencoder and associated codecs.

Step 2 – test mencoder, with this, at the command line:

mencoder input.avi -o output.avi -oac lavc -ovc lavc -lavcopts vcodec=xvid:acodec=mp3 > output.txt

I get this error:

Cannot find codec ‘xvid’ in libavcodec…
Couldn’t open video filter ‘lavc’.
Failed to open the encoder.

After a bit of mucking around i got it to work (blob_woman2.avi is my test video, converted to output.avi using the lavc codec).  I had to remove the -oac lavc bit, and the -lavcopts vcodec etc bit as well.

mencoder blob_woman2.avi -ovc lavc -o output.avi  > output.txt 

It reduced to about 10% of previous size which is impressive, but i think it was an unoptimal avi in the first place.  Let’s try with a 237 meg divx movie now:  ok, it’s working….i’m getting messages about duplicate frames andthe occasional missing frame but it seems to be working away there…Finished!  237meg down to 130meg, that’s pretty good!  I had to specify an audio codec as well this time: lavc as well.

Following the instructions in the guide, the next thing to do is to incorporate it into rails.  Dmytro, who’s blog i’m using, sets up a helper method that takes a command line instruction, and generates a new type of exception (which is also defined but simply extends StandardError).  To be continued.

Leave a Reply