在Windows应用商店应用中提供了MediaElement控件,该控件能为应用提供音频和视频播放功能。就像之前提到的,虽然在多媒体应用开发中,开发人员可以自行开发一套音频、视频编解码规范和开发媒体播放控件,但是这需要花费一定的工作量去完成,而使用MediaElement控件及其方法、属性及事件可以满足大部分一般应用开发的需求。

9.3.1     MeidaElement控件介绍

MediaElement控件本身并没有提供媒体操作界面,但是它提供了一组用于媒体操作相关的属性、事件及方法供开发人员使用,例如要在应用程序中通过MediaElement控件来启动媒体播放,可以创建一个Button按钮,在此按钮的事件处理程序中调用Play方法来启动媒体播放,下面将通过一个示例介绍MediaElement控件的使用方法。

首先新建一个Windows应用商店的空白应用程序项目,并命名为MediaElementSample,在项目中新建一个名为Video的文件夹,并向文件夹中添加要播放的视频文件SampleVideo.avi。然后打开项目中的MainPage.xaml文件,在Grid元素中添加一个MediaElement控件,代码如下所示:

<MediaElement x:Name="myMedia" HorizontalAlignment="Left" Height="647" Margin="129.842,71,0,0" VerticalAlignment="Top" Width="1098.483" Source="Video/SampleVideo.avi"/>

在上面的代码中,使用Source属性指定了要播放的视频文件路径。虽然代码非常简单,但是仅这些代码就使应用程序具备了播放多媒体的功能,启动调试可以看到视频播放效果,如图9-6所示。

图9-6 使用MediaElement控件播放视频

接下来介绍一下MediaElement控件支持播放的媒体格式以及常见的事件、属性和方法,以便为后面的学习夯实基础。

(1)MediaElement控件支持的媒体文件格式

作为一个强大的媒体播放控件,MediaElement能够支持众多格式的媒体文件,具体来说,MediaElement支持的音频文件格式主要有:WMA7、AAC、MP3、AC3。支持的视频文件格式主要有:WMV-Simple Profile(VC-1)(800×600)、WMV-Main Profile(VC-1)(800×600)、WMV-Advanced Profile(VC-1)(800×600)、MPEG-4 Part2-Simple Profile(800×600)支持720P高清视频、MPEG-4 Part10(MPEG-4 AVC,H.264)Level 3.0-Baseline Profile(720×480)、MPEG-4 Part10(MPEG-4 AVC,H.264)Level 3.0-Main Profile(720×480/720×576)、MPEG-4 Part10(MPEG-4 AVC,H.264)Level 3.0-High Profile(720×480/720×576)、H.263(800×480)、AVI、MP4、ASF、WAV、MOV。

(2)MediaElement控件中的事件

MediaElement控件包含许多触发事件,它们会在相应的条件下触发,将这些触发事件配合以事件处理方法就可以实现一些特定的媒体播放操作。比如CurrentStateChanged事件会在媒体播放状态更改时触发,配合事件处理方法就可以在界面中显示出播放状态更改的信息;再比如BufferingProgressChanged事件会在媒体缓冲进度更改时触发,结合事件处理方法就可以实时显示出媒体的缓冲进度。下面是一些MediaElement控件的常见触发事件:

q  MediaOpened事件,媒体打开时触发。

q  MediaEnded事件,媒体播放完毕后触发。

q  BufferingProgressChanged事件,当BufferingProgress属性值更改时触发,BufferingProgress属性表示缓冲进度。

q  CurrentStateChanged事件,当CurrentState属性值更改时触发,CurrentState属性表示当前的播放状态。

q  DownloadProgressChanged,在DownloadProgress属性值更改时触发,DownloadProgress属性表示下载进度。

(3)MediaElement控件的属性

MediaElement控件提供了很多属性,用于设置或获取MediaElement控件的各种状态和行为等,比较常用的属性如下:

q  AutoPlay属性,该属性指定MediaElement控件是否自动播放媒体,默认值为True。

