一.引言
本博客是在本人之前的博客基础上进行的补充和进一步开发。之前的是本地的音乐文件播放。
在看这一篇之前可了解之前的内容:Windows窗体设计:本地音乐播放_visionstudio窗体应用加音乐-CSDN博客
二.在线播放实质
在线播放的实质按照我的理解是:获取一个音乐文件的网络地址,将其临时下载到本地的一个文件里,再去进行播放。这个重点在于获取网址响应再进行的下载。
三.实现
3.1控件:button,textbox
其中button进行主要实现,获取textbox里的地址,设置下载路径,再调用Download函数,最后播放。在这里,播放是简便直接用控件axwindowsmusicplayer,没有与之前的播放相关联,是独立出来方便单独理解。
private async void button6_Click(object sender, EventArgs e)//实现在线音乐播放。在线音乐播放实质是获取音乐文件所在网址,通过访问该网址下载该音乐文件在临时文件,再进行播放
{
string path=textBox1.Text;//获取要想听的音乐文件的网址
string filename = "D:\\onlinemusicplay\\music.mp3"; // 下载到本地的文件
try
{
await DownloadMusicAsync(path, filename);
Console.WriteLine("Music download completed.");
axWindowsMediaPlayer1.URL=filename;
axWindowsMediaPlayer1.Ctlcontrols.play();
}
catch (Exception ex)
{
Console.WriteLine($"Failed to download music: {ex.Message}");
}
Console.WriteLine("Press any key to exit.");
Console.Read();
}
3.2Download函数实现
static async Task DownloadMusicAsync(string url, string filename)//下载函数
{
using (HttpClient client = new HttpClient())//进行网址响应
{
using (HttpResponseMessage response = await client.GetAsync(url, HttpCompletionOption.ResponseHeadersRead))
{
response.EnsureSuccessStatusCode();
using (Stream streamToReadFrom = await response.Content.ReadAsStreamAsync())//获取数据流到本地
{
using (Stream streamToWriteTo = File.Open(filename, FileMode.Create))
{
await streamToReadFrom.CopyToAsync(streamToWriteTo);
}
}
}
}
}
四.结果展示
实例:‘’http://music.163.com/song/media/outer/url?id=409650851.mp3‘’
双笙/封茗囧菌:霜雪千年
4.1下载结果展示
可以看出已经成功下载完成到我的指定文件夹里了
4.2播放结果展示
在这段视频里展示了播放的结果
五.结语
用于实现网络连接的方法还有许多,这里采用的是HttpClicent方法,本人的理解:自己写的代码,如果要使用的是计算机本地的文件,都不涉及到网络连接,也就是说就算计算机没有联网,也是可以正常运行的,但对于代码来说,网络连接是指你想你的代码来获取网络上的数据,不管是在线音乐播放还是人脸识别等,都是获得一个相应地址,去获取响应,将访问到的数据流下载到本地来进行操作。这获取响应和下载都是需要计算机联网来实现的,网络连接按照我的理解就是这样,当然肯定有理解错误的,欢迎指正!