I am am having trouble getting consistent, and even reasonable, behavior out of a “Compress (DShow9)” and “Writer (DShow9)” chain.
I am processing live video input of dancers, and extracting motion data from the video which is used for generating graphics, but also sent via OSC to a SuperCollider program which is generating interactive music. I am working with a composer on the other side of the world, and I need to be able to send him both a video file of the dancers, and a data file of the derived data.
The most obvious thing to do is write a file of the video being analyzed. So I tossed in a AsVideo → Compress → Writer chain, but no joy. And yes, I have a MainLoop to slow things down.
Several problems:
-
The Compress “Property Page” bang has no effect.
-
Some codecs don’t work at all - no file is written.
-
Some codes appear to write only keyframes, so the output is way too fast (Indeo 5.1, Cinepak).
-
Some codecs write many duplicate frames so the output is way too slow (MJPEG, MS MPEG-4 V2).
-
Some are pretty close, but time is still noticeably off (Indeo 3.2)
So what have folks been able to get to work correctly? I can’t get anything to work right.
And since this has to be sent over the internet to China, I was hoping to avoid having to save raw files and off-line compress them. The machine I am using is more than sufficient for doing these compressions in real-time.
And WHY can’t we set the frame rate?!?! I realize the actual framerate depends on the loop timing, but having it always set to 25 is a PAIN. If there were an input pin that just wrote whatever value to the AVI header it would be a BIG help, so when you’re working at 30 or 60 fps the header would be closer to correct, and this seems like a trivial addition.
Thanks a bunch!