0XC00D1B9B

NS_E_NUM_LANGUAGE_MISMATCH 0XC00D1B9B Fix

Windows Errors Intermediate 👁 1 views 📅 May 27, 2026

This error hits when IIS Media Services or Smooth Streaming source index has mismatched language counts across audiences. Fix is straightforward.

When This Error Hits

You're running IIS Media Services (usually 4.1 on Windows Server 2012 R2 or 2016). You've got a Smooth Streaming presentation with multiple bitrate audiences — say, 1080p, 720p, and 480p. Each audience has its own <StreamIndex> entries for video, audio, and text tracks. The error pops when you try to play the stream or when the server validates the ISM (IIS Smooth Streaming) manifest file. The exact trigger: one audio or text track has a different number of language entries than the same track in another audience. For example, the 480p audio stream has 2 languages (English, Spanish) but the 720p audio stream has 3 (English, Spanish, French). The validator sees the mismatch and throws NS_E_NUM_LANGUAGE_MISMATCH (0XC00D1B9B).

Root Cause — Plain English

Think of each audience as a separate video file encoded at a different bitrate. Each file has its own audio and subtitle tracks. IIS expects consistency across all audiences for the same stream index. If one audience has 2 language tracks for audio, all audiences must have exactly 2. It doesn't matter if the lower bitrate file doesn't need the extra language — the manifest must declare the same languages for all bitrates. The culprit here is almost always a bad encoding job where a new language was added to only one bitrate. Could be a slip in Expression Encoder or a manual edit of the ISM file that went wrong.

The Fix — Step by Step

  1. Open the ISM file. It's plain XML. Look in your Smooth Streaming publishing point folder (usually C:\inetpub\wwwroot\YourStream\). The file ends in .ism.
  2. Find all <StreamIndex Type="audio"> elements. There should be one per audience. Example:
    <StreamIndex Type="audio" Name="audio" QualityLevels="3" Chunks="100" Url="...">
    <QualityLevel Index="0" Bitrate="96000" SamplingRate="44100" BitsPerSample="16"></QualityLevel>
    <c t="0" d="20000000" r="1" />
    <c t="20000000" d="20000000" />
    ...
    </StreamIndex>
  3. Check each <StreamIndex Type="audio"> for language attributes. Look for Language="en" or similar on the <QualityLevel> or on child <StreamIndex> elements (if nested). Count the unique language values in each audience's audio stream. Do the same for text/subtitle streams.
  4. Identify the mismatched audience. Let's say the 1080p audience has Language="en" and Language="es" — that's 2. The 720p audience might only have Language="en". That's the mismatch.
  5. Fix the mismatched audience. Either add the missing language track to the low-bitrate audience, or remove the extra language from the high-bitrate one. The easiest route: remove the extra language. Delete the extra <QualityLevel> or <StreamIndex> entry that has the mismatched language. Make sure the total number of language entries matches across all audiences.
  6. Save the ISM file. Then recycle the app pool for the Smooth Streaming site. You can do that from IIS Manager or PowerShell: Restart-WebAppPool -Name YourAppPoolName.
  7. Test the stream. Use a client like Smooth Streaming Sample Player or VLC with the ISM URL. Should play clean now.

If It Still Fails

Two things to check. First, make sure the number of QualityLevel elements inside each <StreamIndex Type="video"> is the same across audiences. Video tracks also count toward this error if the manifest groups them under the same index. Second, run the IIS Smooth Streaming manifest validator tool — it's part of the IIS Media Services SDK. It'll pinpoint the exact line that's causing the mismatch. If you edited the ISM by hand, double-check that the XML is well-formed. A missing closing tag can confuse the parser. Worst case, regenerate the manifest from source files using Expression Encoder 4 SP2 or FFmpeg with the Smooth Streaming muxer. Re-encode from scratch is overkill, but it's a clean slate.

Was this solution helpful?