我找到了答案,正如我的想法似乎你不能改變表達式編碼器3的輸出語言。在表達式編碼器4中有談論多語言支持,但它似乎有限,雖然我沒有測試它,IIS Smooth Streaming的。
的解決方案是允許編碼器輸出的音頻文件作爲英語,然後在事後更改語言。
我完成了這個使用兩個以DirectShow SDK和Windows Media Format SDK爲中心的開源項目,這兩個.NET包裝器位於:DirectShow和WMFormat。
WindowsMediaNet項目有一個名爲WMVCopy的示例項目。這會將一個WMV文件複製到另一個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部分。必須調用該方法才能使更改實際生效。您還需要確保在讀取器配置文件加載後執行此操作。
我不確定是否有其他人需要這樣做。但如果是這樣,我希望這有助於。
我想到的另一種方法是允許Expression Encoder使用錯誤的語言進行編碼,然後在事實之後更改語言。這個解決方案會很好,但是再次,如果不重新編碼,我也找不到一種方法。 – 2010-09-27 17:50:20