Windows窗体应用:在线音乐播放

一.引言

本博客是在本人之前的博客基础上进行的补充和进一步开发。之前的是本地的音乐文件播放。

在看这一篇之前可了解之前的内容: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播放结果展示

在这段视频里展示了播放的结果

live.csdn.net/v/401535

五.结语

用于实现网络连接的方法还有许多,这里采用的是HttpClicent方法,本人的理解:自己写的代码,如果要使用的是计算机本地的文件,都不涉及到网络连接,也就是说就算计算机没有联网,也是可以正常运行的,但对于代码来说,网络连接是指你想你的代码来获取网络上的数据,不管是在线音乐播放还是人脸识别等,都是获得一个相应地址,去获取响应,将访问到的数据流下载到本地来进行操作。这获取响应和下载都是需要计算机联网来实现的,网络连接按照我的理解就是这样,当然肯定有理解错误的,欢迎指正!

  • 15
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以给您提供一个示例代码来实现这个功能。首先,您需要在Windows窗体应用程序中添加两个单选框和三个复选框,分别用于选择性别和爱好。然后,您可以为每个单选框和复选框设置一个Click事件,这些事件将共用一个响应函数。下面是一个示例代码: ```csharp private void radioButtonMale_Click(object sender, EventArgs e) { if (radioButtonMale.Checked) { // 男性被选中 } } private void radioButtonFemale_Click(object sender, EventArgs e) { if (radioButtonFemale.Checked) { // 女性被选中 } } private void checkBoxReading_Click(object sender, EventArgs e) { if (checkBoxReading.Checked) { // 阅读被选中 } } private void checkBoxMusic_Click(object sender, EventArgs e) { if (checkBoxMusic.Checked) { // 音乐被选中 } } private void checkBoxSports_Click(object sender, EventArgs e) { if (checkBoxSports.Checked) { // 运动被选中 } } private void radioButton_Click(object sender, EventArgs e) { // 判断单选框是否被选中 if (radioButtonMale.Checked) { // 男性被选中 } else if (radioButtonFemale.Checked) { // 女性被选中 } // 判断复选框是否被选中 if (checkBoxReading.Checked) { // 阅读被选中 } if (checkBoxMusic.Checked) { // 音乐被选中 } if (checkBoxSports.Checked) { // 运动被选中 } } ``` 在这个示例代码中,我们为每个单选框和复选框设置了一个Click事件,它们将分别调用不同的响应函数。而最后一个响应函数 `radioButton_Click` 将会被这些事件共用,它将判断哪些单选框和复选框被选中,并执行相应的操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值