Windows 8应用程序中的播放列表

时间:2013-08-23 08:29:29

标签: c# windows windows-8

我正在尝试在Windows 8中制作播放列表。我可以创建播放列表,但MediElement不想播放播放列表。我的问题是:如何使用C#在Windows 8中播放.wpl文件?这是我的代码:

  async private void PickAudioButton_Click(object sender, RoutedEventArgs e)
    {
        FileOpenPicker picker = MainPage.CreateFilePicker(MainPage.audioExtensions);
        IReadOnlyList<StorageFile> files = await picker.PickMultipleFilesAsync();

         MainPage.playlist = new Playlist();

            foreach (StorageFile file in files)
            {
                MainPage.playlist.Files.Add(file);
            }

            StorageFile savedFile = await MainPage.playlist.SaveAsAsync(KnownFolders.MusicLibrary,
                                                                        "Sample",
                                                                        NameCollisionOption.ReplaceExisting,
                                                                        PlaylistFormat.WindowsMedia);

            xcv.SetSource((await savedFile.OpenAsync(FileAccessMode.Read)), ".wpl");
            xcv.Play();
            MainPage.playlist = null;
       }
}

1 个答案:

答案 0 :(得分:1)

更新1

您可以通过Playlist课程加载WPL,ZPL或M3U播放列表。检查下面给出的代码。

var filepicker = new FileOpenPicker();
filepicker.SuggestedStartLocation = PickerLocationId.MusicLibrary;
filepicker.FileTypeFilter.Add(".wpl");
filepicker.FileTypeFilter.Add(".zpl");
filepicker.FileTypeFilter.Add(".m3u");
var file = await filepicker.PickSingleFileAsync();

if (file != null)
{
    var playlist = await Playlist.LoadAsync(file); 
    var allMediaFiles = playlist.Files;
}

在WinRT中,MediaElement不支持直接播放WPL播放列表。 WPL文件基本上是XML文件,它包含作为WPL播放列表一部分的所有媒体文件的路径。因此,您可以反序列化该文件并创建StorageFile列表,然后创建MediaElement的媒体文件。使用MediaEnded事件将MediaElement的{​​{1}}设置为列表中的下一个媒体。

Supported audio and video formats (Windows Store apps)

Serializing Objects in your WinRT Applications using XmlDeSerializer

提示:要从XML获取XML可序列化类,请通过在文本编辑器(即记事本)中打开WPL文件来复制XML。在Visual Studio 2012中创建新的类文件。转到“编辑”菜单,然后选择“粘贴特殊”和“然后将XML粘贴为类。你将准备好上课。