2010-07-12 99 views
1

我正在使用WPF和MediaElement编写媒体播放器。 我正在播放一段视频,我有几个音轨。但他们都在同一时间:(WPF MediaElement,更改音轨

打我怎么只打其中之一吗?是不是在所有可能的?

回答

2

我认为这个问题出在你使用的音频和视频DirectShow编解码器上。你能在Windows Media Player中正确播放视频吗?如果不是,请重新安装拨号编解码器。

几个月前我已经完全原型d要切换音轨以便在我们的多语言软件中显示视频帮助。 我的经验给出了一些选择:

  • 使用通过的WinForms主机WMP-控制,然后更改喜欢的语言:

    功控制=((IWMPControls3)wmpControl.Ctlcontrols);
    control.currentAudioLanguage = 9; //英语

LCID的完整列表,您可以找到here。 要列出你可以使用像视频中的所有音轨:

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同步播放的视频。这种方法的主要问题是,您必须手动同步音频和视频播放,启动,停止,搜索。

我希望这可以帮助您选择您的解决方案。

+0

谢谢!这节省了我很多时间!我现在正在使用wpf的视频帮助,因此我会尝试使用Windows媒体播放器控件。 – 2012-06-28 11:51:00

+0

我有同样的问题,两个音轨同时播放。重新安装K-Lite Codec Pack解决了我的问题。谢谢! – CodingYourLife 2013-04-29 20:22:43

0

这是不可能的WPF MediaElement的,如果你有一些DirectShow中的专有技术如何,你可以试试我的WPF MediaKit并修改MediaUriElement/Player或创建你自己的。

+0

我遇到了这篇文章,并试图做同样的事情。我正在使用MediaKit,但我不确定如何修改它以切换音频流。任何细节都将不胜感激。 – thecaptain0220 2013-10-17 19:35:39