在如今的項目中須要使用到播放視頻的功能,原本打算使用VLC來作的。後來發現WPF 4.0以後新增了MediaElement類,能夠實現視頻播放。git
<Grid> <Grid.RowDefinitions> <RowDefinition Height="*"/> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <Grid Background="Black"> <MediaElement x:Name="MediaPlayer" LoadedBehavior="Manual" MediaOpened="MediaPlayer_MediaOpened" /> </Grid> <Grid Grid.Row="1"> <Grid.ColumnDefinitions> <ColumnDefinition Width="*" /> <ColumnDefinition Width="Auto" /> <ColumnDefinition Width="*" /> </Grid.ColumnDefinitions> <StackPanel Grid.Column="1" Orientation="Horizontal"> <Button x:Name="ButtonOpen" Click="ButtonOpen_Click" Content="Open..." Width="100" Height="25" Margin="5"/> <Button x:Name="ButtonPlay" Click="ButtonPlay_Click" Content="Play" Width="100" Height="25" Margin="5" /> <Button x:Name="ButtonStop" Click="ButtonStop_Click" Content="Stop" Width="100" Height="25" Margin="5" /> <Button x:Name="ButtonForward" Click="ButtonForward_Click" Content="Forward" Width="100" Height="25" Margin="5" /> <Button x:Name="ButtonBack" Click="ButtonBack_Click" Content="Back" Width="100" Height="25" Margin="5" /> </StackPanel> </Grid> </Grid>
private string _videoPath; public MainWindow() { InitializeComponent(); } private void ButtonOpen_Click(object sender, RoutedEventArgs e) { OpenFileDialog dialog = new OpenFileDialog(); dialog.Filter = "Video File(*.avi;*.mp4;*.mkv;*.wav;*.rmvb)|*.avi;*.mp4;*.mkv;*.wav;*.rmvb|All File(*.*)|*.*"; if(dialog.ShowDialog().GetValueOrDefault()) { _videoPath = dialog.FileName; } } private void ButtonPlay_Click(object sender, RoutedEventArgs e) { MediaPlayer.Source = new Uri(_videoPath); MediaPlayer.Play(); } private void ButtonStop_Click(object sender, RoutedEventArgs e) { MediaPlayer.Stop(); } private void ButtonForward_Click(object sender, RoutedEventArgs e) { MediaPlayer.Position = MediaPlayer.Position + TimeSpan.FromSeconds(20); } private void ButtonBack_Click(object sender, RoutedEventArgs e) { MediaPlayer.Position = MediaPlayer.Position - TimeSpan.FromSeconds(20); } private void MediaPlayer_MediaOpened(object sender, RoutedEventArgs e) { // Get the lenght of the video int duration = MediaPlayer.NaturalDuration.TimeSpan.Seconds; }
這樣就能夠簡單的實現對視頻的播放,暫停,快進,快退等。不過MediaElement是有缺陷的,它支持的視頻格式和Windows Media Player同樣。能夠把MediaElement當作是WMP的一個WPF組件。若是要播放WMP不支持的格式。github
1. 使用VLC開源庫,支持的視頻格式很是多,地址:https://github.com/videolan/vlcide
2. 在本地安裝解碼器組件,相似的有:K-Lite Codec Pack。ui
這樣就能夠實現一個WPF版本的"萬能播放器"。spa
感謝您的閱讀,代碼點擊這裏下載。code