本文主要是介绍WPF 怎么判断MediaElement视频播放完成,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
WPF MediaElement控件中没有属性可以直接判断视频是否被播放完了,那要怎么判断视频是否播放完成呢?
其实我们可以使用订阅MediaEnded事件,当视频播放完后,会触发该事件。
MediaElement.MediaEnded Event:在媒体结束时发生。
Namespace:
System.Windows.Controls
Assembly:
PresentationFramework.dll
下面我们来看示例:xaml中添加MediaElement控件,并赋予name值。
<Window x:Class="Software.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" x:Name="mainWin" FontFamily="微软雅黑"WindowStartupLocation="CenterScreen" WindowStyle="None" Title="MainWindow" Height="1040" Width="1920" Loaded="mainWin_Loaded"><Grid> <MediaElement Name="myMedia" LoadedBehavior ="Manual" UnloadedBehavior="Stop" Visibility="Hidden"/></Grid>
</Window>
后台实现:m_IsVoicePlayEnd :控制是否要播放下一个视频文件,在播放开始的时候,m_IsVoicePlayEnd 设置为false,等待视频播放完成后,触发MediaEnded事件,在该事件中重新对MediaEnded赋值为true。然后继续播放下一个视频。
private bool VoicePlayBack(string voicePath)
{try{if (!string.IsNullOrEmpty(voicePath)){if (System.IO.File.Exists(voicePath)){m_IsVoicePlayEnd = false;Application.Current.Dispatcher.Invoke(() =>{this.myMedia.Stop();this.myMedia.Source = null;this.myMedia.Position = new TimeSpan(0, 0, 0);this.myMedia.Close();this.myMedia.Source = new Uri(voicePath, UriKind.Relative);this.myMedia.ScrubbingEnabled = true;this.myMedia.Volume = 100;this.myMedia.MediaEnded += MyMedia_MediaEnded;this.myMedia.Play();});}elsereturn false;}elsereturn false;return true;}catch(Exception ex){Console.WriteLine(ex);m_IsVoicePlayEnd = true;return false;}
}//订阅MediaEnded事件
private void MyMedia_MediaEnded(object sender, RoutedEventArgs e)
{try{this.myMedia.MediaEnded -= MyMedia_MediaEnded;}finally{m_IsVoicePlayEnd = true;}
}
这里要注意个是因为多次订阅MediaEnded该事件,所以每一次视频播放完成后都要取消MediaEnded该事件的订阅,否则下次播放结束后,会多次触发MediaEnded该事件。
********************************************************************************************************************************************
这篇关于WPF 怎么判断MediaElement视频播放完成的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!