silverlight自定义控件之多媒体视频播放器

Silverlight本身提供了多媒体播放控件,但并没有封装好,可以直接使用的控件。在网上搜索了一些,都不是很适用,有些过于复杂要引用一大堆dll,感觉很臃肿,有些样式风格不适合。silverlight只提供了MediaElement,并不像以前html那样现成的直接使用那么方便,所以就自己封装一下,做一个满足基本功能的简单播放器。通过本篇随笔认识一下Blend强大的修改控件样式魔力,和实现一个简单的播放器。

功能点:

1、播放、暂停及显示当前播放状态

2、实时显示已播放时间

3、播放进度条,并能拖动播放位置

4、全屏按钮及双击播放画面入或退出全屏

5、调整音量

6、播放列表

播放器的基本功能点就是需求,将需求分解,罗列出实现难点和功能要点,评估工作量及风险。

一、认识MediaElement控件

public MediaElementState CurrentState { get; }MediaElement 的当前状态。状态可以为下列值之一(如在 MediaElementState 枚举中所定义):Buffering、Closed、Opening、Paused、Playing 或 Stopped。默认值为 Closed。

public bool AutoPlay { get; set; }如果自动播放,则为 true;否则为 false。默认值为 true。如果设置 Source 属性前将此属性设置为 true,则设置Source属性时自动播放视频。

public Uri Source { get; set; }获取或设置 MediaElement 上的媒体来源。即指定一个视频的统一资源标识符 (URI) 字符串。

public double Volume { get; set; }获取或设置媒体的音量大小。

//当媒体流已被验证和打开且已读取文件头时发生。在该自定义控件中主要通过该事件获取视频的总时长。

public event RoutedEventHandler MediaOpened
void mediaElement_MediaOpened(object sender, RoutedEventArgs e)
{
this.playTools.TotaPlayTime = (int)this.mediaElement.NaturalDuration.TimeSpan.TotalSeconds;
}
//当 MediaElement 不再播放音频或视频时发生。
在该自定义控件中主要通过该事件设置MediaElement为Stop,并判断是否循环播放而进行继续循环播放。
public event RoutedEventHandler MediaEnded
void mediaElement_MediaEnded(object sender, RoutedEventArgs e)
{
this.mediaElement.Stop();
if (this.IsReplay)
{
this.mediaElement.Play();
}
}
//当 CurrentState 属性的值更改时发生。在该自定义控件中主要通过该事件显示当前视频播放状态信息。
public event RoutedEventHandler CurrentStateChanged
if (this.mediaElement.CurrentState == MediaElementState.Buffering)
{
this.playTools.CurrentMessage = this.mediaElement.CurrentState + "
" + Math.Round(this.mediaElement.BufferingProgress * 100, 0).ToString() + "%";
}
//在存在与媒体 Source 关联的错误时发生。MediaFailed 事件可在下列条件下发生:
1、未找到文件。
2、无效的(无法识别的或不支持的)媒体格式。
3、播放期间未知的媒体错误。
//在该自定义控件中主要通过该事件显示错误信息。
public event EventHandler MediaFailed
void mediaElement_MediaFailed(object sender, ExceptionRoutedEventArgs e)
{
this.playTools.CurrentMessage = e.ErrorException.Message;
}
//该事件是播放时发生,用于获取当前已播放时间
CompositionTarget.Rendering += new EventHandler(CompositionTarget_Rendering);
void CompositionTarget_Rendering(object sender, EventArgs e)
{
int currentTime = (int)this.mediaElement.Position.TotalSeconds;
this.playTools.CurrentPlayTime = currentTime;
}

(0)

相关推荐

  • 魔力视频播放器附近设备功能怎么用

    不少安装了魔力视频播放器(MoliPlayer)的朋友会发现,自2.0版开始,无论是免费版,还是专业版;无论是iPhone还是iPad,魔力都提供了一个新功能——“附近设备”。但是大部分朋友却还不清楚 ...

  • 百度视频播放器怎么安装?百度视频播放器安装步骤以及下载地址

    很多宅男都选择使用百度视频播放器来观看视频,那么要怎么安装呢?下文小编就为大家带来百度视频播放器的安装使用步骤,需要的朋友们可以一起看看 百度视频播放器安装使用步骤: 1.先下载百度视频,需要注意的是 ...

  • 百度视频播放器(百度影音)怎么截屏?百度视频截屏方法

    在使用百度视频播放器观看视频时 ,看到精彩一幕想要截屏保存要怎么操作呢?下文小编就为大家带来百度视频的截屏方法介绍,有需要的朋友可以来下文了解下。  百度视频播放器截屏方法: 1.首先打开运行百度视频 ...

  • 百度视频播放器看到精彩一幕怎么截屏

    百度视频播放器怎么截屏呢?在使用百度视频播放器观看视频时 ,看到精彩一幕想要截屏保存要怎么操作呢?下文小编就为大家带来百度视频的截屏方法介绍,有需要的朋友可以来下文了解下。 百度视频播放器截屏方法: ...

  • MPC-HC全能视频播放器使用图文教程

    想要找一个完全没有广告骚扰的视频播放器,其实大家可以尝试用一下MPC-HC,这款播放器很赞,小编使用后感觉非常棒。但又担心很多朋友对这款MPC-HC并不熟悉,所以下面就为大家带来MPC-HC全能视频播 ...

  • 红蜻蜓抓图精灵抓视频播放器画面时一片漆黑解决及常见问题解答

    FAQ1:为何抓视频播放器画面结果一片漆黑? 用户普遍反映红蜻蜓抓图精灵(RdfSnap)无法对视频播放器中的视频进行正确捕捉,表现为只能捕捉播放器框架,而播放画面处只有黑背底没有图像,这个问题可以通 ...

  • 腾讯视频播放器观看了视频后如何返回视频页面内容

    在腾讯视频中,搜索到某个视频后,点击进入视频页面内容,观看了视频之后,想要返回视频页面内容的话,该怎么操作?腾讯视频播放器为你提供了快速定位功能,您有两个途径可以选择: 方式一:打开播放列表(图中右下 ...

  • Fedora 16安装Mp3和视频播放器的方法

    Fedora 16安装Mp3和视频播放器 安装命令如下: 1.添加软件源 # rpm -ivh http://download1.rpmfusion.org/free/fedora/rpmfusion ...

  • 哪个视频播放器最好用 播放器对比图文评测

    随着互联网的快速进步,各种视频播放器层出不穷,让用户应接不暇,不知道该如何选择。那么哪个视频播放器最好用?今天小编就给大家评测一下,大家可以参考一下,希望对大家有所帮助! 哪个视频播放器最好用 1、播 ...