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();
}
private void ButtonBack_Click(object sender, RoutedEventArgs e)
{
MediaPlayer.Position = MediaPlayer.Position - TimeSpan.FromSeconds();
}
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版本的"万能播放器"。
感谢您的阅读,代码点击这里下载。
WPF播放视频的更多相关文章
- 【WPF】使用控件MediaElement播放视频
需求是点击按钮后,弹出弹窗播放视频.按钮的点击事件如下. public void ShowVideo() { Window window = new Window(); window.Width = ...
- 使用WPF制作视频监控多画面切换
前言 曾有做过一个产品,有一个功能是视频监控模块,视频监控首先想到的是视频多画面切换功能,由于前端是用WPF开发的,所以当时就做了一个多画面切换组件,效果如下: 功能设计前提: 由于要使用海康大华天地 ...
- AVAssetReader+AVAssetReaderTrackOutput播放视频
该文章引用自:http://www.jianshu.com/p/3d5ccbde0de1 IOS 微信聊天发送小视频的秘密(AVAssetReader+AVAssetReaderTrackOutput ...
- Android实现播放视频
转载:http://www.bdqn.cn/news/201311/12100.shtml 使用VideoView播放视频 VideoView,用于播放一段视频媒体,它继承了SurfaceView,位 ...
- Android使用TextureView播放视频
1.引言 如果你想显示一段在线视频或者任意的数据流比如视频或者OpenGL 场景,你可以用android中的TextureView做到. 1).TextureView的兄弟SurfaceView 应用 ...
- Cocos2dx3.11.1Android播放视频,后台 黑屏,无法记忆播放bug修改
/* * Copyright (C) 2006 The Android Open Source Project * Copyright (c) 2014 Chukong Technologies In ...
- 不完全解决Android微信HTML5 播放视频的问题(不显示控制条,可交互)
首先你需要知道以下内容: http://ad.weixin.qq.com/learn/2-3-3--%E9%80%9A%E7%94%A8%E5%BA%93 这是微信为广告商开放的API,我一直认为只有 ...
- Bootstrap 3 模态框播放视频
Bootstrap 3 模态框播放视频 I'm trying to use the Modal feature from Bootstrap 3 to show my Youtube video. I ...
- android SurfaceView中播放视频 按视频的原始比例播放
OnPreparedListener mediaPlayerOnPreparedListener = new OnPreparedListener() { @Override public void ...
随机推荐
- js学习笔记9----时间操作
1.时间操作函数如下: new Date(); //获取系统时间 getFullYear(); //年 getMonth()+1; //月,初始值为0 getDate(); //日 getDay( ...
- Ubuntu默认防火墙安装、启用、配置、端口、查看状态相关信息
Ubuntu附带了一个相对iptables简单很多的防火墙 配置工具:ufw ufw防火墙 即uncomplicated firewall,不复杂的防火墙,繁琐部分的设置还是需要去到iptables ...
- 什么是Javascript Hoisting?
Javascript是一门容易遭人误解的语言,但是它的强大毋庸置疑.个人觉得,要想深入理解Javascript语言,首先必须对其基本的概念(例如:Scope,Closure,Hoisting等)要真正 ...
- java集合学生管理系统
//student.java package com.sran.www; import java.util.Arrays; import java.util.Scanner; public class ...
- Loadrunner安装
安装参考网址:http://www.cnblogs.com/yangxia-test/archive/2012/10/30/2746621.html 本人验证过的,不自己写了 另附Loadrunner ...
- PAT Mooc datastructure 6-1
Saving James Bond - Hard Version This time let us consider the situation in the movie "Live and ...
- URL处理几个关键的函数parse_url、parse_str与http_build_query
parse_url() 该函数可以解析 URL,返回其组成部分.它的用法如下: array parse_url(string $url) 此函数返回一个关联数组,包含现有 URL 的各种组成部分.如果 ...
- PHP输出XML文件函数
PHP输出XML文件函数 function xml_out($content, $charset = 'utf-8') { @header("Expires: -1"); @hea ...
- Linux C 中 fork() 函数详解
一.fork入门知识 一个进程,包括代码.数据和分配给进程的资源.fork() 函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同 ...
- 07OC之KVC、KVO
在OC中,有着很多动态的特性,今天我们着重讲讲OC中的键值编码(KVC)和键值监听(KVO)特性. 一.键值编码(KVC) 在C#中,我们可以通过反射的方式动态去读写一个对象,有时候很方便,因为可以利 ...