UWP作业(三) 一个简单多媒体播放器的完成

https://github.com/honmameiko22/ASimplePlayer

技术问题1:用什么来播放视频和音频?

解决方法:我查看了XAML controls gallery, 发现了两个控件——MediaElement和MediaPlayerElement。一开始我想用MediaPlayerElement,但是我的VS似乎不支持后者。。因此我选择了MediaElement。我查看了MediaElement的说明文档https://docs.microsoft.com/en-us/uwp/api/windows.ui.xaml.controls.mediaelement,学习了MediaElement的基本属性,我主要使用了AutoPlay和AreTransportControlsEnabled

技术问题2:用什么来选择文件?

解决方法:我找到了这个网页https://blog.csdn.net/zmq570235977/article/details/48133247,里面提到可以用FileOpenPicker选择文件:FileOpenPicker允许用户选择和打开文件。其中的SuggestedStartLocation属性决定了打开的默认路径,FileTypeFilter属性决定了可以打开哪些文件。
这里写图片描述
网页中这样选择文件:

    private async void FileOpen_Click(object sender, RoutedEventArgs e)  
         {  
               FileOpenPicker picker = new FileOpenPicker();  
               picker.ViewMode = PickerViewMode.List;  //设置文件的现实方式,这里选择的是图标  
               picker.SuggestedStartLocation =PickerLocationId.PicturesLibrary; //设置打开时的默认路径,这里选择的是图片库  
               picker.FileTypeFilter.Add(".srt");                       //添加可选择的文件类型,这个必须要设置  
               file = await picker.PickSingleFileAsync();    //只能选择一个文件  

               if (file!=null)  
               {  
                   //to do something  
               }  
         }  

我的写法几乎是跟它一样的。

            FileOpenPicker MyPicker = new FileOpenPicker();
            MyPicker.SuggestedStartLocation = PickerLocationId.VideosLibrary;
            MyPicker.FileTypeFilter.Add(".mp4");
            MyPicker.FileTypeFilter.Add(".mp3");
            StorageFile file = await MyPicker.PickSingleFileAsync();

一开始使用FileOpenPicker,发现不存在,查了一下是要加上Windows.Storage.Pickers才能用。FileOpenPicker只有两个方法,PickSingleFileAsync和PickMultipleFilesAsync。我选择了PickSingleFileAsync。但是根据上面写完之后发现编译不过去。在这个页面中我找到了解决方法https://social.msdn.microsoft.com/Forums/en-US/2e90e822-7ba2-4914-b715-7753dcc6f340/compile-error-on-await-picksinglefileasync?forum=winappswithcsharp,原来是没有加async修饰。。这里的函数是Async的,所以要用async wait,加上之后问题就解决了。

技术问题3:选择文件之后如何播放?
我在https://docs.microsoft.com/en-us/uwp/api/windows.ui.xaml.controls.mediaelement找到了使音频播放的方法。
FileAccessMode有read和readwrite两种,因为此处只需要读取,所以选择FileAccessMode.Read。

    if (file != null)
    {
        var stream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read);
        mediaPlayer.SetSource(stream, file.ContentType);
        mediaPlayer.Play();
    }

我的写法是

            if (file != null)
            {
                MyPlayer.AreTransportControlsEnabled = true;
                MyText.Text = file.Name;
                var stream = await file.OpenAsync(FileAccessMode.Read);
                MyPlayer.SetSource(stream, file.ContentType);
            }

这样一来,就可以实现简单实现选择和播放了。其实基本上和网上的代码差不多。因为做的不是很复杂所以没有遇到什么大问题。

打开时的样子:

播放时的样子:
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值