我的GitHub链接:https://github.com/Joyce45/hwt

一、播放器?怎么做?

提到播放器,首先想到的就是XAML控件库里的MediaElement,于是我又大致阅读了一下该控件的Documentation。

https://docs.microsoft.com/en-us/uwp/api/windows.ui.xaml.controls.mediaelement

找到了如下的代码:(正是这些代码构成了我的播放器雏形)

 <MediaElement x:Name="mediaPlayer"/>
<Button Content="Choose file" Click="Button_Click"/>
 private async void Button_Click(object sender, RoutedEventArgs e)
{
await SetLocalMedia();
} async private System.Threading.Tasks.Task SetLocalMedia()
{
var openPicker = new Windows.Storage.Pickers.FileOpenPicker(); openPicker.FileTypeFilter.Add(".mp4");
openPicker.FileTypeFilter.Add(".mp3"); var file = await openPicker.PickSingleFileAsync(); // mediaPlayer is a MediaElement defined in XAML
if (file != null)
{
var stream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read);
mediaPlayer.SetSource(stream, file.ContentType); mediaPlayer.Play();
}
}

二、用户选择播放内容?怎么做?

下载好准备试用的mp3和mp4格式的文件后,运行以上代码,发现此时已经可以提供用户选择代码这个功能了!我知道,此时应该帮助用户做更多的判断选择,例如:如何在用户想要播放mp3格式时,对mp3和mp4进行预筛选。但是由于能力和时间有限,最终依然没能解决该问题。

三、播放时不会自动出现进度条?怎么做?

在搜索相关信息时,发现了AreTransportControlsEnabled 这个属性,它是用来显示MediaElement 控件自带的控制播放的控件,它自带全屏功能,它在全屏时会自动旋转为横屏。

https://blog.csdn.net/qq_16956581/article/details/39211855

找到了如下的代码:

 <MediaElement x:Name="mediaPlayer"
VerticalAlignment="Center"
AreTransportControlsEnabled="True"
AutoPlay="false"
Source="Assets/Kenichiro Nishihara (Music Video)西原健一郎,音乐MV (2).mp4"
Height="530" Margin="100,100,100,0" RenderTransformOrigin="0.492,1.674" />

四、播放mp3格式的音频文件时,并不像其他播放软件会出现封面海报?怎么做?

关于这个问题,我询问过一些同学也查过一些资料,同学认为可以直接在XAML中添加一个image然后在C#中设定一个参数的值即可,但我尝试多次并未成功,然后我又转而用PosterSource这个属性,然而依然无果……但是界面实在有些单调,于是我增加了一个背景图。

 <Grid.Background>
<ImageBrush ImageSource="Assets/gaomei3.jpg" Opacity="0.9" />
</Grid.Background>

总结:

对比现在市面上大部分的播放器,这个player就只能算是一个有简单播放功能的“界面”,但这也算是我本人第一次开始真正意义上使用库内的控件做一些小东西。还记得前几次作业提到的一些控件缺点与优点,应用程序里的技术应用的程度,自己开始使用时,才有了更深刻的感受,虽然做得非常简单,但是过程中确实学到了一些东西,例如:写代码这个事儿还真不能靠空想。上课的时候听什么都觉得,嗯,不难的,然而自己真正开始独立完成一些被教过东西的时候,世界都变了。

Naïve Media Player的更多相关文章

  1. Naïve Media Player, Part 2

    项目主页网址: https://github.com/Judylalala/en Q1:如何播放online歌曲? A1:我本来以为会为MediaElement设置一个单独的属性播放online音频. ...

  2. 用VLC Media Player搭建简单的流媒体服务器

    VLC可以作为播放器使用,也可以搭建服务器. 在经历了Helix Server和Darwin Streaming Server+Perl的失败之后,终于找到了一个搭建流媒体简单好用的方法. 这个网址中 ...

  3. android错误之MediaPlayer用法的Media Player called in state *,androidmediaplayer

    用到Media Player,遇到几个问题,记一下 用法就不说了,使用的时候最好参考一下mediaPlayer的这张图 第一个错误是Media Player called in state 8 这个是 ...

  4. win7自带windows media player 已停止工作

    解决方法如下: 在计算机开始,菜单找到控制面板 ,然后打开程序和功能,选择打开或关闭window功能,媒体功能.再取消windows Media Center Windows MediaPlayer选 ...

  5. 转:Media Player Classic - HC 源代码分析

    VC2010 编译 Media Player Classic - Home Cinema (mpc-hc) Media Player Classic - Home Cinema (mpc-hc)播放器 ...

  6. Media Player 把光盘中的内容拷贝出来的方法

    http://jingyan.baidu.com/article/cb5d610529f0c1005c2fe0b4.html  这个链接是通过Media  Player 把光盘中的内容拷贝出来的方法h ...

  7. 20 Free Open Source Web Media Player Apps

    free Media Players (Free MP3, Video, and Music Player ...) are cool because they let web developers ...

  8. Windows Media Player安装了却不能播放网页上的视频

    前段时间遇到Windows Media Player安装了却不能播放网页上的视频的问题,在网上查找资料时,发现大部分资料都没能解决我这个问题.偶尔试了网上一牛人的方法,后来竟然解决了.现在再找那个网页 ...

  9. 如何在Windows中打开多个Windows Media Player

    博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:如何在Windows中打开多个Windows Media Player.

随机推荐

  1. __name__ __main__ 作用

    1 __name__ 在自己文件下面执行 就显示__main__ 2 如果__name__是在其他文件里面,然后通过当前文件调用到其他文件执行,就会显示的当前文件路劲的文件名结果: if __name ...

  2. mysql日期 获取本月第一天 获取下个月的第一天

    --获取当前日期 select curdate(); --获取当月最后一天 select last_day(curdate()); --获取本月第一天 select DATE_ADD(curdate( ...

  3. Java静态方法为什么不能访问非静态方法

    转载自:https://www.2cto.com/kf/201502/375549.html 非静态方法(不带static)可以访问静态方法(带static),但是反过来就不行,为什么呢? publi ...

  4. if __name__ == '__main__':用法

    这个博主写的很好,已经验证过了.https://blog.csdn.net/yjk13703623757/article/details/77918633

  5. 虚拟机中安装完Lunix系统后,开机黑屏,只显示一个-,解决方法

    1,查看设置->硬盘是不是SCSI,如果是,先关闭虚拟机,移除该硬盘(实际数据不会删除) 2,添加一个新的虚拟硬盘,最后位置选IDE设备 3,确定,重启虚拟机即可

  6. Servlet中清除session

    HttpSession sessions = request.getSession(false);//防止创建Session if(sessions == null){ response.sendRe ...

  7. Taro开发写密码支付弹层

    在支付的时候弹出填写密码,模仿了支付宝支付填写密码.主要是利用遮罩的来实现.直接上代码吧. html设计,通过标记控制显示. { showPayPwdInput ? <View classNam ...

  8. 有关Linux ipv6模块加载失败的问题

    有关Linux ipv6模块加载失败的问题 同事一个SUSE11sp3环境配置ipv6地址失败,提示不支持IPv6,请求帮助,第一反应是应该ipv6相关内核模块没有加载.     主要检查内容:   ...

  9. RPC web service

    ---------------------------------------------------------------------------------------------------- ...

  10. 自己实现HashMap

    一载体 HashMap是由数组组成,数组元素为哈希链. 数组 public class MyHashMap<K, V> { transient Node<K, V>[] tab ...