0

Expression Encoder 3 SDKを使用していて、出力オーディオ言語を指定しようとしています。私がこれを行う最終的な理由は、オーディオトラックを英語としてエンコードし、他のオプションのオーディオトラックを他の言語として指定することです。Expression Encoderはこれをサポートしていませんが、別々のトラックを異なる言語としてエンコードする場合、Windows MediaStreamEditorは1つのファイルにまとめることができます。

出力言語を変更する方法が見つかりません。メタデータタグを試しましたが、それはタグ呼び出し言語を置くだけです。トラックの言語LCIDは実際には変更されません。したがって、ストリームエディタはまだそれを英語と見なします。

また、現在のスレッドのカルチャとUIカルチャを設定して、そこから取得していることを確認しました。ただし、SDKは内部で大量の新しいスレッドをスピンアップし、それらが私の文化を変えていると思います。

これは本当に面倒で、エンコーダーの言語の変更についてはどこにも見つかりません。検索用語は一般的すぎて、取得するのはエンコーダーのスペックシートだけです。:( 助けてください!

4

1 に答える 1

1

私は答えを見つけました、そしてそれは私が思った通りです。Expression Encoder3から出力言語を変更できないようです。ExpressionEncoder4では多言語サポートの話がありますが、テストはしていませんが、IISSmoothStreamingに限定されているようです。

解決策は、エンコーダーがオーディオファイルを英語として出力し、事後に言語を変更できるようにすることです。

これは、DirectShowSDKとWindowsMediaFormatSDKを中心とした2つのオープンソースプロジェクトを使用して実現しました。DirectShowWMFormatの両方に.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部分です。変更を実際に有効にするには、そのメソッドを呼び出す必要があります。また、リーダープロファイルがロードされた後にこれを行うことを確認する必要があります。

他の誰かがこれを行う必要があるかどうかはわかりません。もしそうなら、私はこれが役立つことを願っています。

于 2010-09-28T17:52:22.337 に答える