WPF播放视频

在现在的项目中需要使用到播放视频的功能,本来打算使用VLC来做的。后来发现WPF 4.0之后新增了MediaElement类,可以实现视频播放。

    <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不支持的格式。

1. 使用VLC开源库,支持的视频格式非常多,地址:https://github.com/videolan/vlc

2. 在本地安装解码器组件,类似的有:K-Lite Codec Pack

这样就可以实现一个WPF版本的"万能播放器"。

感谢您的阅读,代码点击这里下载。

时间: 2024-10-27 05:14:26

WPF播放视频的相关文章

Android使用TextureView播放视频

1.引言 如果你想显示一段在线视频或者任意的数据流比如视频或者OpenGL 场景,你可以用android中的TextureView做到. 1).TextureView的兄弟SurfaceView 应用程序的视频或者opengl内容往往是显示在一个特别的UI控件中:SurfaceView.SurfaceView的工作方式是创建一个置于应用窗口之后的新窗口.这种 方式的效率非常高,因为SurfaceView窗口刷新的时候不需要重绘应用程序的窗口(android普通窗口的视图绘制机制是一层一层的,任何

1.QT中播放视频,录音程序的编写

 1  通过process的方式播放视频 T22VideoPlayer.pro HEADERS += \ MyWidget.h SOURCES += \ MyWidget.cpp QT += gui widgets MyWidget.h #ifndef MYWIDGET_H #define MYWIDGET_H   #include <QWidget> #include <QProcess> #include <QSlider>   class MyWidget :

Unity中实现播放视频

突然想着在一个cube物体上播放视频会是怎样的情景.今天终于有时间来尝试下了.结果=>成功 下面来说说详细的步骤吧 准备阶段: 1.unity pro 专业版 =>  需正版(当然破解版也ok,你懂的). 2.安装QuickTime Player.必须要安装,否则导入movie资源时,unity会自动报错提醒的. 3.安装格式化工厂软件=>movie格式转换.其他工具也ok.我这里默认转换为MOV格式.100M的avi转换后大概7M. ====================== uni

播放视频的框架Vitamio的使用问题

以前用过这个牛逼的框架,后来又随意搞了下,发现播放不了视频了,搞了老半天才搞好,今天又随便整了下,发现又不行了,我勒个插! 现在终于又搞出来了,发现我总是把步骤搞错或少写了些东西 总的步骤: 一:导入vitamio_lib包 二:xml布局中的videoView要替换 三:java文件中的所有包导入的都是vitamio_lib下的东西 四:在java文件的setContentView前要加判断!!!<易遗忘> 五:在清单文件中要加入io.vov.vitamio.activity.InitAct

Firefox 无法播放视频

网上有很多介绍Firefox无法播放视频的解决方案,最常见的问题就是:为正确安装flash插件.其他的插件与flash插件冲突. 系统Win8.1(64位)下新安装了Firefox 29,flash插件也已正常安装,访问视频网站始终播放不了视频. 进入系统如下目录: C:\Windows\SysWOW64\Macromed\Flash\mms.cfg 1 SilentAutoUpdateEnable=1 2 AutoUpdateDisable=0 3 ProtectedMode=0 在文件尾部增

android 播放视频

播放视频的两种方式: 使用VideoView播放视频(方便,推荐) 使用MediaPlayer和SurfaceView播放视频(早期的方式) 第一种方式: 使用VideoView播放视频的步骤如下: 在界面布局文件中定义VideoView组件,或在程序中创建VideoView组建 调用VideoView的如下两个方法加载指定视频 setVideoPath(String paht):加载path文件所代表的视频 setVideoURI(URI uri):加载uri所对应的视频 调用VideoVIe

android 使用webview访问优酷无法播放视频的问题

在代码中加入 webview.getSettings().setJavaScriptEnabled(true);//支持js //webview.getSettings().setPluginsEnabled(true);//设置webview支持插件,已废弃 webview.settings.setPluginState(PluginState.ON); //设置webview支持插件 同时要在Manifest配置文件的application中加入 android:hardwareAccele

MPMoviePlayerController播放视频

基本的视频播放,应该都是用MPMoviePlayerController吧,SDK文档里给出的例子也是这样的. 一般的步骤: 1. 准备好视频路径,创建MPMoviePlayerController,即使是本地视频文件,也要生成NSURL路径. [cpp] view plaincopy NSString *file = [[NSBundle mainBundle] pathForResource:@"test_movie" ofType:@"mp4"]; NSURL

IIS主机在某些情况下无法播放视频的设置方法

默认情况下,Windows Server的IIS主机是不支持FLV文件类型,通过http访问是无法播放视频. MIME类型就是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开. 设置MIME,让IIS支持更多文件类型. 在IIS中添加FLV的MIME类型: IIS里面的站点属性->http头->添加Mime类型 扩展名填写:.flv Mime类型填写:flv-application/octet-stream 重新启动该站点 其它