1

WPFとMediaElementを使用してメディアプレーヤーを作成しています。いくつかのオーディオトラックがあるビデオを再生していました。しかし、彼らは両方とも同時に遊んでいます:(

それらの1つを再生するにはどうすればよいですか?それは可能ですか?

4

2 に答える 2

2

この問題は、使用しているオーディオとビデオのDirectShowコーデックにあると思います。Windows Media Playerでビデオを正しく再生できますか?いいえの場合は、適切なコーデックを再インストールしてください。

数か月前、多言語ソフトウェアでビデオヘルプを表示するためにオーディオトラックを切り替える要件のプロトタイプを完全に作成しました。私の経験はいくつかの選択肢を示しています:

  • WinFormsホストを介してWMPコントロールを使用し、次のように言語を変更します。

    var control =((IWMPControls3)wmpControl.Ctlcontrols);
    control.currentAudioLanguage = 9; // 英語

ここで見つけることができるLCIDの完全なリスト。ビデオ内のすべてのオーディオトラックを一覧表示するには、次のようなものを使用できます。

wmpControl.PlayStateChange += (o, args) => {
  if(args.newState == 3) {
    var control = ((IWMPControls3)wmpControl.Ctlcontrols);
    for(int i = 1; i <= control.audioLanguageCount; i++) {
      MessageBox.Show(control.getAudioLanguageID(i) + ": " + control.getAudioLanguageDescription(i));
    }
  }
};
  • 個別のオーディオトラックを使用し、MediaPlayerを使用してビデオと同期して再生します。この方法の主な問題は、オーディオとビデオの再生を同期し、開始、停止、シーク、..手動で行う必要があることです。

これがソリューションの選択に役立つことを願っています。

于 2012-06-28T11:32:00.600 に答える
0

WPFMediaElementでは不可能です。DirectShowのノウハウがある場合は、私のWPF MediaKitを試して、MediaUriElement / Playerを変更するか、独自のノウハウを作成することができます。

于 2010-07-13T21:40:43.327 に答える