After some pretty extensive playing around with ffmpeg I’ve reached 2 conclusions.
First, ffmpeg’s wmv support is shaky at best. You *can* get it to make good wmv files, but it’s hard. The only way I managed to make undamaged wmv files is from an uncompressed raw source. Which, for a full video, means the source file was over 50GB. Ouch. Any compression at all in the source, be it mpeg4, mpeg1, even wmv! meant that the output file would have problems.
Another problem I ran into was that making clips from a video is hit and miss. I needed to take a full video and make 1 min clips of the whole thing. With a compressed source the audio would sometimes end up out of sync with the video. I’m not sure but I’m reasonably certain that it was because if you tell ffmpeg you want -t 60 -ss 60 (60 seconds starting 60 seconds into the source), the audio starts exactly at 60 but the video starts at the closest (or next, not sure) keyframe. The solution for this is the same as for the wmv, you need to start with an uncompressed raw file.
The problem with the uncompressed raw file (other than space which wasn’t really a problem since I had a couple of TB available) is that you run into a Shlemiel the painter’s algorithm problem. It’s super quick (well as quick as video conversion can be since I was running my jobs threaded on a dual dual core server) to make the first few clips but as you get further and further into the video, each time it starts from the beginning and seeks to where you want to be. And in an uncompressed video it takes a long time to seek. My program became hopelessly IO bound so the threading wasn’t helping that much anymore and it would take 7 hours to make all the conversions and clips I needed to.
So we gave up on ffmpeg. Sort of. Instead I use a combination of windows tools and we’re going to buy a windows server. I start with an mpeg source that I cut up with mpgtx, then I convert all those to wmv with Windows Media Encoder 9 and finally convert them all to flv and mp4 with ffmpeg. All this takes about 2 1/2 hours to run on my desktop and the vast majority of the time being spent doing the wmv conversion. The only reason we have to buy a windows server is because of wmv. Boo.
If anyone has had success converting to wmv with ffmpeg I’d really like to hear it.
Note: I tried mencoder as well but it has an entirely different set of problems with wmv (which is bizarre considering they’re supposedly from the same code base!).