Я нашел ответ, и я так и думал. Кажется, вы не можете изменить язык вывода с Expression Encoder 3. Говорят о поддержке нескольких языков в Expression Encoder 4, но кажется, что, хотя я и не проверял, IIS Smooth Streaming.
Решение состоит в том, чтобы позволить Encoder выводить аудиофайл на английском языке, а затем изменять язык после факта.
Я выполнил это с помощью двух проектов с открытым исходным кодом, сосредоточенных вокруг DirectShow SDK и Windows Media Format SDK. Здесь есть оболочки .NET для обоих из них: DirectShow и WMFormat .
Проект 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. Этот метод должен быть вызван, чтобы изменение вступило в силу. Вы также должны убедиться, что делаете это после загрузки профиля считывателя.
Я не уверен, что кому-то еще понадобится это сделать. Но если это так, я надеюсь, что это поможет.