Windows Store App 音频和视频
在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 音频和视频的更多相关文章
- 在桌面程序上和Metro/Modern/Windows store app的交互(相互打开,配置读取)
这个标题真是取得我都觉得蛋疼..微软改名狂魔搞得我都不知道要叫哪个好.. 这边记录一下自己的桌面程序跟windows store app交互的过程. 由于某些原因,微软的商店应用的安全沙箱导致很多事情 ...
- Windows Store App 过渡动画
Windows Store App 过渡动画 在开发Windows应用商店应用程序时,如果希望界面元素进入或者离开屏幕时显得自然和流畅,可以为其添加过渡动画.过渡动画能够及时地提示用户屏幕所发 ...
- Windows store app[Part 4]:深入WinRT的异步机制
接上篇Windows store app[Part 3]:认识WinRT的异步机制 WinRT异步机制回顾: IAsyncInfo接口:WinRT下异步功能的核心,该接口提供所有异步操作的基本功能,如 ...
- Windows store app[Part 3]:认识WinRT的异步机制
WinRT异步机制的诞生背景 当编写一个触控应用程序时,执行一个耗时函数,并通知UI更新,我们希望所有的交互过程都可以做出快速的反应.流畅的操作感变的十分重要. 在连接外部程序接口获取数据,操作本地数 ...
- Windows Store App Image开发示例
通过上面的介绍,读者已经了解了Image对象及ImageBrush对象的使用方法和常用属性,在实际的开发工作中,比较常用的是Image对象,下面以一个幼儿园识物识字卡应用为例,来帮助读者更好的理解Im ...
- 05、Windows Store app 的图片裁切(更新)
在 Win Phone Silverlight api 中,有一个 PhotoChooserTask 选择器,指定宽.高属性,在选择图片的时候, 可以进行裁切,代码: PhotoChooserTask ...
- 01、Windows Store APP 设置页面横竖屏的方法
在 windows phone store app 中,判断和设置页面横竖屏的方法,与 silverlight 中的 Page 类 不同,不能直接通过 Page.Orientation 进行设置.而是 ...
- Windows store app[Part 1]:读取U盘数据
Windows 8系统下开发App程序,对于.NET程序员来说,需要重新熟悉下类库. 关于WinRT,引用一张网上传的很多的结构图: 图1 针对App的开发,App工作在系统划定的安全沙箱内,所以通过 ...
- Windows Store App JavaScript 开发:获取文件和文件夹列表
在应用程序中有时可能需要获取用户库中的内容,以便执行相关的操作.如果要获取某个用户库中的内容,需要先获取到这个用户库,获得用户库可以通过Windows.Storage命名空间中的KnownFolder ...
随机推荐
- Linux内核分析:打开文件描述符实现
在Linux中每一个进程的数据是存储在一个task_struct结构(定义在sched.h中)中的. struct task_struct { volatile long state; /* -1 u ...
- Java SE 简介 & 环境变量的配置
Java SE 简介 & 环境变量的配置 一.Java 技术的三个方向 Java 技术分为三个方向 javaSE( Java Platform Standard Edition 标准版)用来开 ...
- Python安装时报缺少DLL的解决办法
准备开始学习Python,但是刚准备环境搭建时就遇到了下面的错误: 仔细的看了看,说是缺少DLL. 对于这个问题的解决办法: 方法一: 1. 在安装包上点右键以管理员身份运行2. C:\Users\用 ...
- 。i节点
http://blog.csdn.net/feiyinzilgd/article/details/5609157 linux中,文件查找不是通过文件名称来查找的.实际上是通过i节点来实现文件的查找定 ...
- JQuery获取浏览器窗口的可视区域高度和宽度,滚动条高度
alert($(window).height()); //浏览器时下窗口可视区域高度 alert($(document).height()); //浏览器时下窗口文档的高度 alert($(docum ...
- 双模蓝牙CC2564调试笔记
1.CC256X Testing Guide 官方文档WIKI地址:http://processors.wiki.ti.com/index.php/CC256x_Testing_Guide#Devi ...
- js设计模式总结-单例模式
单例模式 解决的问题 保证实例只有一个,避免多个实现,从全局来看,这个实例的状态是唯一的. 实现原理 设置一个变量来记录实例,通过检测该变量是否为空来决定是否创建实例 非透明单例 所谓非透明就是用户在 ...
- NSJSONSerialization(json序列化)
//通过调用isValidJSONObject来判断Foundation对象是否可以转换为JSON数据 NSJSONSerialization isValidJSONObject:obj 我们能利用N ...
- java贪吃蛇
这个贪吃蛇有很多功能没有实现,比如说穿墙(本来可以实现,但是穿墙后,就会出现坐标混乱,吃不到食物了),还有碰到自己的身体死亡的情况也没有实现,现在我知道如何判断是否碰到身体,但是,我不知道,如何处理碰 ...
- Google Maps地图投影全解析(3):WKT形式表示
update20090601:EPSG对该投影的编号设定为EPSG:3857,对应的WKT也发生了变化,下文不再修改,相对来说格式都是那样,可以到http://www.epsg-registry.or ...