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;

}


 

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索控件
, 事件
, this
, 流媒体播放
, public
, 获取视频总时间
, object视频
MediaElement
silverlight播放器、多媒体播放器、vlc多媒体播放器、gensee多媒体播放器、多媒体播放器apk,以便于您获取更多的相关知识。

时间: 2025-01-26 17:47:31

silverlight自定义控件之多媒体视频播放器的相关文章

闲来无事,倒腾了一个简单的silverlight视频播放器

近二日闲来无事,把silverlight的官方文档瞅了瞅,倒腾了一个简单的视频播放器,顺便也测试了下能否播放传说中的h.264,最终效果如下:   http://images.24city.com/jimmy/player/default.html 布局思路: Grid做为最外层容器,分上中下三行 第一行为视频播放窗口,同时单击视频时"暂停"遮罩层也放在这一行,只不过默认不显示而已第二行为进度条显示区,为了方便布局,在这一行用StackPanel作子容器横向放置了二个控件(进度条和时间

Android多媒体之VideoView视频播放器

本文实例为大家分享了视频播放器的两种方式,供大家参考,具体内容如下 1).SurfaceView 在布局文件中 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/too

网页视频播放器代码大全

收集最常用的网页中嵌入视频代码大全,各种各样的网页视频播放器代码. 网页中嵌入视频代码综合完全版 1.avi格式 代码片断如下: 程序代码 <objectid="video"width="400"height="200"border="0"classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA"> <paramname="ShowD

C#调用libvlc库制作视频播放器

问题描述 C#调用libvlc库制作视频播放器,如何才能播放在线视频?我直接给一个URL给libvlc_media_new_location这个接口函数,整个程序就死了,请各位牛人帮忙,或者推荐更好的库和例子. 解决方案 解决方案二:vlc是一个强大而且开源的多媒体播放器,也可以说是一个多媒体平台.它支持非常广泛的媒体格式的本地播放,完全可以媲美mplayer,其对视频网络流的处理能力更是非常强悍.libvlc就是指的vlc的核心,它向外提供了一系列的接口,通过接口,来实现视频播放等复杂的功能.

Python应用03 使用PyQT制作视频播放器实例_python

最近研究了Python的两个GUI包,Tkinter和PyQT.这两个GUI包的底层分别是Tcl/Tk和QT.相比之下,我觉得PyQT使用起来更加方便,功能也相对丰富.这一篇用PyQT实现一个视频播放器,并借此来说明PyQT的基本用法.  视频播放器 先把已经完成的代码放出来.代码基于Python 3.5: import time import sys from PyQt4 import QtGui, QtCore from PyQt4.phonon import Phonon class Po

维基百科HTML5视频播放器测试5年后终上线

中介交易 SEO诊断 淘宝客 云主机 技术大厅 嵌有视频播放器的维基百科词条页面 作为一家非营利性网络百科全书,维基百科凭借众包模式提供了大量的文本和图片资料,但视频内容却比较匮乏.毕竟,要共同编辑并上传视频要困难得多. 现在,维基百科计划通过Kaltura的HTML5视频播放器和工具套件加大视频投入,让用户可以向任何的维基百科文章中添加视频. 需要注意的是,维基百科已经允许用户向文章中添加视频,全球各地的广播公司也曾经向维基百科和Wikimedia Commons捐献过视频脚本.但通过最新的项

Flash/Flex学习笔记(6):制作基于xml数据源的flv视频播放器

今天折腾了大半天,总算搞出了一个功能简单的视频播放器,可以向公司领导交差了 :) 步骤: 1.Flash CS4 中 先拖一个"FLVPlayback"组件到舞台上 注:FLVPlayback本身已经具备了flv播放的基本功能,简单设置下属性就能播放视频了 2.加载xml数据源 xml数据源格式如下: <?xml version="1.0" encoding="utf-8"?> <data> <item flv=&q

Python应用03 使用PyQT制作视频播放器

作者:Vamei 出处:http://www.cnblogs.com/vamei 严禁任何形式转载.   最近研究了Python的两个GUI包,Tkinter和PyQT.这两个GUI包的底层分别是Tcl/Tk和QT.相比之下,我觉得PyQT使用起来更加方便,功能也相对丰富.这一篇用PyQT实现一个视频播放器,并借此来说明PyQT的基本用法.   视频播放器 先把已经完成的代码放出来.代码基于Python 3.5: import time import sys from PyQt4 import

分享几款Flash和Javascript网页视频播放器,不过我钟爱JCPlayer

分享几款Flash和javascript网页视频播放器.梦想中的视频播放器是这样的: 支持所有格式,兼容所有主流视频网站,支持播放列表.视频缩略图.全屏播放.画面调节.预加载.体积贼小,功能贼多--. 也许你的要求并没有这么高,找找下面有没有你满意的! 不过我钟爱JCPlayer,JCPlayer在官网下载太麻烦了,所以艾伟给大家共享了网盘,地址是:http://www.kuaipan.cn/index.php?ac=file&oid=21574733124337668 1. Videobox