一、问题描述
对于网易云音乐等在线音乐平台,它们通常提供API接口来获取歌曲的播放链接,但这些API通常是私有的,并且需要认证和授权。对于公开的音频流,你可以直接使用它们的URL。
二、功能描述
创建一个 WinForms 应用程序,用户可以输入网易云音乐的 URL,然后点击播放按钮,程序将提取 URL 中的音乐 ID,构造实际的音频播放链接,并进行播放。
1. 功能概述
用户在输入框中输入网易云音乐的 URL。—— 点击播放按钮后,程序将提取 URL 中的音乐 ID ——程序构造实际的音频播放链接。——播放音频。
2. 用户界面
1. axWindowsMediaPlayer1:用于播放音频文件。它通过 `URL` 属性设置要播放的文件路径,并通过 `Ctlcontrols.play()` 方法开始播放音频。
2. openFileDialog1: 用于打开文件对话框,允许用户选择一个或多个音频文件进行播放。设置 `Filter` 属性来限制选择的文件类型(如 `.mp3`、`.flac`、`.wav`),并启用 `Multiselect` 功能来允许多选。
3.listBox1: 用于显示用户选择的音频文件列表。用户可以从列表中选择一个文件进行播放。
4. label1: 显示当前播放的音频文件的名称(不包含扩展名)。
5. trackBar1: 调节音量。用户通过滑动条来调整音量,音量值传递给 `axWindowsMediaPlayer1` 控件的 `settings.volume` 属性。
6. button1: 触发 `openFileDialog1` 打开文件对话框,选择音频文件,并将选择的文件添加到 `listBox1` 和 `localmusiclist` 中。
7. button2: 停止当前播放的音频。
8. button3: 播放 `listBox1` 中的下一个音频文件。如果已经播放到最后一个文件,则循环回到第一个文件进行播放。
9.button4: 触发打开文件对话框选择 `.ogg` 文件,并使用 `VorbisWaveReader` 和 `WaveOutEvent` 来播放选定的 `.ogg` 文件。
10.一个输入框 (textBox1) 用于输入网易云音乐的 URL。
11一个按钮 (button5) 用于触发播放操作。
3. 核心功能
① 提取音乐 ID:通过正则表达式从 URL 中提取音乐 ID。
② 构造播放链接:根据提取的音乐 ID 构造实际的音频播放链接。
③ 下载并播放音频:使用 `HttpClient` 下载音频流,保存到临时文件中,并使用 NAudio 库进行播放。 以 Rick Astley 的 Never Gonna Give You Up 为例,首先在客户端或网站上获取歌曲的播放地址, 通常是像这样:"http://music.163.com/#/m/song?id=5221167"根据链接的基础知识, 我们可以把这个 URI 拆分成几个部分:
Prorocol: http:
Auth: none
Hostname(Domain): music.163.com
Port: none(实际为80)
Pathname: /#/m/song<