我无法在 Windows 8 机器上使用 WPF MediaElement 播放视频。由于 MediaElement 控件依赖于 Windows Media Player,因此我尝试在 WMP 中播放我的 Win 8 盒子上的视频并且播放正常,因此它似乎不是编解码器问题。我目前的理论是它与 WMP 有关,而不是我需要对代码进行更改。任何帮助将不胜感激!
这是我模拟的一个测试应用程序,它也有问题;它在 Windows 7 上工作得很好(加载一个当你点击它时播放的黑屏),但在 win 8 中没有做任何事情(没有交互的白屏)。在得出结论之前,我已经尝试了几种不同的加载视频的方法,这可能与我的做法无关,这段代码只是最后一次修订。如果您想自己查看问题(实际上,只要知道它是否只是我的 Windows 8 机器会很有帮助),它是一个非常小的 WPF 应用程序,任何 WMV 都应该可以工作。
C#:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
bool opened = false;
var mre = new ManualResetEvent(false);
currentMediaElement.BeginInit();
currentMediaElement.Source = new Uri("Video.wmv", UriKind.RelativeOrAbsolute);
currentMediaElement.EndInit();
currentMediaElement.LoadedBehavior = currentMediaElement.UnloadedBehavior = MediaState.Manual;
currentMediaElement.MediaOpened += delegate
{
opened = true;
mre.Set();
};
currentMediaElement.Stop();
mre.WaitOne(5000);
}
private void currentMediaElement_MouseDown(object sender, MouseButtonEventArgs e)
{
currentMediaElement.Play();
}
}
XAML:
<Window x:Class="TestApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<MediaElement Name="currentMediaElement" MouseDown="currentMediaElement_MouseDown"></MediaElement>
</Grid>
</Window>