在使用 C++、C# 或 Visual Basic 的 Windows 应用商店应用中,可通过使用 MediaElement 类实现音频和视频播放。Source 属性指定要播放的媒体文件。它可以是网络上的文件,应用程序附带的文件或者本地系统上的文件。对于网络上的文件或嵌入应用程序的文件,只需将 Source 属性设置为文件路径即可。 若要打开本地系统上的文件,可以使用 FileOpenPicker。
本主题介绍如何使用 FileOpenPicker 类打开并播放本地媒体文件。
若要启用对本地系统上媒体库的访问,应用必须在应用部件清单 (manifest) 中包括Music Library Access功能。
创建 MediaElement 对象并为它提供 Name。为对象提供名称后,便可以轻松地在代码文件中对它进行访问。
<MediaElement Name="mediaControl" Height="400" />
使用 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();
若要将 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 }