我找到了答案,而且和我想的一样。似乎您无法更改 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 部分。必须调用该方法才能使更改真正生效。您还需要确保在加载阅读器配置文件后执行此操作。
我不确定其他人是否都需要这样做。但如果是这样,我希望这会有所帮助。