When You See This Error
You're encoding a video file with Windows Media Encoder (usually version 9 Series or the one bundled with older Windows SDKs), and you select a two-pass VBR or CBR profile. Midway through the preprocessing step, the encoder stops and throws NS_E_INVALID_NUM_PASSES (0XC00D0BD5). The message reads: "The wrong number of preprocessing passes was used for the stream's output type." This happens most often when you try to encode a file from a source that's already been preprocessed (like a pre-sized WMV) or when you switch between single-pass and two-pass profiles mid-session without resetting the filter graph.
Root Cause
The culprit here is almost always a mismatch between what the profile expects and what the encoder's internal preprocessing filter set up. Windows Media Encoder uses a two-pass system for quality encodes: pass one analyzes the content, pass two actually encodes using that analysis. The error means the encoder thinks the filter graph has been prepped for a different number of passes than what the output profile needs. This can happen if:
- You selected a two-pass profile but the source file already has a single-pass analysis pass baked in (common when re-encoding a previously encoded WMV).
- You changed profiles mid-encoding without rebuilding the graph — the old pass count sticks around.
- You're using a third-party tool that wraps the Windows Media Encoder API and doesn't reset the pass count properly.
Don't bother with reinstalling the encoder or hunting for registry keys — that rarely helps. The fix is about making sure the encoder starts with a clean slate and the right profile.
How to Fix It
- Reset the filter graph completely. Close Windows Media Encoder entirely. Then go into
%TEMP%and delete any files that start withWMEncorWMV. These are leftover preprocessing files from a previous session. Reopen the encoder. - Select your profile first, then the source. Don't drag a source file in before setting your output profile. Open the encoder, go to the Properties panel, select your compression profile (e.g., "Windows Media Video 9 VBR Quality 100") FIRST. Then add your video source file. This ensures the filter graph builds with the correct pass count from the start.
- If it still fails, force a single-pass fallback. Switch your profile to a single-pass CBR variant (like "Windows Media Video 9 CBR"). Encode once. Then re-encode that output with your original two-pass profile. It's a workaround, but it works because the intermediate file is already in a clean state. I've done this dozens of times for stubborn files.
Still Failing?
Check three things:
- Source file codec: If your source is an AVI with a weird codec (like old DivX or MJPEG), the encoder might misread the stream type. Transcode to a raw YUV or uncompressed AVI first using FFmpeg, then feed that to Windows Media Encoder.
- Encoder version: The version bundled with Windows 7 SDK (circa 2009) is notorious for this bug. Use Windows Media Encoder 9 Series from Microsoft's standalone installer — it's more stable. If you're on Windows 10, the encoder is deprecated anyway; switch to Media Foundation's Transcode API or use FFmpeg with the
-c:v wmv2libavcodec. - Custom profiles: If you're using a custom PRX file, open it in Notepad and check the
Passesattribute. It should match theVBRPassescount. Mismatched values here cause this error instantly. Fix the numbers to match (e.g.,Passes="2"andVBRPasses="2").
That's the fix. It's annoying, but once you get the order right — profile first, source second — it stops happening. I haven't seen this error in years since I switched to FFmpeg for all Windows Media encoding.