可视化作业——简单播放器的更新

本次我对之前的简单播放器进行了功能上的更新,主要加入了两个功能

1.能够播放在线音乐

2.可以将音乐缓存到本地

1.在编辑第一个功能的时候,我借鉴了很多,包括微软文档(https://msdn.microsoft.com/en-us/library/windows/apps/mt187272.aspx),其他同学的博客等等。而我的第一个版本的代码是这样的

 private void TxtFilePath_KeyUp(object sender, KeyRoutedEventArgs e)
        {
            if (e.Key == Windows.System.VirtualKey.Enter)
            {
                TextBox tbPath = sender as TextBox;

                if (tbPath != null)
                {
                    LoadMediaFromString(tbPath.Text);
                }
            }
        }

        private void LoadMediaFromString(string path)
        {
            try
            {
                Uri pathUri = new Uri(path);
                media.Source = pathUri;
            }
            catch (Exception ex)
            {
                if (ex is FormatException)
                {
                    // handle exception.
                    // For example: Log error or notify user problem with file
                }
            }
        }

没错!就是文档的代码!

但是之后我发现完全没有必要这么麻烦,我们可以直接将URL交给播放器,就像这样

 Uri pathUri = new Uri(mybox.Text);
                        media.Source = pathUri;
                        media.Play();

其中mybox是我加入的一个TextBox,在播放器中只需将地址输入TextBox中即可实现播放在线音频。

2.将文件缓存到本地

借鉴文档:https://docs.microsoft.com/zh-cn/windows/uwp/files/quickstart-reading-and-writing-files

我照着文档将访问文件的代码copy下来之后,有几处错误,但当时我并不慌,因为我相信VS强大的IDE。然而在我让VS自行修改之后,却发现有一个函数无论如何都无法通过

就是这里的GetBufferAsync,当时我是有点小慌的,在反复撤销检查之后,我才发现在对httpClient进行自动修复时,选择第二项就可完美运行,而上图是修改时候运行正常之后才截的。

public async Task<StorageFile> Load()
        {
            try
            {
                var httpClient = new HttpClient();
                var buffer = await httpClient.GetBufferAsync(new Uri(mybox.Text));
                var file = await KnownFolders.MusicLibrary.CreateFileAsync("neusong.mp3", CreationCollisionOption.ReplaceExisting);
                using (var stream = await file.OpenAsync(FileAccessMode.ReadWrite))
                {
                    await stream.WriteAsync(buffer);
                    await stream.FlushAsync();
                }
                Uri pathUri = new Uri(mybox.Text);
                media.Source = pathUri;
                media.Play();
                return file;

            }
            catch { }
            return null;
        }

在我仿照文档写完程序运行之后,发现不管怎么点我的音乐文件夹下都是空空如也,完全找不到本应缓存下来的neusong.mp3。知道我发现了这篇文档https://docs.microsoft.com/zh-cn/windows/uwp/files/file-access-permissions,我才明白这个程序并没有访问音乐文件夹的权限,修改一下就可以了。

这回我们再运行,OK,完美,让我插会儿腰~

GitHub项目地址:https://github.com/wangzhexiwen/Simple-Media

原文地址:https://www.cnblogs.com/xwszero/p/8833010.html

时间: 2024-08-04 17:09:35

可视化作业——简单播放器的更新的相关文章

FFmpeg入门,简单播放器

一个偶然的机缘,好像要做直播相关的项目 为了筹备,前期做一些只是储备,于是开始学习ffmpeg 这是学习的第一课 做一个简单的播放器,播放视频画面帧 思路是,将视频文件解码,得到帧,然后使用定时器,1秒显示24帧 1.创建win32工程,添加菜单项 “打开” 为了避免闪烁,MyRegisterClass中设置hbrBackground为null 2.在main函数中初始化ffmpeg库:av_register_all(); 3.响应菜单打开 1 void LoadVideoPlay(HWND h

ffmpeg学习(三)——ffmpeg+SDL2 实现简单播放器

本篇实现基于ffmpeg动态库用测试程序播放本地文件和RTSP视频流. 参考文章:http://blog.csdn.net/leixiaohua1020/article/details/8652605, http://blog.csdn.net/guanghua2_0beta/article/details/37578299 创建工程,参考上一篇文章:http://www.cnblogs.com/wenjingu/p/3990071.html,注意:下载SDL2库的开发版,lib文件放到lib文

零基础读懂视频播放器控制原理: ffplay 播放器源代码分析

https://www.qcloud.com/community/article/535574001486630869 视频播放器原理其实大抵相同,都是对音视频帧序列的控制.只是一些播放器在音视频同步上可能做了更为复杂的帧预测技术,来保证音频和视频有更好的同步性. ffplay 是 FFMpeg 自带的播放器,使用了 ffmpeg 解码库和用于视频渲染显示的 sdl 库,也是业界播放器最初参考的设计标准.本文对 ffplay 源码进行分析,试图用更基础而系统的方法,来尝试解开播放器的音视频同步,

可视化程序设计基础(三)——一个简单的播放器(并不)

本次的作业是制作一个简单的播放器,功能仅限于播放视频和音频,虽说是简单的播放器,但其中还是有很多细节需要注意的. 问题一:布局 本来这个问题不应该是一个问题了,之前老师讲过的Stackpanel和Grid等对于布局一个播放器来说绰绰有余,但上次上课老师提到的NavigationView令我十分感兴趣,这是一个uwp应用程序中随处可见的一种布局,节省了开发者很多的时间. 所以我就着手于建立这个NavigationView了,首先我看了一下XAML Controls Gallery,然而其中关于Na

Android开发6:Service的使用(简单音乐播放器的实现)

前言 啦啦啦~各位好久不见啦~博主最近比较忙,而且最近一次实验也是刚刚结束~ 好了不废话了,直接进入我们这次的内容~ 在这篇博文里我们将学习Service(服务)的相关知识,学会使用 Service 进行后台工作, 学会使用 Service 与 Activity 进行通信,并在此知识基础上学会使用 MediaPlayer和简单的多线程编程.使用 Handle 更新 UI,并设计成功一个简单的音乐播放器. 是不是很高大上呢~一起来学习~ 基础知识 Service作为Android四大组件之一,在每

IOS开发之简单音频播放器

今天第一次接触IOS开发的UI部分,之前学OC的时候一直在模拟的使用Target-Action回调模式,今天算是真正的用了一次.为了熟悉一下基本控件的使用方法,和UI部分的回调,下面开发了一个特别简易的音频播放器,来犒劳一下自己这一天的UI学习成果.在用到UI的控件时如果很好的理解之前博客在OC中的Target-Action回调模式,感觉控件的用法会很顺手.下面的简易播放器没有用到多高深的技术,只是一些基本控件和View的使用. 话不多说简单的介绍一下今天的音频播放器.在播放器中我们用到了UIP

C#简单音乐播放器ListBox歌单列表

简单的音乐播放器实现其实并不难,直接用axWindowsmediaplayer来做,这里没有什么技术含量的,但是axWindowsmediaplayer是不会生成歌单列表的,也就是说,在每次添加音乐后axWindowsmediaplayer是没有记录的,那么我就来简单的做下歌单列表. axWindowsmediaplayer的工作原理其实就是根据Path来加载的,在写歌单时我们需要先来做两件事,1.存储歌曲Path 2.存储歌曲名字 这里暂且不考虑数据库,我使用IO操作通过txt文件来存储这两种

Android开发---MediaPlayer简单音乐播放器

Android开发-MediaPlayer简单音乐播放器 功能介绍 实现一个简单的播放器,类似网易云音乐形式,功能包括: 播放.暂停,停止,退出功能: 后台播放功能: 进度条显示播放进度.拖动进度条改变进度功能: 播放时图片旋转,显示当前播放时间功能: 界面样式 功能实现 1. MediaPlayer的实现 MediaPlayer常用方法介绍 MediaPlayer的实现包括初始化MediaPlayer,MediaPlayer的功能实现,包括播放.暂停.停止.离开等,具体细节如下: MediaP

iOS 简单实用的音乐播放器,少年,自己做个歌单吧。。。。。。

我也不知道为什么突然会想写一下音乐播放器的,感觉应该挺好的玩,自己把自己喜欢的歌曲导出来,用程序加载跑 起来,那歌听起来必定很带感啊......不过那首Love Story被我听了无数遍......听吐了 各位看官有兴趣也可以听听.其实前期准备是很坑爹的,找歌词真的蛋疼啊. 废话不多说,老规矩,看成品先: 尼玛这东西占得空间太大了,录不了太多...... 先介绍吧 首先 做个播放器的界面出来,上面是个tableView来加载歌词,底部两个Slider,一个声音,一个进度,最底下三个Button.