`
gstarwd
  • 浏览: 1538784 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

使用Silverlight,制作简单播放器的一点点心得。

阅读更多

首先介绍什么是Silverlight(网上copy的,只知道是和flash差不多的东西):
Silverlight是一个跨浏览器的、跨平台的插件,为Web带来下一代媒体体验和丰富的交互式应用程序体验。
做为微软出品的一个浏览器增强模块,它使得浏览器可以在HTML中渲染丰富的内容。它兼容于IE6和IE7,以及Firefox 1.5.0.8+和2.0+。
Silverlight使用WMV格式,支持从低分辨率的移动媒体到全屏HD视频,并支持VC-1编码。
Silverlight基于.NET Framework,更方便程序员进行开发,提供高速媒体编码、硬件加速、支持Windows Server “Longhorn”等特性。
Silverlight的开发代号WPF/E全称为Windows Presentation Foundation Everywhere,是微软新Windows图形子系统“Windows Presentation Foundation”(代号Avalon)的一个子集。WPF/E基于跨浏览器网络技术,依赖XAML语言和JavaScript脚本创建页面,与 Flash一样作为浏览器插件工作,同样能显示矢量图形、动画和视频,可以运行在多种操作系统甚至移动设备上。
好了切入正题:
我用Silverlight也只是做个类似Mediaplay一样的简单播放器而已,只是用到了它的一小部分功能而已。
前期,摸索做还比较顺利。下面只说几个被卡的地方:
1.Silverlight做的东西和网页有什么关系。
这 是开始的时候的疑惑。因为生成一个Silverlight项目,在解决方案下面有2个子项目,一个是Silverlight设计项目,一个是web项目。 以为WEB子项目里面的Defult.aspx里面什么都没有,而且运行起来也和Silverlight没关系。不过还好,Web项目里面还有 个.aspx文件,里面有一句:<asp:Silverlight ID="Xaml1" runat="server" Source="~/ClientBin/SilverlightApplication3.xap" MinimumVersion="2.0.31005.0" Width="100%" Height="100%" />就是这个,和Silverlight联系起来了。
2.全屏后的恢复的时候,播放窗口恢复不了。
最后解决是,全屏后恢复,需要添加:
Application.Current.Host.Content.FullScreenChanged += new EventHandler(fullScreenChange); // 全屏或者恢复的时候触发
事件,其中fullScreenChange是函数,在里面需要手动调整播放窗口的大小。之前,一直想,是不是要在ESC按键事件里面写。结果查资料发现加个事件很容易搞定。
3.全屏后按钮还停留在画面上,而不是自动隐藏起来。
按 照一贯经验,应该有个A.Visible = false or A.Visible=true 的东西。可是,怎么搞都没这个东西,只有:A.Visibility = Visibility.什么个东西。NND,英文不好,看属性没看明白,以为那些按钮是做到web页上去的,所以准备修改,但是太麻烦了。需要移植很多东 西,所以就慢慢摸索,结果发现:play.Visibility = Visibility.Collapsed; 可以隐藏,play.Visibility = Visibility.Visible;可以显示。总算全屏有全屏的样子了。
4.于拉动进度滑块来调整播放进度的问题。
这 是最后解决的,直到第一版本的Demo出来,都没解决这个问题。因为我用时间函数,每500毫秒会修改一次滑块的位置,从而会触发滑块的 Value_Changed事件,而拉动滑块也会修改其Value,从而也会触发Value_Changed事件。两者都会触发 Value_Changed事件,播放的时候会出现跳跃播放的情况,显然是不行的。查资料,说可以通过鼠标的 MouseLeftButtonDown,MouseMove,MouseLeftButtonUp 3个连续事件来完成一次鼠标拉动的动作,看起来虽然麻烦一点,但是也有道理,就尝试着写,可是开始就遇到麻烦了,滑块控件Slider根本就不进 MouseLeftButtonDown事件里面,我之前以为层的关系,或者什么原因,因为点上面的滑块确确实实是能点上的。最后查资料才知道,根本就触 发不了这个事件(鸟微软,触发不了的事件,也能添加,强烈鄙视一把)。一下子晕了,摸索再三,决定自己写个滑块控件,继承Slider,可是不行啊,现在 是触发不了啊,即使重写里面的鼠标事件也没用,看网上有的是自己绘制滑块来做的,我靠,那多复杂,自己画线,写事件。觉得应该不是这样。我就想,在时间函 数里什么时候触发的Value_Changed事件呢?因为如果避开时间函数触发应该就行了(也想过为什么跳着播放,就因为那500毫秒)。而手拉动的时 候把时间_timeclock暂停了。所以就要知道时间函数里什么时候触发的,分析,尝试,结果是:执行playSlider.Value = (fNow / fAll)*100; 修改值的时候调用了Value_Changed事件的。所以在之前,如果设置一个信号量,根据这个信号量不执行Value_Changed事件的内容就可 以了。尝试了一下,果然可以。至此,搞定。
5.Demo放到服务器上,其他人打开,提示要安装Silverlight 2.0,这是正常的,没这个插件是看不了的。可下下来之后,打开还是提示要安装该插件。晕了,怎么会这样呢。幸好有个同事前段时间玩过 Silverlight,他传了个版本在服务器上,其他人安装一次就行了。而我传的,却只有我能打开,所以怀疑是版本问题,结果卸载原本安装好的SDK, 换了同事了,移植了一下版本,放上去,终于解决。(鸟微软,再次鄙视,居然不向下兼容,或者什么鸟原因也不知道,我觉得我用的就是2.0版本啊,见鬼。最 可惜的是我装的版本,工具多一些,而且是英文版本的!)。

具体就前面一些。其实看起来也没什么,只是网上资料比较少,而且耽误了我好多时间,中间还重做了次系统(第一天跑好好的,第二天来就跑不起来了,鸟微软, 第三次鄙视)。所以就写点东西。开发SDK版本最好用最新的。而且要多尝试摸索,一个简单的功能,不可能要你用复杂的方法去解决。

做的Demo比较简单,也比较丑,只是一些基本功能而已。

地址:
(功能:播放,暂停,停止,拉动到想看的位置【因为要下载下来,有时候拉动可能会卡住】,调节声音大小,调节声道,可以静音,可以全屏,可以看到总播放时间和当前播放时间)【还有很多功能没做进去。很强大】

分享到:
评论

相关推荐

    silverlight 高级音乐播放器源代码

    本资源“Silverlight 高级音乐播放器源代码”是银光技术在音乐播放应用中的具体实践,它揭示了如何利用Silverlight的强大功能来实现一个功能完备、用户友好的音乐播放器。 1. **基础架构** 这个高级音乐播放器的源...

    Silverlight在线视频播放器

    本项目是使用C#编程语言构建的一个简单在线视频播放器,展示了Silverlight在视频流媒体处理方面的应用。 在C#中开发Silverlight应用程序,主要依赖于Visual Studio集成开发环境,通过Silverlight项目模板,开发者...

    silverlight写的播放器

    这个“silverlight写的播放器”很可能是一个基于Silverlight技术的视频播放应用,允许用户直接在浏览器中播放多媒体内容,无需安装额外的桌面软件。 Silverlight播放器的工作原理基于插件模型,它在用户的Web...

    Silverlight 播放器

    **Silverlight 播放器**是基于微软的Silverlight技术构建的一款多媒体播放软件,它专为播放MP4和FLV格式的视频文件而设计。本文将深入探讨Silverlight技术,播放器的功能特性,以及与MP3和FLV格式的关系。 **...

    SilverLight播放器.rar

    SilverLight播放器,SilverLight播放器,SilverLight播放器,SilverLight播放器,SilverLight播放器,SilverLight播放器,SilverLight播放器,

    SilverLight音乐播放器源码

    SilverLight,音乐播放器,代码详细

    用asp.net的silverlight控件做播放器例子

    在本文中,我们将深入探讨如何使用ASP.NET的Silverlight控件来创建一个功能丰富的播放器应用。Silverlight是微软推出的一种强大的富互联网应用程序(RIA)平台,它允许开发者构建具有丰富媒体体验和交互性的Web应用...

    silverlight播放器

    Silverlight播放器是一款由微软开发的富互联网应用程序(RIA)平台,主要用于创建和展示丰富的交互式媒体内容,尤其是视频和音频。这款技术在2007年首次发布,是微软对抗Adobe Flash的重要武器。然而,随着HTML5的...

    silverlight 播放器源码

    在本项目中,我们将深入探讨一个基于 Silverlight 实现的超酷播放器的源码。 ### 1. Silverlight 播放器基础 Silverlight 播放器通常包含以下几个核心组件: - **MediaElement**: 这是 Silverlight 中用于播放...

    Silverlight播放器源码

    总之,Silverlight视频播放器源码解析涉及了媒体元素的使用、播放控制、视频渲染、用户交互等多个方面,通过学习和理解这部分源码,开发者不仅可以掌握Silverlight的基础应用,还能深入了解多媒体处理技术。...

    Silverlight音乐播放器

    **Silverlight音乐播放器**是一种基于Microsoft Silverlight技术构建的多媒体应用程序,用于在线播放音频文件。Silverlight,作为微软推出的一种强大的RIA(Rich Internet Application)框架,为开发人员提供了丰富...

    silverlight音乐播放器

    Silverlight音乐播放器是一种基于Microsoft Silverlight技术的多媒体应用程序,它允许用户在Web浏览器中享受丰富的音乐体验。Silverlight,作为微软推出的一种跨平台、跨浏览器的插件,旨在提升网络媒体的交互性和...

    Silverlight“视频”播放器

    例如,你可以使用以下代码创建一个简单的视频播放器: ```xml ``` **3. 自定义播放控件** 为了实现更复杂的视频播放器功能,如进度条、音量控制、全屏切换等,你需要创建自定义的UI控件。例如,通过绑定`...

    Silverlight清爽简洁MP3播放器

    总的来说,这个项目展示了如何使用Silverlight结合C#来开发一个简单的MP3播放器。通过学习这个项目,开发者可以掌握Silverlight的MediaElement用法,了解XAML界面设计,以及如何将Silverlight应用集成到Web环境中。...

    微软官方Silverlight视频播放器

    【微软官方Silverlight视频播放器】是微软推出的一款先进的视频播放解决方案,它是基于Silverlight技术构建的开源项目。Silverlight是微软开发的一个跨浏览器、跨平台的插件,旨在增强Web上的媒体体验和富互联网应用...

    silverlight SmoothStreaming流播放器

    Silverlight SmoothStreaming流播放器是一种基于Microsoft Silverlight技术的高级媒体播放解决方案,它专为流畅、高质量的在线视频体验而设计。此技术充分利用了互联网带宽,通过动态适应不同的网络条件来提供无缝的...

    silverlight网页播放器

    "Silverlight网页播放器"是一种基于Microsoft Silverlight技术的在线视频播放解决方案。Silverlight是微软推出的一个跨浏览器、跨平台的插件,主要用于增强Web应用程序的媒体体验和交互性。这款播放器允许用户将视频...

    Silverlight+4+播放器

    《深入探索Silverlight 4 播放器技术》 Silverlight 4 是微软推出的一种强大的富互联网应用程序(RIA)平台,尤其在多媒体播放领域表现出色。它为开发者提供了丰富的功能,使得创建交互式、高品质的媒体体验成为...

    SilverLight音乐播放器源代码

    【SilverLight音乐播放器源代码】是一个用于二次开发的项目,它基于Microsoft的Silverlight技术,为音乐播放器提供了一个可定制化的基础平台。Silverlight是微软推出的一种富互联网应用程序(RIA)框架,用于创建...

Global site tag (gtag.js) - Google Analytics