Windows Phone 之播放视频
在Windows Phone 7中播放视频有两种方式,
(1)使用MediaElement 控件来播放;用MediaElement 控件来播放视频比较灵活,你需要自己去实现播放暂停进度条等等的功能,播放屏幕的大小也可以由你来自定义。
(2)使用启动器MediaPlayerLanucher来实现视频的播放:用MediaPlayerLanucher来播放视频,相当于调用了系统的默认播放器来打开你的视频,修改不了系统默认的播放器。
第一种方式:MediaElement 控件播放视频。
MediaElement 可以播放许多不同类型的音频和视频媒体。MediaElement 基本上是一个矩形区域,可以在其图面上显示视频,或播放音频(在这种情况下将不显示视频,但 MediaElement 仍然充当具有相应 API 的播放器对象)。因为它是一个 UIElement,所以,MediaElement 支持输入操作,并可以捕获焦点或鼠标。使用属性 Height 和 Width 可以指定视频显示图面的高度和宽度。但是,为了获得最佳性能,应避免显式设置 MediaElement 的宽度和高度。而是将这些值保留为未设置。指定源之后,媒体将以其实际大小显示,布局将重新计算该大小。如果需要更改媒体显示的大小,最好使用媒体编码工具将媒体重新编码为所需大小。默认情况下,加载 MediaElement 对象后,将立即播放由 Source 属性定义的媒体。
播放本地视频文件的XAML语法如下:
<MediaElement Source="test.wmv" AutoPlay="True"/> <MediaElement Source="test.wmv" AutoPlay="True"/>
播放远程视频文件的XAML语法如下:
<MediaElement Source="http://mschannel9.vo.msecnd.net/o9/mix/09/wmv/key01.wmv" AutoPlay="True"/>
MainPage.xaml
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> <Grid.RowDefinitions> <RowDefinition Height="*" /> <RowDefinition Height="40" /> </Grid.RowDefinitions> <!--添加MediaElement多媒体播放控件--> <MediaElement Name="myMediaElement" AutoPlay="True" Grid.Row="0" /> <ProgressBar Name="pbVideo" Grid.Row="1" /> </Grid>
<!--3个菜单栏:播放、暂停和停止--> <phone:PhoneApplicationPage.ApplicationBar> <shell:ApplicationBar IsVisible="True" IsMenuEnabled="True" > <shell:ApplicationBarIconButton IconUri="/icons/play.png" Click="Play_Click" Text="播放"/> <shell:ApplicationBarIconButton IconUri="/icons/pause.png" Click="Pause_Click" Text="暂停"/> <shell:ApplicationBarIconButton IconUri="/icons/stop.png" Click="Stop_Click" Text="停止"/> </shell:ApplicationBar> </phone:PhoneApplicationPage.ApplicationBar>
MainPage.xaml.cs
using System; using System.Windows; using System.Windows.Media; using Microsoft.Phone.Controls; using System.Windows.Threading; using Microsoft.Phone.Shell; namespace MediaPlayer { public partial class MainPage : PhoneApplicationPage { // 使用定时器来处理视频播放的进度条 DispatcherTimer currentPosition = new DispatcherTimer(); // 页面的初始化 public MainPage() { InitializeComponent(); //定义多媒体流可用并被打开时触发的事件 myMediaElement.MediaOpened += new RoutedEventHandler(myMediaElement_MediaOpened); //定义多媒体停止时触发的事件 myMediaElement.MediaEnded += new RoutedEventHandler(myMediaElement_MediaEnded); //定义多媒体播放状态改变时触发的事件 myMediaElement.CurrentStateChanged += new RoutedEventHandler(myMediaElement_CurrentStateChanged); //定义定时器触发的事件 currentPosition.Tick += new EventHandler(currentPosition_Tick); //设置多媒体控件的网络视频资源 myMediaElement.Source = new Uri("123.wmv", UriKind.Relative); } //视频状态改变时的处理事件 void myMediaElement_CurrentStateChanged(object sender, RoutedEventArgs e) { if (myMediaElement.CurrentState == MediaElementState.Playing) {//播放视频时各菜单的状态 currentPosition.Start(); ((ApplicationBarIconButton)ApplicationBar.Buttons[]).IsEnabled = false; // 播放 ((ApplicationBarIconButton)ApplicationBar.Buttons[]).IsEnabled = true; // 暂停 ((ApplicationBarIconButton)ApplicationBar.Buttons[]).IsEnabled = true; // 停止 } else if (myMediaElement.CurrentState == MediaElementState.Paused) { //暂停视频时各菜单的状态 currentPosition.Stop(); ((ApplicationBarIconButton)ApplicationBar.Buttons[]).IsEnabled = true; ((ApplicationBarIconButton)ApplicationBar.Buttons[]).IsEnabled = false; ((ApplicationBarIconButton)ApplicationBar.Buttons[]).IsEnabled = true; } else {//停止视频时各菜单的状态 currentPosition.Stop(); ((ApplicationBarIconButton)ApplicationBar.Buttons[]).IsEnabled = true; ((ApplicationBarIconButton)ApplicationBar.Buttons[]).IsEnabled = false; ((ApplicationBarIconButton)ApplicationBar.Buttons[]).IsEnabled = false; } } //多媒体停止时触发的事件 void myMediaElement_MediaEnded(object sender, RoutedEventArgs e) { //停止播放 myMediaElement.Stop(); } //多媒体流可用并被打开时触发的事件 void myMediaElement_MediaOpened(object sender, RoutedEventArgs e) { //获取多媒体视频的总时长来设置进度条的最大值 pbVideo.Maximum = (int)myMediaElement.NaturalDuration.TimeSpan.TotalMilliseconds; //播放视频 myMediaElement.Play(); } //定时器触发的事件 void currentPosition_Tick(object sender, EventArgs e) { //获取当前视频播放了的时长来设置进度条的值 pbVideo.Value = (int)myMediaElement.Position.TotalMilliseconds; } //播放视频菜单事件 private void Play_Click(object sender, EventArgs e) { myMediaElement.Play(); } //暂停视频菜单事件 private void Pause_Click(object sender, EventArgs e) { myMediaElement.Pause(); } //停止视频菜单事件 private void Stop_Click(object sender, EventArgs e) { myMediaElement.Stop(); } } }
第二种方式:使用启动器MediaPlayerLanucher来实现视频的播放。
利用了系统内部的多媒体播放器直接全屏显示播放多媒体文件。下面来看一下MediaPlayerLanucher类的一些重要的属性。
(1) Location属性,Location 是描述文件是放置在什么样的位置,有下面三种类型。
MediaLocationType.Install:指的就是跟着你的xap文件一起部署过去的相关文件,也就是位于程序安装的目录中。
MediaLocationType.Data:指的是位于隔离储存区当中的文件,也就是说如果你的文件是执行之后才会取得或是产生的(例如说从网络下载),而会将档案写入到隔离储存区当中,这个时候就要设定为这个属性。
MediaLocationType.None:这个属性目前来说是没有作用的,如果设定为None,那么呼叫Show 的方法之后,直接就会丢出异常FileNotFroundException。
(2) Meida 属性,Media 是文件的位置以及文件名称,是以Uri 的方式来表示。
(3) Controls 属性,Controls 是设定MediaPlayer 出现之后,在画面上会出现哪一些控制按钮,而各个项目也可以利用OR 的方式去设定。
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> <Button Content="播放视频" Height="116" HorizontalAlignment="Left" Margin="100,81,0,0" Name="Start" VerticalAlignment="Top" Width="273" Click="Start_Click" /> </Grid>
private void Start_Click(object sender, RoutedEventArgs e) { //创建一个多媒体的启动器 MediaPlayerLauncher mpl = new MediaPlayerLauncher(); //设置播放文件放置的位置属性 mpl.Location = MediaLocationType.Install; //设置所有控制纽都出现 mpl.Controls = MediaPlaybackControls.All; //设置出现停止按钮以及暂停按钮 mpl.Controls = MediaPlaybackControls.Pause | MediaPlaybackControls.Stop; //设置播放的文件 mpl.Media = new Uri(@"Media\123.wmv", UriKind.Relative); //启动播放 mpl.Show(); }
Windows Phone 之播放视频的更多相关文章
- Windows Phone 7 播放视频
在Windows Phone 7中播放视频有两种方式,一种是使用MediaElement 控件来播放,一种是使用启动器MediaPlayerLanucher来实现视频的播放.用MediaElement ...
- Windows Media Player播放视频导致程序闪退
在有的电脑上发现,使用Windows Media Player组件播放视频导致程序闪退. 发现是显卡问题,独立显卡换成集成显卡 解决: 打开显卡控制面板->管理3D设置->集成图形-> ...
- windows media player 播放视频
一.新建windows应用程序项目,添加vedioForm窗体 二.在com组件中找到windows media player,添加引用 三.代码如下: public partial class Ve ...
- Windows及Android倍速播放视频软件下载
目录 1. 更多推荐 2. 关键字 3. 按 4. 软件下载 4.1. IOS应用商店 4.2. 网盘下载 5. 软件介绍 5.1. PotPlayer(Windows) 5.2. MoboPlaye ...
- WPF播放视频
在现在的项目中需要使用到播放视频的功能,本来打算使用VLC来做的.后来发现WPF 4.0之后新增了MediaElement类,可以实现视频播放. <Grid> <Grid.RowDe ...
- 在Winform中播放视频等【DotNet,C#】
在项目中遇到过这样的问题,就是如何在Winform中播放视频.当时考察了几种方式,第一种是直接使用Windows Media Player组件,这种最简单:第二种是利用DirectX直接在窗体或者控件 ...
- OpenCV播放视频带滚动条(3)
演示 :一个带有滚动条的播放视频的代码. #include "stdafx.h" #include <opencv2/core/core.hpp> #inclu ...
- Unity3D基础学习 利用NGUI的Texture播放视频
利用NGUI播放视频,首先你得导入你的视频 你的电脑中必须安装QuickTime软件,没有,去下一个,如果是Windows系统,安装完之后重启. 接下来转换你的视频格式,如果你的视频在QuickTim ...
- 用vlc SDK创建一个播放视频文件和RTSP流视频的Demo
#include <stdio.h> #include <tchar.h> #include <time.h> #include <windows.h> ...
随机推荐
- 让你的Git水平更上一层楼的10个小贴士
注意:本文中,一些命令包含含有方括号的部分(e.g.git add -p [file_name]).在这些例子中,您要在该处插入所需的数字,标示符等.而不需要保留方括号. 1.Git自动补全 如果你在 ...
- CentOS搭建GIT服务器【一】-仓库搭建以及基于gitosis的SSH方式访问
1.安装GIT核心 yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel gcc g ...
- Java StringTokenizer Example
In Java, you can use StringTokennizer class to split a String into different tokenas by defined deli ...
- 用chrome按F12抓包 页面跳转POST一瞬间就闪没了
- Maven浅析-3 Ant Vs Maven
1.什么是Ant? Ant起源是为了取代构建工具Make.它可以跨系统,建立在Java和XML的基础上,而且非常程式化. Ant更像一个脚本工具,我们必须在Ant内显示地声明做任何事情.在<ta ...
- jmeter参数化数据(_csvread函数、用户自定义变量等)
以下是转载内容,仔细看过后,觉得用得最多的应该是csvread函数.用户自定义变量以及CSV DATA CONFIG控制器这几个,但是做练习之后,在结果树和聚合报告中怎么查看执行结果是个问题,没找到对 ...
- ViewPager的用法实例
前言:最近在做一个项目,文件管理器,能够在主界面通过滑动选择:手机,内存卡,云端的不同界面,因此就用到了ViewPager. 起步阶段,ViewPager写好了,对应的Adapter也写好了,测试通过 ...
- Day05 - Python 常用模块
1. 模块简介 模块就是一个保存了 Python 代码的文件.模块能定义函数,类和变量.模块里也能包含可执行的代码. 模块也是 Python 对象,具有随机的名字属性用来绑定或引用. 下例是个简单的模 ...
- ARCGIS二维三维互动
当对三维模型进行操作时(如导航.平移)二维地图自动跟进. private void Synckron() { m_pGlobe = this._GlobeControl.Globe; m_pMap = ...
- magic_quotes_sybase(魔术引号开关)
magic_quotes_sybase,如果该选项在php.ini文件中是唯一开启的话,将只会转义%00为\0(即null字符).此选项会完全覆盖magic_quotes_gpc.如果同时开启这两个选 ...