您的位置:首页 > 其它

WPF MediElement 视频播放

2013-05-17 22:59 651 查看
WPF中可以使用MediaElement控件来进行音视频播放,然后需要做个进度条啥的,但是MediaElement.Position(进度)和MediaElement.NaturalDuration居然都不是依赖属性,简直不能忍!

好吧,首先说说比较传统的做法(winform?)

slider用来显示进度以及调整进度,tb1显示当前进度的时间值,tb2显示视频的时长。

player_Loaded 事件中使用DispatcherTimer来定时获取当前视频的播放进度,

player_MediaOpened 事件中获取当前视频的时长(只有在视频加载完成后才可以获取到)

slider_ValueChanged 事件中执行对视频进度的调整

public class TimeSpanConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{

var ts = TimeSpan.FromMilliseconds((double)value);
return string.Format("{0:00}:{1:00}:{2:00}", ts.Hours, ts.Minutes, ts.Seconds);
}

public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}


View Code
xaml中的转换器:

<local:TimeSpanConverter x:Key="TimeSpanConverter"/>

其实两种方法实现的都差不多,都需要计时器定时的去获取当前视频的进度,但第二种方面显然要优雅一些。

文章就写到这儿,如有疏漏错误,欢迎指正。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: