WPF MediaElement控件循环播放

博客内容讲述了在后台代码中处理MediaEnded事件以实现视频循环播放的问题。作者遇到一个情况,即复制了原本能正常循环播放的代码到新的项目中后无法工作。通过排查,发现解决方案是在MediaEnded事件中设置视频位置为零并重新播放,以确保视频从头开始。添加了`mp.Position=TimeSpan.Zero;`和`mp.Play();`后,视频循环播放功能恢复正常。
摘要由CSDN通过智能技术生成

后台代码处理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();
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值