我正在使用WPF和MediaElement编写媒体播放器。 我正在播放一个有几个音轨的视频。但他们都在同一时间玩:(
我如何只玩其中一个?是不是很有可能?
答案 0 :(得分:2)
我认为这个问题出现在您使用的音频和视频DirectShow编解码器中。你能在Windows Media Player中播放正确的视频吗?如果不是,请重新安装适当的编解码器。
几个月前,我已完全制定了切换音轨的要求,以便在我们的多语言软件中显示视频帮助。 我的经验表明了一些选择:
通过WinForms主机使用WMP控件,然后更改语言,如:
var control =((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));
}
}
};
我希望这有助于您选择解决方案。
答案 1 :(得分:0)
WPF MediaElement无法实现。如果你有一些DirectShow专有技术,你可以尝试我的WPF MediaKit并修改MediaUriElement / Player或创建你自己的。