From Miha Lunar (Liquify):
I was wondering if it was possible to interface AIR with FFmpeg - yep it is!
Turns out it’s pretty cool for recording smooth videos with no frame drop, since you can hook onto EXIT_FRAME / ENTER_FRAME and send every frame rendered. Of course this means that any code relying on getTimer() or Timers or any time-based thing might not be accurately recorded, since recording happens at a lower frame rate, but gets played back at a constant frame rate. Since frame capture happens via bitmapData.draw(), only content drawn through that is shown (no StageVideo or Stage3D).
The recorder interfaces with FFmpeg via standard input/output and relays frames as ARGB values received from the streamer. The bottleneck is definitely on the recording end, since it has to draw the stage twice (once with draw() and once normally) and then copy the pixels into a ByteArray using copyPixelsToByteArray (which is why it’s limited to Flash 11.4 and upwards for now).