网站首页
手机版

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

更新时间:2023-05-19 00:13:46作者:未知

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;
}

本文标签: 控件  自定义  发生  

为您推荐

win10怎么取消开机锁屏密码 Win10如何取消锁屏密码

win10怎么快速开机无需密码登录?经常使用win10电脑的用户应该知道,设置了开机密码之后每次开机都需要输入密码才可以登录,那如何去掉开机密码快速登录呢,一起

2024-09-30 00:11

win10显示我的电脑方法 win10中如何显示我的电脑

win10怎么显示我的电脑图标?经常使用电脑的用户应该知道,新电脑刚拿到手的时候,桌面上是不显示我的电脑的,那如何让其显示呢,一起来看看吧!

2024-09-30 00:11

win10微软Microsoft账户怎么退出登录(微软账户如何退出登录)

win10微软Microsoft账户怎么退出登录?大部分使用win10系统的用户都是使用微软Microsoft账户进行登录的,但是有部分用户在登录了微软账户之后

2024-09-30 00:10

win10分屏怎么设置 win10怎么调分屏

win10分屏怎么设置?当我们使用win10系统进行办公或者学习时,经常需要打开多个界面或者软件程序,非常的麻烦,这时我们就可以使用win10的分屏操作,那具体

2024-09-30 00:10

win10锁屏时间设置(win10锁屏怎么设置时间)

win10电脑自动锁屏怎么设置?经常使用win10电脑的用户都知道,我们只要一段时间不使用电脑,电脑就会自动锁屏,再次使用则需要输入锁屏密码,那如何将自动锁屏的

2024-09-30 00:10

win10怎么进入PE界面 windows10 pe怎么进入

win10PE界面怎么进入?众所周知,PE系统是带有有限服务的最小Win32子系统,那使用win10系统的用户该如何进入win10系统的PE界面呢,下面就由小编

2024-09-30 00:10