q  Source属性,该属性指定MediaElement控件播放的媒体文件来源。

q  IsMuted属性,该属性用于指定MediaElement控件是否设置为静音,设定为True值表示静音,默认值为False。

q  Stretch属性,用于指定视频媒体如何拉伸显示以填充MediaElement控件区域,属性值可以设定为None、Uniform、UniformToFill及Fill,默认为Fill。各种属性值的显示效果与在9.2.1节中介绍的Image对象的Stretch属性值完全相同,此处不再展示。

q  Volume属性,用于设定MediaElement控件的音频音量,可以设置为从0至1的任何数字,设置为1表示最大音量,默认值为0.5。

q  Balance属性,用于获取或设置立体声的音量大小,即声道设置。

q  Position属性,用于获取或设置媒体当前的播放进度,即播放的时间量,该属性为TimeSpan类型,默认值为0:0:0。

q  NaturalDuration属性,用于获取当前播放媒体的总时间长度。

q  CurrentState属性,用于获取MediaElement控件当前的播放状态,如表9-1所示,分别有7种状态。

表9-1 MediaElement控件的各种播放状态

状态

说明

Buffering

MedaiElement控件正在加载要播放的媒体文件。在此状态下MedaiElement的Position属性不前进。如果MediaElement已经在播放视频,则将继续显示所显示的上一帧

Closed

MediaElement控件中不包含媒体文件,画面上显示为一片空白

Individualizing

此状态适用于播放受DRM保护的媒体文件,检查相关的证书是否存在

Opening

MediaElement控件正在打开指定的媒体文件。在此状态下,Play、Pause或Stop方法处于等待接受命令中

Playing

MediaElement播放进行中,其Position属性向前推进

Paused

MediaElement播放暂停中,其Position属性暂时停止前进

Stopped

MediaElement播放停止中,其Position属性值为0:0:0。如果加载的媒体为视频,则MediaElement显示视频画面的第1帧

值得注意的是,当MediaElement控件处于不同状态时,调用相同的执行方法将会有不同的结果,比如当MediaElement处于Paused状态时,调用Play方法将开始媒体播放,而当MediaElement处于Playing状态时,再调用Play方法将不会有任何效果。在实际应用开发中,可以根据MediaElement控件的CurrentState属性为一个按钮添加多种控件模板和事件。

(4)MediaElement控件中的常见方法

MediaElement控件提供了一系列方法,利用这些方法可以实现对媒体播放的控制。可以这理解,属性为MediaElement控件提供了设置或获取参数的功能,而方法则让MediaElement控件执行具体的行为。下面是MediaElement控件中常用的、比较重要的方法:

q  Play(),从当前位置开始播放媒体。

q  Pause(),在当前位置暂停播放媒体。

q  Stop(),停止播放媒体,使播放位置回到媒体的第1帧。

q  SetSource(),使用提供的媒体文件流设置Source属性。

