如何使用 MediaElement 播放本地媒体文件(使用 C#/VB/C++ 和 XAML ...

重要的 API

  • MediaElement
  • FileOpenPicker
  • OpenAsync

说明

步骤 1:

在使用 C++、C# 或 Visual Basic 的 Windows 应用商店应用中,可通过使用 MediaElement 类实现音频和视频播放。Source 属性指定要播放的媒体文件。它可以是网络上的文件,应用程序附带的文件或者本地系统上的文件。对于网络上的文件或嵌入应用程序的文件,只需将 Source 属性设置为文件路径即可。 若要打开本地系统上的文件,可以使用 FileOpenPicker

本主题介绍如何使用 FileOpenPicker 类打开并播放本地媒体文件。

步骤 2: 设置功能

若要启用对本地系统上媒体库的访问,应用必须在应用部件清单 (manifest) 中包括Music Library Access功能。

  1. 在 Microsoft Visual Studio Express 2012 for Windows 8 中,通过双击解决方案资源管理器中的 package.appxmanifest项,打开应用程序清单设计器。
  2. 单击“功能”。
  3. 选中“视频库访问”或“音乐库访问”框。

步骤 3: 创建 MediaElement

创建 MediaElement 对象并为它提供 Name。为对象提供名称后,便可以轻松地在代码文件中对它进行访问。

<MediaElement Name="mediaControl" Height="400" />

 

步骤 4: 使用 OpenFilePicker 获取文件

使用 FileOpenPicker 类从用户的视频库中选择媒体文件。在 FileOpenPicker 上设置 SuggestedStartLocation 和FileTypeFilter 属性。 调用 PickSingleFileAsync 可启动文件选取器并获取文件。

1 var openPicker = new Windows.Storage.Pickers.FileOpenPicker();  
2 openPicker.SuggestedStartLocation =  
3 Windows.Storage.Pickers.PickerLocationId.VideosLibrary; 
4 openPicker.FileTypeFilter.Add(".wmv");  
5 openPicker.FileTypeFilter.Add(".mp4"); 6 var file = await openPicker.PickSingleFileAsync();

 

步骤 5: 设置源并播放媒体

若要将 MediaElement 的 Source 设置为从 FileOpenPicker 返回的 StorageFile,我们需要打开流。 StorageFile 上的OpenAsync 方法返回可传入 MediaElement.SetSource 的流。然后调用 MediaElement 上的 Play 以启动媒体。

1 var stream = await file.OpenAsyn(Windows.Storage.FileAccessMode.Read); 
2 // mediaControl is a MediaElement defined in XAML 
3 mediaControl.SetSource(stream, file.ContentType); 4 mediaControl.Play();

 

完整示例

以下示例显示了用于从用户的视频库中选择文件并将其设置到 MediaElement 的 Source 的完整代码清单。

复制代码
 1 async private void SetLocalMedia()  
2 {  
3 var openPicker = new Windows.Storage.Pickers.FileOpenPicker();  
4 openPicker.SuggestedStartLocation =  
5 Windows.Storage.Pickers.PickerLocationId.VideosLibrary;  
6 openPicker.FileTypeFilter.Add(".wmv");  
7 openPicker.FileTypeFilter.Add(".mp4");  
8 var file = await openPicker.PickSingleFileAsync();  
9 var stream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read); 
10 // mediaControl is a MediaElement defined in XAML 
11 mediaControl.SetSource(stream, file.ContentType); 
12 mediaControl.Play(); 
13 }

你可能感兴趣的:(如何使用 MediaElement 播放本地媒体文件(使用 C#/VB/C++ 和 XAML ...)