黑马程序员_音乐(视频)播放器学习

本文介绍了如何使用ASP.NET和Windows自带的播放组件创建一个简单的音乐播放器,包括播放、暂停、静音等功能的实现,以及如何添加歌曲到播放列表和显示歌词。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

---------------------- ASP.Net+Unity开发.Net培训、期待与您交流! ----------------------

1.本节主要学习了音乐播放器的简单制作,在此篇中主要介绍用到的知识点和重要的思路代码

首先,播放器的控件使用的是windows自带的player组件


2.视频的播放、暂停直接调用组件的相应方法即可,对应的播放代码如下:

        /// <summary>
        /// 播放
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnPlay_Click(object sender, EventArgs e)
        {
            if (btnPlay.Text == "播放")
            {
                axPlayer.Ctlcontrols.play();
                btnPlay.Text = "暂停";
            }
            else if (btnPlay.Text == "暂停")
            {
                axPlayer.Ctlcontrols.pause();
                btnPlay.Text = "播放";
            }

              //btnPlay.Text = btnPlay.Text == "播放" ? "暂停":"播放";

            
        }

3.添加歌曲到播放列表的实现,MyPlay方法在调用时,如果列表为空,直接返回。

        /// <summary>
        /// 添加歌曲到播放列表
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnOpen_Click(object sender, EventArgs e)
        {
            OpenFileDialog ofg = new OpenFileDialog();
            ofg.InitialDirectory = @"E:\黑马.net入学\6-基础班项目_自己动手写音乐播放器(高级内容)";
            ofg.Filter ="音乐文件|*.mp3;*.wma|视频文件|*.wmv";
            ofg.Title="请选择文件";
            ofg.Multiselect=true;
            if (ofg.ShowDialog() == DialogResult.OK)
            {
                for (int i = 0; i < ofg.FileNames.Length; i++)
                {
                    lSongs.Add(ofg.FileNames[i]);
                    string[] songs = ofg.FileNames[i].Split(new char[] { '\\' }, StringSplitOptions.RemoveEmptyEntries);
                    listSongsPlayer.Items.Add(songs[songs.Length-1]);                  

                }
                //axPlayer.URL = lSongs[0];         //选定歌曲第一个为默认播放
                //listSongsPlayer.SelectedIndex = 0;
                MyPlay(0);
            }

       
        }
      /// <summary>
        /// 用索引完成播放,
        /// </summary>
        /// <param name="url"></param>
       private void MyPlay(int url)
        {
            //if (btnPlay.Text == "播放")
            //{
            //    axPlayer.Ctlcontrols.play();
            //    btnPlay.Text = "暂停";
            //}
            //else if (btnPlay.Text == "暂停")
            //{
            //    axPlayer.Ctlcontrols.pause();
            //    btnPlay.Text = "播放";
            //}
            if (listSongsPlayer.Items.Count == 0)
            {
                return;
            }
            if (url < 0)
            {
                url = 0;
            }
            btnPlay.Enabled = true;
            btnMute.Enabled = true;
            btnStop.Enabled = true;


           
            axPlayer.URL = lSongs[url];
            listSongsPlayer.SelectedIndex = url;
            axPlayer.Ctlcontrols.play();
            btnPlay.Text = "暂停";
            
        }



4.添加歌词的显示

歌词显示的主要思路是要通过读取歌词文件,并将歌词通过每一项为时间+歌词的方式存储在一个歌词集合中,然后再与播放器的当前播放时间进行比较,显示对应的歌词。

5.播放器的静音等行为是在播放器组件的Setting属性里面进行赋值操作的,具体如下:

  /// <summary>
        /// 静音
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnMute_Click(object sender, EventArgs e)
        {
            if (btnMute.Text == "静音")
            {
                axPlayer.settings.mute = true;
                btnMute.Text = "取消静音";
            }
            else if (btnMute.Text == "取消静音")
            {
                axPlayer.settings.mute = false;
                btnMute.Text = "静音";
            }
        }

