私は答えを見つけました、そしてそれは私が思った通りです。Expression Encoder3から出力言語を変更できないようです。ExpressionEncoder4では多言語サポートの話がありますが、テストはしていませんが、IISSmoothStreamingに限定されているようです。
解決策は、エンコーダーがオーディオファイルを英語として出力し、事後に言語を変更できるようにすることです。
これは、DirectShowSDKとWindowsMediaFormatSDKを中心とした2つのオープンソースプロジェクトを使用して実現しました。DirectShowとWMFormatの両方に.NETラッパーがあります。
WindowsMediaNetプロジェクトには、WMVCopyというサンプルプロジェクトがあります。これにより、ヘッダーなどを再構築しながら、あるWMVファイルを別のファイルにコピーします。ただし、ストリームを再エンコードするのではなく、あるファイルから次のファイルにコピーするだけです。それがまさに私が欲しかったものです。
WMVCopyコードを変更して、すべてのストリームの言語を変更しました。
int streamCount = 0;
m_pReaderProfile.GetStreamCount(out streamCount);
for (int streamIndex = 0; streamIndex < streamCount; streamIndex++)
{
IWMStreamConfig stream = null;
m_pReaderProfile.GetStream(streamIndex, out stream);
((IWMStreamConfig3)stream).SetLanguage(language);
m_pReaderProfile.ReconfigStream(stream);
}
これにより、各ストリームがループされ、言語が指定されたLCID文字列に設定されます。言語はen-usまたはca-frの形式である必要があります。インポート部分はReconfigureStream部分です。変更を実際に有効にするには、そのメソッドを呼び出す必要があります。また、リーダープロファイルがロードされた後にこれを行うことを確認する必要があります。
他の誰かがこれを行う必要があるかどうかはわかりません。もしそうなら、私はこれが役立つことを願っています。