Ghosts S01e11 Libvpx (Fast »)
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:
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 . ghosts s01e11 libvpx
ffmpeg -i input.mov -c:v libvpx-vp9 \ -tile-columns 2 -row-mt 1 \ -lag-in-frames 16 \ # Reduce from default 25 -auto-alt-ref 1 \ # Keep on, but be careful -arnr-maxframes 3 \ # Reduce temporal filtering -cpu-used 2 \ output.webm Two-pass encoding often masks the bug because the first pass forces the encoder to re-evaluate scene boundaries more strictly. Welcome to Ghosts S01E11: Libvpx
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. We were transcoding a film scan (ProRes 4444
# 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."
# Check your version ffmpeg -version | grep libvpx # If it's 1.11 or 1.12, upgrade. If you can’t upgrade (e.g., in a production container), tune around the bug by reducing the temporal dependency depth.