Welcome

首页 / 软件开发 / .NET编程技术 / Windows 8风格应用开发入门 二十一 构建简单媒体播放器

Windows 8风格应用开发入门 二十一 构建简单媒体播放器2013-05-18《快速构建Windows 8风格应用20-MediaElement》博文中提到了如何使用MediaElement对象进行播放视频的简单功能,但是在实际应用中需要更复杂的功能,例如:控制视频播放的控件、全屏模式、进度条等等其他功能。

本篇博文中示例使用应用程序中包含的媒体文件,当然我们也可以通过网络或者本地[使用FileOpenPicker]进行加载某一媒体文件。

MSDN中关于媒体播放器的示例代码下载地址:XAML media playback sample。

构建基本的MediaElement控件

首先我们创建一个MediaElement控件并添加到ContentControl对象中,这样做的目的是为了启用全盘模式功能。

XAML代码如下:

<ContentControl x:Name="videoContainer" KeyUp="VideoContainer_KeyUp" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"Height="400" Grid.Row="0" ><MediaElement Name="videoMediaElement" Source="Video/Azure_Tmobile_500k.wmv"MediaOpened="videoElement_MediaOpened"MediaEnded="videoMediaElement_MediaEnded"MediaFailed="videoMediaElement_MediaFailed"CurrentStateChanged="videoMediaElement_CurrentStateChanged"PosterSource="Media/1.png"AutoPlay="False" /></ContentControl>
MediaElement控件的Source属性指向要播放的音频或视频文件。,该属性可以设置为应用中的某一文件的URI或网络上的文件的 URI。当然我们也可以使用 SetSource 方法将源设置为使用 FileOpenPicker 对象从本地系统检索的文件。

AutoPlay属性指定是否在加载 MediaElement 后开始播放媒体文件,默认值为 true。

MediaElement控件声明了MediaOpened、MediaEnded、CurrentStateChanged和 MediaFailed 事件。

最后设置PosterSource属性值,PosterSource是一个图像,它在媒体加载前为MediaElement控件提供视觉展示。

通常PosterSource在以下情况下显示:

1)未设置有效的源,例如:未设置Source、Source设置为Null、或源无效;

2)加载媒体时;

3)“播放到”流式播放期间;

构建控制MediaElement播放控件

一般控制MediaElement播放包括播放,停止和暂停等功能。

常用控制MediaElement播放功能包括:

1)停止:调用 Stop 方法;

2)暂停:调用 Pause 方法;

3)快进:将MediaElement控件的DefaultPlaybackRate属性的值设置为 2.0,我们可以调整此值,以提高或降低快进的速率。 然后,处理程序调用 Play 方法;

4)快退:将MediaElement控件的DefaultPlaybackRate属性的值设置为 -2.0,我们可以调整此值,以提高或降低快退的速率。然后,处理程序调用 Play 方法;

5)播放:如果MediaElement控件的DefaultPlaybackRate属性值不是 1.0,则将DefaultPlaybackRate 设置为 1.0。然后,处理程序调用 Play 方法。

6)静音:在 true 和false 间切换 IsMuted 属性;

7)音量增加、音量降低:如果IsMuted为true,则取消音量静音,然后处理程序按 0.1 增加或降低Volume属性。 注意:音量级别范围从 0.0 到 1.0;

对应这些控制功能的XAML代码可如下:

<StackPanel Orientation="Horizontal"> <Button Name="btnPlay" Click="btnPlay_Click"Style="{StaticResource transportStyle}" Content="Play" /> <Button Name="btnPause" Click="btnPause_Click"Style="{StaticResource transportStyle}" Content="Pause" /> <Button Name="btnStop" Click="btnStop_Click"Style="{StaticResource transportStyle}" Content="Stop" /> <Button Name="btnReverse" Click="btnReverse_Click"Style="{StaticResource transportStyle}" Content="Rewind" /> <Button Name="btnForward" Click="btnForward_Click"Style="{StaticResource transportStyle}" Content="Forward" /> <Button Name="btnMute" Click="btnMute_Click"Style="{StaticResource transportStyle}" Content="Mute" /> <Button Name="btnFullScreenToggle" Click="btnFullScreenToggle_Click"Style="{StaticResource transportStyle}" Content="Full" /> <ComboBox Name="cbAudioTracks"SelectionChanged="cbAudioTracks_SelectionChanged"Width="75" /> <Button Name="btnVolumeUp" Click="btnVolumeUp_Click"Style="{StaticResource transportStyle}" Content="-" /> <Button Name="btnVolumeDown" Click="btnVolumeDown_Click"Style="{StaticResource transportStyle}" Content="+" /> <TextBlock Name="txtVolume" FontSize="14" Text="{Binding Volume, ElementName=videoMediaElement}" VerticalAlignment="Center" HorizontalAlignment="Right" /> </StackPanel>