Windows Store App 音频和视频的更多相关文章

  1. 在桌面程序上和Metro/Modern/Windows store app的交互(相互打开,配置读取)

    这个标题真是取得我都觉得蛋疼..微软改名狂魔搞得我都不知道要叫哪个好.. 这边记录一下自己的桌面程序跟windows store app交互的过程. 由于某些原因,微软的商店应用的安全沙箱导致很多事情 ...

  2. Windows Store App 过渡动画

    Windows Store App 过渡动画     在开发Windows应用商店应用程序时,如果希望界面元素进入或者离开屏幕时显得自然和流畅,可以为其添加过渡动画.过渡动画能够及时地提示用户屏幕所发 ...

  3. Windows store app[Part 4]:深入WinRT的异步机制

    接上篇Windows store app[Part 3]:认识WinRT的异步机制 WinRT异步机制回顾: IAsyncInfo接口:WinRT下异步功能的核心,该接口提供所有异步操作的基本功能,如 ...

  4. Windows store app[Part 3]:认识WinRT的异步机制

    WinRT异步机制的诞生背景 当编写一个触控应用程序时,执行一个耗时函数,并通知UI更新,我们希望所有的交互过程都可以做出快速的反应.流畅的操作感变的十分重要. 在连接外部程序接口获取数据,操作本地数 ...

  5. Windows Store App Image开发示例

    通过上面的介绍,读者已经了解了Image对象及ImageBrush对象的使用方法和常用属性,在实际的开发工作中,比较常用的是Image对象,下面以一个幼儿园识物识字卡应用为例,来帮助读者更好的理解Im ...

  6. 05、Windows Store app 的图片裁切(更新)

    在 Win Phone Silverlight api 中,有一个 PhotoChooserTask 选择器,指定宽.高属性,在选择图片的时候, 可以进行裁切,代码: PhotoChooserTask ...

  7. 01、Windows Store APP 设置页面横竖屏的方法

    在 windows phone store app 中,判断和设置页面横竖屏的方法,与 silverlight 中的 Page 类 不同,不能直接通过 Page.Orientation 进行设置.而是 ...

  8. Windows store app[Part 1]:读取U盘数据

    Windows 8系统下开发App程序,对于.NET程序员来说,需要重新熟悉下类库. 关于WinRT,引用一张网上传的很多的结构图: 图1 针对App的开发,App工作在系统划定的安全沙箱内,所以通过 ...

  9. Windows Store App JavaScript 开发:获取文件和文件夹列表

    在应用程序中有时可能需要获取用户库中的内容,以便执行相关的操作.如果要获取某个用户库中的内容,需要先获取到这个用户库,获得用户库可以通过Windows.Storage命名空间中的KnownFolder ...

随机推荐

  1. Centos7搭建需要mysql的网站

    1.在centos7上安装好http.php.php-mysql服务 php-mysql是用来链接的工具 2.在centos5上yum安装mysql 注意在搭建本地yum源时把校验关闭,不然安装不上 ...

  2. jQuery选择器方式-用的不多的name选择器

    id:$("#id") name:$("[name='name']") class:$(".class") element:$(" ...

  3. [QT学习]拷贝文件

    sourceDir源绝对路径,toDir目标绝对路径 //拷贝文件: bool FileOperation::copyFileToPath(QString sourceDir ,QString toD ...

  4. webpack配置命令

    从2015年开始,webpack就是当前最火的构建工具.跟着时代向前走.准没错.我们要追随大神的脚步.走在前端技术栈的前列.大神等等我. 由于webpack是基于nodejs环境下的.所以先安装nod ...

  5. hdu 5506 GT and set dfs+bitset优化

    GT and set Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Probl ...

  6. Mac系统下配置JDK环境变量

    第一次用Mac做开发,在网上也搜索了一些环境变量配置的文章,在此总结一下以方便日后使用. 1.打开终端Terminal: 2.进入当前用户主目录,cd ~: 3.临时授权,sudo su: 4.输入密 ...

  7. 《BI那点儿事—数据的艺术》目录索引

    原创·<BI那点儿事—数据的艺术>教程免费发布 各位园友,大家好,我是Bobby,在学习BI和开发的项目的过程中有一些感悟和想法,整理和编写了一些学习资料,本来只是内部学习使用,但为了方便 ...

  8. 动态加载框架DL分析

    动态加载框架DL分析 插件化开发,主要解决三个问题1.动态加载未安装的apk,dex,jar等文件2.activity生命周期的问题,还有service3.Android的资源调用的问题 简单说一下怎 ...

  9. HTML中使背景图片自适应浏览器大小

    由于<body>标签的图片不能够拉伸, 解决办法: 1.图片不够大,又background属性不能拉伸图片: 2.只能用个div,把其z-index值设为负,并使这个div大小为整个bod ...

  10. git备份sublime插件及配置

    github备份sublime配置 sublime使用的时间长了,渐渐的就积累了一些有用甚至离不开的插件.但是有时候系统会出点问题,或者换电脑什么的,这时候要想在找回那个曾经的sublime就不那么容 ...