在WPF 中能夠使用MediaElement 爲應用程序添加媒體播放控件,以完成播放音頻、視頻功能。因爲MediaElement 屬於UIElement,因此它同時也支持鼠標及鍵盤的操做。本篇將使用MediaElement 類和Windows API Code Pack 建立一個簡單的視頻播放器實現一些基本功能。測試說明avi、wmv、MP四、MP3媒體文件均可以播放。html
1、後臺邏輯代碼說明ide
1.選擇視頻文件 測試
在視頻文件瀏覽部分引入,並添加WMV、AVI 等文件過濾器。spa
點擊詳細參考.net
//選擇視頻文件 private void openBtn_Click(object sender, RoutedEventArgs e) { CommonOpenFileDialog open = new CommonOpenFileDialog(); open.EnsureReadOnly = true; open.Filters.Add(new CommonFileDialogFilter("Mp4文件", "*.mp4")); open.Filters.Add(new CommonFileDialogFilter("Wmv文件", "*.wmv")); open.Filters.Add(new CommonFileDialogFilter("Avi文件", "*.avi")); open.Filters.Add(new CommonFileDialogFilter("Mp3文件", "*.mp3")); if (open.ShowDialog() == CommonFileDialogResult.Ok) { //指定媒體文件地址 mediaElement.Source = new Uri(open.FileName, UriKind.Relative); playBtn.IsEnabled = true; } }
2.能夠使用play()/Pause()方法,控制視頻播放或暫停code
//開始播放 private void playBtn_Click(object sender, RoutedEventArgs e) { mediaElement.Play(); mediaElement.ToolTip = "開始播放"; } //中止播放 private void stopBtn_Click(object sender, RoutedEventArgs e) { mediaElement.Pause(); mediaElement.ToolTip = "中止播放"; }
3.經過修改MediaElement 的Position 值實現視頻進度調整操做。時間間隔經過TimeSpan 進行設置(下面代碼以10秒爲間隔)。視頻
//後退 private void backBtn_Click(object sender, RoutedEventArgs e) { mediaElement.Position = mediaElement.Position - TimeSpan.FromSeconds(10); } //前進 private void forwardBtn_Click(object sender, RoutedEventArgs e) { mediaElement.Position = mediaElement.Position +TimeSpan.FromSeconds(10); }
4. 音量調節部分只需將Slider Value 變化值與MediaElement Volume 值作一個簡單Binding 便可。htm
<MediaElement Height="300" Width="450" Name="mediaElement" Volume="{Binding ElementName=volumeSlider,Path=Value}" LoadedBehavior="Manual" />
2、前臺Xaml代碼定義blog
<StackPanel HorizontalAlignment="Center" Margin="20"> <Border BorderThickness="3" Background="Black"> <Border.BorderBrush> <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1"> <GradientStop Offset="0" Color="White"/> <GradientStop Offset="0.5" Color="Gold"/> </LinearGradientBrush> </Border.BorderBrush> <MediaElement Height="300" Width="450" Name="mediaElement" Volume="{Binding ElementName=volumeSlider,Path=Value}" LoadedBehavior="Manual" /> </Border> <StackPanel Orientation="Horizontal" Height="40" HorizontalAlignment="Center"> <Button x:Name="openBtn" Content="Open File" Style="{StaticResource btnStyle}" Click="openBtn_Click" Margin="0" Width="64"/> <Button x:Name="playBtn" Content="Play" Style="{StaticResource btnStyle}" Click="playBtn_Click"/> <Button x:Name="stopBtn" Content="Stop" Style="{StaticResource btnStyle}" Click="stopBtn_Click"/> <Button x:Name="backBtn" Content="Back" Style="{StaticResource btnStyle}" Click="backBtn_Click"/> <Button x:Name="forwardBtn" Content="Forward" Style="{StaticResource btnStyle}" Click="forwardBtn_Click" Height="30" Margin="5,5,5,0" VerticalAlignment="Top"/> </StackPanel> <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Margin="5"> <TextBlock Text="Volume" Foreground="Gold"/> <Slider x:Name="volumeSlider" Minimum="0" Maximum="1" Value="0.5" Width="200"/> </StackPanel> </StackPanel>
樣式資源定義ip
<Window.Resources> <Style x:Key="btnStyle" TargetType="Button"> <Setter Property="Background"> <Setter.Value> <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1"> <GradientStop Offset="0" Color="White"/> <GradientStop Offset="0.5" Color="#FF554D4A"/> </LinearGradientBrush> </Setter.Value> </Setter> <Setter Property="FontStyle" Value="Italic"/> <Setter Property="Margin" Value="5"/> <Setter Property="Width" Value="60"/> <Setter Property="Foreground" Value="Gold"/> <Style.Triggers> <Trigger Property="Button.IsMouseOver" Value="True"> <Setter Property="Foreground" Value="Black"/> </Trigger> </Style.Triggers> </Style> </Window.Resources>
運行結果:
參考文章來自:http://www.cnblogs.com/gnielee/archive/2010/05/06/wpf4-media-player-mediaelement.html