6.自动播放下一曲的实现

      private void axPlayer_PlayStateChange(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e)
       {
           if (listSongsPlayer.Items.Count == 0)
           {
               return;
           }
    //       temp1 += axPlayer.playState.ToString() + "\n";
           label1.Text += axPlayer.playState.ToString() + "\n";
           if (axPlayer.playState == WMPLib.WMPPlayState.wmppsMediaEnded)
           { 
            //选择下一曲,准备播放
               int temp = listSongsPlayer.SelectedIndex;
               temp++;
               if (temp > lSongs.Count - 1)
               {
                   listSongsPlayer.SelectedIndex = 0;
                   axPlayer.URL = lSongs[0];
               }
               else
               {
                   listSongsPlayer.SelectedIndex = temp;
                   axPlayer.PlayStateChange -= axPlayer_PlayStateChange;
                   axPlayer.URL = lSongs[temp];
                   axPlayer.PlayStateChange += axPlayer_PlayStateChange;
               }
           }
           if(axPlayer.playState == WMPLib.WMPPlayState.wmppsReady)
           {
             //播放下一曲
           //    this.MyPlay(listSongsPlayer.SelectedIndex);
               axPlayer.Ctlcontrols.play();
           }
       }

这里实现自动播放下一曲的时候,我是用的播放器控件式最新的player,所以在给axPlayer.URL赋值时会直接再一次触发axPlayer_PlayStateChange事件,所以再给axPlayer.URL赋值时,要先将axPlayer_PlayStateChange事件去掉,然后赋值完成后再添加上去。实际代码:

axPlayer.PlayStateChange -= axPlayer_PlayStateChange;
                   axPlayer.URL = lSongs[temp];
                   axPlayer.PlayStateChange += axPlayer_PlayStateChange;



---------------------- ASP.Net+Unity开发.Net培训、期待与您交流! ----------------------详细请查看: www.itheima.com
<think>好的,我现在需要帮助用户找到关于黑马程序员音乐播放器案例的资料或教程。用户提到了两个引用,一个是关于Android注册界面的,另一个是Vue快速入门的,里面提到音乐播放器源码。我需要先仔细分析这两个引用是否相关。 首先,引用[1]来自《Android移动开发基础案例教程(第2版)》,里面提到了注册界面、饭堂小广播、音乐播放器等案例。看起来这本书可能包含Android平台的音乐播放器实现教程。用户可能需要这本书的电子版或相关章节内容。 接着,引用[2]是关于Vue快速入门的,附带音乐播放器源码。这里可能是一个前端项目,使用Vue.js框架开发的音乐播放器。用户可能对这两个不同平台的案例都有兴趣,或者需要区分清楚。需要确认用户具体需要的是Android还是Vue的音乐播放器案例,但根据问题描述,用户可能更关注Android的,但引用中同时提到了两个。 然后,用户的问题明确提到“黑马程序员音乐播放器案例”,而两个引用都来自黑马程序员的相关资料。因此,我需要将这两个引用中的相关信息都整理出来,提供给用户。可能需要指出Android和Vue两个不同方向的案例资源,并给出获取方式。 另外,用户可能需要源码或教程链接。引用[1]提到了Gitee.com上的项目,可能包含Android音乐播放器的源码。引用[2]提到附有音乐播放器源码,但可能是在Vue部分。需要分别说明这两个资源的位置,并指导用户如何访问。 可能还需要建议用户如何进一步搜索,比如在Gitee上搜索黑马程序员的仓库,或者查看相关书籍的配套资料。同时,提醒用户确认自己需要的技术栈,是Android开发还是前端Vue开发,以便选择正确的资源。 最后,生成相关问题,帮助用户深入探索,比如如何获取源码、不同技术栈的区别,或者案例的具体实现步骤等。</think>关于黑马程序员音乐播放器案例的资料,根据已有引用信息整理如下: ### 一、Android平台音乐播放器 1. **基础案例教程** 《Android移动开发基础案例教程(第2版)》中包含音乐播放器开发案例,涵盖功能实现的核心逻辑和界面设计[^1]。书中可能涉及以下内容: - 音频文件读取与控制 - 播放/暂停/切歌功能实现 - Service后台播放服务绑定 - 通知栏播放控制 2. **源码获取途径** 该教程配套源码托管在Gitee代码平台,可通过以下方式获取: ```markdown 访问链接:https://gitee.com/(搜索关键词"黑马程序员 音乐播放器") ``` ### 二、Vue.js平台音乐播放器 引用[2]中提到的Vue案例包含: 1. **核心功能实现** - 歌曲搜索(Axios接口调用 + v-model双向绑定) - 播放控制(v-on事件绑定 + 音频API) - 数据渲染(v-for循环 + 响应式数据) 2. **源码结构说明** 案例采用组件化开发,典型结构可能包含: ```text /src /components Player.vue // 播放器主控件 Playlist.vue // 歌曲列表 /assets audio // 音频文件 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值