
这次我更新了以前的简单播放器的功能,主要是添加了两个功能
1. 能够播放音乐
2. 您可以在本地缓存音乐
1. 在编辑第一个函数时,我借了很多东西带可视化效果的播放器,包括Microsoft文档()带可视化效果的播放器,其他学生的博客等. 代码的第一个版本就是这样

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的情况下,只需在播放器中输入地址即可播放音频.

2. 本地缓存文件
参考文件:

根据文档复制代码以访问文件后,出现了一些错误,但是当时我并不感到惊慌,因为我相信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. 知道找到了该文档后,我意识到该程序无权访问音乐文件夹,只能对其进行修改.

这次我们将再次运行,好的,完美,让我介绍一下〜


GitHub项目地址:
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/bofangqi/article-258374-1.html
就拿美国练练手
我们的盟友大英帝国该出手了