当前位置: 首页 > news >正文

c#音乐播放器续(联网下载)

音乐播放器

  • 0.前言
  • 1.关于本地音乐播放
  • 2.使用iTunes Search API进行联网下载歌曲
    • 2.1 控件
    • 2.2 函数实现
      • 2.2.1 控件2:搜索歌曲
      • 2.2.2 控件3:下载歌曲
    • 2.3 主界面
  • 3.拓展

0.前言

  • 书接上文,我们已经实现了一个能够播放本地音乐的音乐播放器,能够播放众多音乐格式,包括.ogg,接下来,我们将为我们的音乐播放器添加一个令人激动的新功能——联网音乐下载和播放!这个功能将使我们能够通过网络获取音乐,并将其添加到我们的播放列表中。
  • 为了实现这个功能,我们选择使用苹果音乐开放的API。尽管这个API只支持音乐的30秒预览,但它非常适合初学者上手。使用这个API不需要认证或密钥等额外操作,让我们能够更快地理解和实现联网音乐下载功能。
  • 本项目旨在练习如何实现联网音乐下载,理解基础方法后,想要拓展很快就能上手。

1.关于本地音乐播放

详情可查看本人上篇博客~

在此只放框架:

public partial class Form1 : Form
{VorbisWaveReader oggReader = null;  //定义此对象,用于解析.ogg文件格式WaveOutEvent outputDevice = null;  //定义此对象,用于播放.ogg音频List<string> localmusiclist  = new List<string>(); //添加的所有音频文件int index = -1; //当前播放的音频文件索引public Form1(){InitializeComponent();}private void musicplay(string filename){label1.Text = Path.GetFileNameWithoutExtension(localmusiclist[index]);//获取filename的后缀名string extension = Path.GetExtension(filename).ToLower();//如果oggReader和outputDevice不为空,说明正在播放或播放过ogg文件,此时要再播放新选择的文件就要先释放旧的if (oggReader != null && outputDevice != null){oggReader.Dispose();oggReader = null;outputDevice.Dispose(); outputDevice = null;}axWindowsMediaPlayer1.Ctlcontrols.stop();try{if (extension == ".ogg"){oggReader = new VorbisWaveReader(filename);outputDevice = new WaveOutEvent();outputDevice.Init(oggReader);outputDevice.Play();}else{axWindowsMediaPlayer1.URL = filename;axWindowsMediaPlayer1.Ctlcontrols.play();}}catch (FileNotFoundException ex){MessageBox.Show

相关文章:

  • 【驱动篇】龙芯LS2K0300之单总线驱动
  • 越复杂的CoT越有效吗?Complexity-Based Prompting for Multi-step Reasoning
  • 长亭谛听教程部署和详细教程
  • 【Android面试八股文】你能说一说在平常开发过程中你是如何解决事件冲突问题的吗?
  • 虚幻UE5发送 get、post 请求、读取 json 文件
  • 深入浅出Java的函数式编程
  • 【Vite】控制打包结构
  • 解析Java中1000个常用类:AbstractSet类,你学会了吗?
  • spring 、springboot 运行的原理、理解、分析
  • Pnpm:包管理的新星,如何颠覆 Npm 和 Yarn
  • 四川汇聚荣科技有限公司怎么样?
  • ansibie yum模块
  • 项目3:从0开始的RPC框架(扩展版)-2
  • 【地质灾害监测实现有效预警,44人提前安全转移】
  • linux关于epoll概述(各项组成,以及作用)
  • 【附node操作实例】redis简明入门系列—字符串类型
  • Consul Config 使用Git做版本控制的实现
  • CSS 提示工具(Tooltip)
  • CSS居中完全指南——构建CSS居中决策树
  • Hexo+码云+git快速搭建免费的静态Blog
  • Linux后台研发超实用命令总结
  • nginx 负载服务器优化
  • NLPIR语义挖掘平台推动行业大数据应用服务
  • SpiderData 2019年2月25日 DApp数据排行榜
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • vue-cli在webpack的配置文件探究
  • 开源地图数据可视化库——mapnik
  • 力扣(LeetCode)357
  • 马上搞懂 GeoJSON
  • 前端攻城师
  • 悄悄地说一个bug
  • 如何使用 JavaScript 解析 URL
  • 收藏好这篇,别再只说“数据劫持”了
  • 微信小程序:实现悬浮返回和分享按钮
  • ​​​​​​​GitLab 之 GitLab-Runner 安装,配置与问题汇总
  • ​批处理文件中的errorlevel用法
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • #DBA杂记1
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • (10)STL算法之搜索(二) 二分查找
  • (C++)八皇后问题
  • (libusb) usb口自动刷新
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355
  • (附源码)springboot高校宿舍交电费系统 毕业设计031552
  • (免费分享)基于springboot,vue疗养中心管理系统
  • (三分钟了解debug)SLAM研究方向-Debug总结
  • (转)拼包函数及网络封包的异常处理(含代码)
  • (转)为C# Windows服务添加安装程序
  • . Flume面试题
  • .bat批处理(六):替换字符串中匹配的子串
  • .NET gRPC 和RESTful简单对比
  • .NET Micro Framework初体验(二)
  • .net SqlSugarHelper
  • .NET 表达式计算:Expression Evaluator
  • .NET/C# 异常处理:写一个空的 try 块代码,而把重要代码写到 finally 中(Constrained Execution Regions)