后台代码处理MediaEnded事件
XML:
<MediaElement x:Name="mp" UnloadedBehavior="Manual" />
CS:
mp.Source = new Uri(“路径”);
mp.Play();// 设置启动播放
mp.MediaEnded += new RoutedEventHandler(timerEvent); // 添加媒体播放结束事件 -- 重新播放
mp.Loaded += new RoutedEventHandler(media_Loaded); //添加元素加载完成事件 -- 自动开始播放
mp.Unloaded += new RoutedEventHandler(media_Unloaded); // 添加元素卸载完成事件 -- 停止播放
private void media_Loaded(object sender, RoutedEventArgs e)
{
(sender as MediaElement).Play();
}
private void media_Unloaded(object sender, RoutedEventArgs e)
{
(sender as MediaElement).Stop();
//mp.Stop();
}
private void timerEvent(object sender, RoutedEventArgs e)
{
// MediaElement需要先停止播放才能再开始播放,
// 否则会停在最后一帧不动
(sender as MediaElement).Stop();
(sender as MediaElement).Play();
}
**
这样的循环播放视频,之前写的那个Demo可以循环的,但是后来换了另一个项目,把之前的代码复制过来,不知道为什么不起作用。经过一系列的网上侦查,终于找到了解决方法。需要在媒体结束时生效。话不多说,上代码
**
//只需要加上这个就好了
mp.MediaEnded +=new RoutedEventHandler(Mp_MediaEnded);
private void Mp_MediaEnded(object sender, RoutedEventArgs e)
{
//设置一下视频进度,确保从头开始播放
mp.Position = TimeSpan.Zero;
mp.Play();
}