How can I set the first frame of a video to an I-frame and the rest to P-frames (preferably with ffmpeg)? I'd like to try to do some datamoshing like this tutorial.  But I'd like to be able to do it programatically, so instead of vdub and avidemux, I'd like to figure out how to do as many parts of this process as I can with ffmpeg and/or other command-line tools.

The first problem I am having is that when I use the ffdshow codec rev 3556 with VDub it just outputs a broken video.  I feel like I got close to getting what I want, which is frame 0 as an I-frame and all the rest as P-frames with the following command

ffmpeg -i input.mp4 -force_key_frames 00:00:00.000 output.avi


There are a couple of problems with this:


I get B-frames too, which don't work with that type of data-moshing
There's still I-frames every 10 or so frames


I feel like the problem is that I need to use a certain codec to encode the video in and also that -force_key_frames probably just enforces the addition of extra keyframe(I-frames) but doesn't prevent other I-frames from being created.
What you want is a very long GOP or I-frame interval. I believe the ffmpeg option -g nnnn will do that, where nnnn is the length of your video in frames. I don't know how to specify "no B-frames", and this will certainly all be codec-dependent. Give it a try.