# Disable alt-ref and limit reference frames ffmpeg -i input.mov -c:v libvpx-vp9 -auto-alt-ref 0 -arnr-maxframes 0 -lag-in-frames 0 output.webm If the ghost disappears, you’ve confirmed it’s an ALTREF or Golden Frame issue. You have three solutions, ranked from "quick fix" to "proper patch."
This wasn't a decoding error. This was the encoder lying to us about its state. In VP9, Libvpx uses a complex reference frame structure. Unlike H.264’s simple "past/future" references, VP9 maintains up to eight reference frames simultaneously: LAST, GOLDEN, ALTREF, and their temporal variants.
Welcome to Ghosts S01E11: Libvpx . Let’s exorcise it. It started with a routine archival job. We were transcoding a film scan (ProRes 4444 → WebM) for a client’s interactive museum installation. The command was standard: ghosts s01e11 libvpx
ffmpeg -i input.mov -c:v libvpx-vp9 -b:v 0 -crf 18 -pass 1 -f null /dev/null ffmpeg -i input.mov -c:v libvpx-vp9 -b:v 0 -crf 18 -pass 2 output.webm Libvpx is a phenomenal encoder—it often beats x265 at half the bitrate for animated or grainy content. But it is also a complex state machine. Ghosting artifacts are a reminder that "lossy" doesn't just mean losing detail; sometimes, it means gaining things that were never there.
Pause the video. Look at frame 1042. Fine. Advance one frame. A faint, semi-transparent outline of frame 1042 remains superimposed over frame 1043. Another frame forward? The ghost fades. But it shouldn't be there at all. # Disable alt-ref and limit reference frames ffmpeg -i input
So next time you see a phantom block haunting your WebM, check your Libvpx version, check your alt-ref frames, and remember: you aren't losing your mind. You’re just wrestling with Season 1, Episode 11.
April 13, 2026 Tags: #FFmpeg #Libvpx #VP9 #VideoEncoding #Debugging #OpenSource There is a special kind of terror that strikes a video engineer at 2:47 AM. It’s not the terror of a system crash or a hardware failure. It’s the subtle, creeping dread that comes from watching a compressed video shift . In VP9, Libvpx uses a complex reference frame structure
Ghosts in the Machine: Debugging FFmpeg’s Libvpx Encoder (Season 1, Episode 11)