你的位置:首页 > ASP.net教程

[ASP.net教程]WPF播放器


最近由于工作需要,需要做一个播放软件,在网上参考了很多例子,园子里有很多代码。其中最多的就是wpf自带的MediaElement控件,或者VLC视频播放器。

先附我自己查询资料的链接:

MediaEmelent控件例子

http://www.cnblogs.com/gnielee/archive/2010/05/06/wpf4-media-player-mediaelement.html

http://blog.zhigui.org/2011/04/wpf-simple-player/

VLC

http://www.cnblogs.com/Gavin001/archive/2013/05/01/3053465.html

 

由于我电脑可能是Ghost系统 或者由于被优化了。我发现我的MediaElement无法播放任何视频。通过控制面板关闭媒体中心之后,再也打不开了。真是坑!!!

只能放弃自带控件,查到有一个VLC的NET版。so。。。

附vlc.dotnet的github链接

https://github.com/ZeBobo5/Vlc.DotNet

 

首先,自己在nuget里面下载所需要的扩展:

 

完成之后 就看示例代码咯,github里面是有example的

 1 <Window x:Class="Vlc.DotNet.Wpf.Samples.MainWindow" 2     "http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3     "http://schemas.microsoft.com/winfx/2006/xaml" 4     "http://schemas.microsoft.com/expression/blend/2008" 5     "http://schemas.open" 6     "clr-namespace:Vlc.DotNet.Wpf.Samples" 7     "clr-namespace:Vlc.DotNet.Wpf;assembly=Vlc.DotNet.Wpf" 8     mc:Ignorable="d" 9     Title="MainWindow" Height="350" Width="525">10   <Grid>11     <Grid.RowDefinitions>12       <RowDefinition Height="*"/>13       <RowDefinition Height="Auto"/>14       <RowDefinition Height="Auto"/>15       <RowDefinition Height="Auto"/>16       <RowDefinition Height="Auto"/>17       <RowDefinition Height="Auto"/>18     </Grid.RowDefinitions>19 20     <wpf:VlcControl Grid.Row="0" x:Name="myControl"/>21 22     <Button Grid.Row="1" Click="OnPlayButtonClick">Play</Button>23     <Button Grid.Row="2" Click="OnForwardButtonClick" x:Name="Forward">Forward</Button>24     <Button Grid.Row="3" Click="GetLength_Click" x:Name="GetLength">Get Length</Button>25     <Button Grid.Row="4" Click="GetCurrentTime_Click" x:Name="GetCurrentTime">Get Current Time</Button>26     <Button Grid.Row="5" Click="SetCurrentTime_Click" x:Name="SetCurrentTime">Set Current Time to 5s</Button>27   </Grid>28 </Window>

首先加上 

然后加上 <wpf:VlcControl Grid.Row="0" x:Name="myControl"/>

 1 using System; 2 using System.IO; 3 using System.Reflection; 4 using System.Windows; 5  6 namespace Vlc.DotNet.Wpf.Samples 7 { 8   /// <summary> 9   /// Interaction logic for MainWindow.xaml10   /// </summary>11   public partial class MainWindow : Window12   {13     public MainWindow()14     {15       InitializeComponent();16       myControl.MediaPlayer.VlcLibDirectoryNeeded += OnVlcControlNeedsLibDirectory;17     }18 19     private void OnVlcControlNeedsLibDirectory(object sender, Forms.VlcLibDirectoryNeededEventArgs e)20     {21       var currentAssembly = Assembly.GetEntryAssembly();22       var currentDirectory = new FileInfo(currentAssembly.Location).DirectoryName;23       if (currentDirectory == null)24         return;25       if (AssemblyName.GetAssemblyName(currentAssembly.Location).ProcessorArchitecture == ProcessorArchitecture.X86)
            //vlc的dll路径,自己下载vlc播放器里面的libvlc.dll libvlccore.dll以及plugins文件夹26 e.VlcLibDirectory = new DirectoryInfo(Path.Combine(currentDirectory, @"..\..\..\lib\x86\"));27 else28 e.VlcLibDirectory = new DirectoryInfo(Path.Combine(currentDirectory, @"..\..\..\lib\x64\"));29 }30 31 private void OnPlayButtonClick(object sender, RoutedEventArgs e)32 {33 myControl.MediaPlayer.Play(new Uri("http://download.blender.org/peach/bigbuckbunny_movies/big_buck_bunny_480p_surround-fix.avi"));34 //myControl.MediaPlayer.Play(new FileInfo(@"..\..\..\Vlc.DotNet\Samples\Videos\BBB trailer.mov"));35 }36 37 private void OnForwardButtonClick(object sender, RoutedEventArgs e)38 {39 myControl.MediaPlayer.Rate = 2;40 }41 42 private void GetLength_Click(object sender, RoutedEventArgs e)43 {44 GetLength.Content = myControl.MediaPlayer.Length + " ms";45 }46 47 private void GetCurrentTime_Click(object sender, RoutedEventArgs e)48 {49 GetCurrentTime.Content = myControl.MediaPlayer.Time + " ms";50 }51 52 private void SetCurrentTime_Click(object sender, RoutedEventArgs e)53 {54 myControl.MediaPlayer.Time = 5000;55 SetCurrentTime.Content = myControl.MediaPlayer.Time + " ms";56 }57 }58 }

 

代码地址为:https://github.com/ZeBobo5/Vlc.DotNet/blob/master/src/Samples/Vlc.DotNet.Wpf.Samples/