C#AxWindowsMediaPlayer 控件的应用

今天来学习C#中媒体播放控件AxWindowsMediaPlayer 的一些属性和方法

1。先要引用AxWindowsMediaPlayer 控件
在工具栏组件栏右键选择“选择项”
在这里插入图片描述
在工具箱项选择COM组件->Windows Media Player

在这里插入图片描述
这样就在工具栏组件中能找到Windows Media Player控件了
在这里插入图片描述
把它拖到窗口上
在这里插入图片描述
2。创建播放列表
Windows Media Player控件本身没有播放列表,只有一个表示当前播放列表的属性currentPlaylist

它要一个类型为WMPLib.IWMPPlaylist的列表,所以我们要自己创建一个这样的列表

在这里插入代码片
WMPLib.IWMPPlaylist videoList;
 videoList = axWindowsMediaPlayer1.playlistCollection.newPlaylist("one");
 //创建一个新的基于axWindowsMediaPlayer1.新播放列表,名称为"one"
 //当然可以创建多个列表,用名称来区分

加歌曲文件到列表中

//path为要加载歌曲的文件夹路径
private void LoadFile(string path)
        {
            DirectoryInfo theDir = new DirectoryInfo(path);
            //获得theDir文件夹下是ma3的音乐文件
            FileInfo[] files = theDir.GetFiles("*.mp3");
            foreach (FileInfo f in files)
            {
            	//文件名添加到listbox控件中,同时也要添加到播放列表中(要全路径名称)
                listBox1.Items.Add(f.Name);
                videoList.appendItem(axWindowsMediaPlayer1.newMedia(f.FullName));
            }
            listBox1.SelectedIndex = 0;
            //设置当前播放列表为videlist
            axWindowsMediaPlayer1.currentPlaylist = videoList;
            //开始播放
            axWindowsMediaPlayer1.Ctlcontrols.play();
        }

在加载窗口时调用

 WMPLib.IWMPPlaylist videoList;
private void Form1_Load(object sender, EventArgs e)
        {
            videoList = axWindowsMediaPlayer1.playlistCollection.newPlaylist("one");
            LoadFile(@"H:\我的音乐\u盘歌曲\001 [音乐] 2022热歌榜");
        }

3.控件上各个按钮都可以用了
在这里插入图片描述
可以操作,暂停,停止,上一曲,下一曲,音量大小,静音,进度条

4.在列表控件双击选中要播放的歌曲播放,在列表控件的鼠标双击事件中
4.1.这是我第一次的方法
获得控件选中项的索引,再通过索引找到当前播放列表对应索引的歌曲路径
当然这样也能播放,但是控件上的上一曲和下一曲按钮就不能用了,如下图
而且播放完后也不自动下一首了,让人郁闷

 private void listBox1_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            int nSel = listBox1.SelectedIndex;
            if(nSel!=-1)
            {
            	
                axWindowsMediaPlayer1.URL = videoList.Item[nSel].sourceURL;
                axWindowsMediaPlayer1.Ctlcontrols.play();
            }
        }

在这里插入图片描述
4.2.这是第二种方法

 private void listBox1_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            int nSel = listBox1.SelectedIndex;
            if(nSel!=-1)
            {
                
                axWindowsMediaPlayer1.currentMedia = videoList.Item[nSel];
                axWindowsMediaPlayer1.Ctlcontrols.play();
               
            }
        }

和上面一样的效果

4.3.最后要用axWindowsMediaPlayer1.Ctlcontrols.playItem()方法才是播放指定播放列表中指定的项

private void listBox1_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            int nSel = listBox1.SelectedIndex;
            if(nSel!=-1)
            {
                //axWindowsMediaPlayer1.URL = videoList.Item[nSel].sourceURL;
                //axWindowsMediaPlayer1.currentMedia = videoList.Item[nSel];
                //axWindowsMediaPlayer1.Ctlcontrols.play();
                axWindowsMediaPlayer1.Ctlcontrols.playItem(videoList.Item[nSel]);
            }
        }

这样就能用上一曲和下一曲了,播放完后自动下一曲

5.让播放列表的当前播放的歌曲和列表控件选中项同步

这就难了,关键是当前播放列表获取不到当前播放歌曲的索引,这就难办了,
我在网上找了好久都没有能获取当前播放歌曲在播放列表中的索引
能获得当前歌曲的名称,标题,作者,大小,时间等等,
最后只能用获取当前歌曲的名称在列表控件中查找来获得当前的索引

方法:CurrentItemChange 在当前播放列表项发生改变事件中

private void axWindowsMediaPlayer1_CurrentItemChange(object sender, AxWMPLib._WMPOCXEvents_CurrentItemChangeEvent e)
        {
        	//要获取全路径名称,因当前歌曲名称有可能截了的
            string path=axWindowsMediaPlayer1.currentMedia.sourceURL;
            //获取最后文件夹路径标记"\"在字符串中的位置
            int ns= path.LastIndexOf('\\')+1;
            //截取歌曲名称
            string name = path.Substring(ns);
            //查找歌曲名称在列表控件中的索引
            int n=listBox1.FindStringExact(name, -1);
            if(n>=0)
            {
                listBox1.SelectedIndex = n;//重新设置选中项
            }
        }

就这样当点击下一曲时,列表控件也会自动选中下一个,
点击上一曲是,列表控件会选中上一个
在这里插入图片描述
6.歌词显示
这后面再弄,就这都弄得头晕

7.播放视频
如图:
在这里插入图片描述
设置:
axWindowsMediaPlayer1.URL = @“E:\薛之谦_追梦人.wmv”;
axWindowsMediaPlayer1.Ctlcontrols.play();

  • 8
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
1、基本属性  URL 指定媒体位置,本机或网络地址 例如:axWindowsMediaPlayer1.URL = @"f:\aa.mp3"; uiMode 播放器界面模式,可为Full, Mini, None, Invisible ;Full:有下面的制条; None:只有播放部份没有制条 例如:axWindowsMediaPlayer1.uiMode = "Invisible"; playState 播放状态,1=停止,2=暂停,3=播放,6=正在缓冲,9=正在连接,10=准备就绪 enableContextMenu 启用/禁用右键菜单 fullScreen 是否全屏显示 stretchToFit 非全屏状态时是否伸展到最佳大小 2、播放器基本制 Ctlcontrols.play(); 播放 Ctlcontrols.pause(); 暂停 Ctlcontrols.stop(); 停止 Ctlcontrols.currentPosition 当前进度 Ctlcontrols.currentPositionString 当前进度,字符串格式。如“00:23” Ctlcontrols.fastForward(); 快进 Ctlcontrols.fastReverse(); 快退 Ctlcontrols.next(); 下一曲 Ctlcontrols.previous(); 上一曲 3、播放器基本设置 settings.volume 音量,0-100 settings.balance 声道,通过它应该可以进行立体声、左声道、右声道的制。 settings.autoStart 是否自动播放 settings.mute 是否静音 settings.playCount 播放次数 settings.rate 播放速度 4、当前媒体属性 currentMedia.duration 媒体总长度 currentMedia.durationString 媒体总长度,字符串格式。如“03:24” currentMedia.getItemInfo(const string) 获取当前媒体信息"Title"=媒体标题,"Author"=艺术家,"Copyright"=版权信息,"Description"=媒体内容描述,"Duration"=持续时间(秒),"FileSize"=文件大小,"FileType"=文件类型,"sourceURL"=原始地址 currentMedia.setItemInfo(const string) 通过属性名设置媒体信息 currentMedia.name 同 currentMedia.getItemInfo("Title")

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值