AI video post-production is the work you do after the generator hands you a clip: cutting, compositing, and reconciling footage so the result reads as one piece. It is where most of the quality actually lives. The generation gives you raw material. The edit is what makes it watchable.
I learned this the slow way last week, building a sales video for the learning platforms I help people build.
The setup was simple enough. I wrote a script, and an AI avatar (HeyGen) delivered it to camera. Talking head, clean audio, the pitch beat by beat. The avatar performance was genuinely good. The problem was everything around it: a stretch of auto-generated b-roll in the middle that looked exactly like auto-generated b-roll. Generic, floaty, saying nothing.
So I did the obvious thing. I regenerated it.
The moment I should have seen coming
The new render came back worse.
Not broken, just flatter. A different avatar take that didn't match the energy of the good one, b-roll that was still b-roll. I sat there comparing the two exports and realised I was about to burn a whole afternoon chasing a version that might, maybe, land a bit better on the next generation. Or the one after that.
That is the trap. When the tool can regenerate on demand, "run it again" feels like progress. It isn't. It is a slot machine with a render queue. I had a good avatar performance sitting right there in the original file, and I was gambling it away hoping the dice would hand me a finished video.
So I made the call: keep the original render, and fix everything else in post.
Once I said that out loud, the actual work got obvious. The avatar and audio were the keeper. The weak middle wasn't a prompting problem I could generate my way out of. It was an editing problem. And editing problems have known solutions.
What "fixing it in post" actually meant
I pulled the good avatar render into a compositing pipeline: Remotion for the graphics layers, ffmpeg for the joins. Then I went through roughly a dozen revisions in a single day. Small ones, mostly. Move a callout. Recut a beat. Swap a transition that flickered.
The big move was the middle. Instead of any generated b-roll, I dropped in real screen recordings of the actual platform. Footage of the thing the video is selling, doing the things the script describes. A course loading, a lesson playing, a tutor answering a question. It is specific where the generated version was vague, and specificity is most of what makes a demo believable.
Two things bit me along the way. Both are worth stealing, because they will bite anyone doing this.
1. Use the system ffmpeg, not the one bundled with your video framework
Remotion ships with its own ffmpeg. It is a stripped build. It handles scale, concat, copy, and audio, and that is about it. The filters I needed for compositing, overlay, trim, setpts, fps, are simply not in it.
The nasty part is how it fails. It does not throw a loud error that sends you to the docs. The composite just comes out quietly wrong, a layer missing or a timing off, and you waste twenty minutes assuming your own script is broken.
The fix is one line of discipline: call the full system ffmpeg directly. Install it (I used WinGet), confirm it is on your PATH, and point your scripts at ffmpeg, not at the framework's bundled copy. If a composite is misbehaving in a way that makes no sense, this is the first thing to check.
2. Reconcile your frame rates before you composite, not after
The avatar render was 25fps. The screen recordings were 60fps. If you overlay one on the other without dealing with that gap, you get a timing drift that shows up as lip-sync slipping and cuts that feel a frame off. It is subtle enough to pass the first watch and obvious enough to nag on the third.
Decide on one frame rate for the finished piece and convert everything to it deliberately, as part of the composite step. Do not let the tool guess. Mismatched frame rates are one of those problems that is trivial to fix on purpose and miserable to debug by accident.
The one technique I reused everywhere
Here is the move that did most of the work, and the one I would keep if I could keep only one.
Render a transparent overlay from Remotion. Composite it over the base video with ffmpeg.
That's it. You build your graphic (a hook card, a callout, an intro or outro bookend) as its own layer with a transparent background, export it with an alpha channel, then lay it on top of the avatar footage with ffmpeg. The base video never gets touched or re-encoded through the framework, so the avatar performance and audio stay pixel-for-pixel intact. You are decorating, not rebuilding.
I used the same pattern for the opening hook text, for the callouts over the demo footage, and for the branded cards that top and tail the whole thing. One technique, four jobs. That is the kind of leverage you want from a workflow: learn it once, apply it everywhere, stop reinventing.
What I actually took from this
The re-render did not make the video better. I want to be plain about that, because the whole promise of these tools is that another generation is one click away and might fix your problem for free.
Sometimes it will. Often it won't, and the click just costs you the good version you already had. The thing that made this video work was the editorial decision (keep the strong take, replace the weak middle with something real) and the compositing craft that carried it out. Not a cleverer prompt. The prompt was fine. The prompt was always fine.
The video is done. It hasn't gone out to anyone yet, so I can't tell you how it performs. What I can tell you is where the hours went, and they went into the edit, every one of them.
Which leaves me with a question I keep turning over, and I will hand it to you.
Where have you been re-running the generator, tweaking the prompt, waiting for a better output, when the real fix was never going to come from the model at all? When it was sitting in the edit the whole time, in the cut you hadn't made yet?
Have a look at whatever you're currently stuck regenerating. There's a decent chance the next version isn't a better prompt away. It's a better decision away.
Frequently Asked Questions
What is AI video post-production?
The work you do after the generator hands you a clip: cutting, compositing, and reconciling footage so the result reads as one piece. The generation gives you raw material. The edit is what makes it watchable, and it's where most of the quality actually lives.
Why does regenerating an AI video usually make it worse?
Because re-rolling isn't iteration, it's a slot machine with a render queue. The new take comes back flatter, with an energy that no longer matches the good material you already have, and chasing a better roll gambles away a performance that was working. Keep the good render and fix the rest in the edit.
What should replace generated b-roll?
Real screen recordings of the actual thing. A course loading, a lesson playing, a tutor answering a question. It's specific where the generated version is vague, and specificity is most of what makes a demo believable.
Why use the system ffmpeg instead of the bundled one?
Remotion ships a stripped ffmpeg build that handles scale, concat, copy, and audio, but not the filters compositing needs: overlay, trim, setpts, fps. Worse, it fails quietly. The composite just comes out wrong rather than throwing an error, and you waste twenty minutes assuming your own script is broken. Install the full ffmpeg, confirm it's on your PATH, and point your scripts at it directly.
How do you avoid lip-sync drift when compositing video?
Reconcile frame rates before you composite, not after. A 25fps avatar render overlaid on 60fps screen capture produces timing drift that reads as slipping lip-sync and cuts that feel a frame off, subtle enough to pass the first watch and obvious by the third. Pick one frame rate for the finished piece and convert everything to it deliberately.
Want help building systems like this for your organization?
Want a system like this built for your own material? Book a call.
