大概是第一次上手写UWP程序的样子,上网各种查东拼西凑终于凑出来个能用的,但也勉强停留在能用的阶段,上图
写这个东西还是比较曲折的,网上博客里没找到多少有用的东西,最后大量参考了文档以及同学的博客。从头开始讲吧
首先遇到的第一个问题是视频播放器怎么用。我直接用xaml里的那个source参数,结果它会提示无效的文件类型或错误的路径。然后我想我的文件类型肯定对,那就是路径的问题了。这个问题上来就耽误了我绝大多数时间,我一直以为是我绝对路径或者相对路径写的格式有问题,所以我查遍了MediaPlayerElement的文档
https://docs.microsoft.com/en-us/uwp/api/windows.ui.xaml.controls.mediaplayerelement
对,就是从这个网页一点一点的往下扒
扒到最后都没有找到source这个参数对赋值有什么要求,这个问题到现在都没搞懂。
归根结底还是路子最开始就有问题,我最开始的想法是先用MediaPlayerElement组件成功播放一个文件,然后给source赋个值就ok了,果然还是Naive。
然后这时候就开始参考各位大佬同学的博客了,然后发现他们并没有这么搞,从这时候开始开发速度才上来。
之前做过的事情都是查reference比较多,这次基本所有的东西都在devoloping tutorial里,吃了个大亏。
然后就是MediaPlayerElement和MediaPlayer的关系了。当然这个也在开发指南里找到了
https://docs.microsoft.com/zh-cn/windows/uwp/audio-video-camera/play-audio-and-video-with-mediaplayer
嗯,中文版,很良心。
“可以在 MediaPlayer 中播放媒体,无需在 XAML 中显示,但是许多媒体播放应用会希望在 XAML 页面中呈现媒体。 为此,请使用轻型 MediaPlayerElement 控件。”
大概是这样了。
然后就是要用到一个叫File Open Picker的东西,这个东西在这里找到了
https://docs.microsoft.com/zh-cn/windows/uwp/files/quickstart-using-file-and-folder-pickers
显示单文件那里。
我是把它原封不动的搞了下来,然后后面换成改自己的变量。比如TextBlock的Text什么的。
这里还有个async的问题,之前也讲过,然后这里写上就不会出现更多的问题。
然后最后一个问题是如何让MediaPlayerElement获取文件的信息并进行播放,这里还是参考了开发指南和各位大佬的博客。
https://docs.microsoft.com/zh-cn/windows/uwp/audio-video-camera/play-audio-and-video-with-mediaplayer
开发指南里有这么一句话
_mediaPlayerElement.Source = MediaSource.CreateFromUri(new Uri("ms-appx:///Assets/example_video.mkv"));
这应该就是给播放源赋值了,然后只要把值从那什么filePicker搞到就好了
var mediaSource = MediaSource.CreateFromStorageFile(file);
_mediaPlayerElement.Source = mediaSource;
大概这样,然后就是从指南里搞来的自动播放
var mediaPlayer = _mediaPlayerElement.MediaPlayer;
mediaPlayer.Play();
也算是比较管用。
大概就是这些东西,网上倒是有一篇博客实现了差不多一样的东西,就是下面这篇
https://blog.csdn.net/linwh8/article/details/70314698
不过大段代码,我一看就懒得看了。不过最后好歹功能还是实现了。