1.准备工作
(1)安装库
我们安装的库为NAudio.Vorbis可以实现Ojj文件的播放
(2)创建WinForms项目
创建窗体应用项目
其中form1.cs就是我们的窗口设计界面,通过它能访问后台代码。
2.设计播放器界面
(1)添加按钮
通过左侧的工具箱添加我们需要的按钮,途中右侧为button按钮,通过点击能够实现其功能,
中间大白框为listbox,是一个存放我们选中的歌曲文件的列表,白框下面为MediaPlayer件,
能够拖动音频的进度以及调节音量大小
下面是最后设计好的样子:
(2)对按钮和控件进行后台实现
1.下面是播放ojj文件按钮的后台实现
private void button4_Click(object sender, EventArgs e)
{
string oggfilepath="";//初始化一个字符串用于存放文件路径
OpenFileDialog dlg = new OpenFileDialog();
dlg.Filter = "播放音频|*.ogg";
//使用OpenFileDialog类创建了一个文件对话框,并设置了其过滤器,以便用户只能选择.ogg格式的文件。
if(dlg.ShowDialog() == DialogResult.OK)
{
oggfilepath=dlg.FileName;
}
//显示文件对话框。如果用户点击了“打开”按钮(即选择了文件),则oggfilepath将被设置为所选文件的路径。
//using语句确保在读取完成后释放资源。
using (var vorbisFileReader = new VorbisWaveReader(oggfilepath))
{
// 创建一个WaveOutEvent实例来播放音频
using (var outputDevice = new WaveOutEvent())
{
// 初始化WaveOutEvent实例
outputDevice.Init(vorbisFileReader);
// 开始播放
outputDevice.Play();
// 等待播放完成,这里你可以添加其他逻辑,比如监听播放完成事件等
while (outputDevice.PlaybackState == PlaybackState.Playing)
{
System.Threading.Thread.Sleep(1000);
}
}
}
2.下面是对下一曲按钮的后台实现
private void button3_Click(object sender, EventArgs e)
{
// 定义一个变量nextmusic,用于存储下一个要播放的音乐的索引
int nextmusic = listBox1.SelectedIndex + 1;
// 检查localmusiclists列表(可能是一个存储音乐文件路径的列表)是否包含至少一个元素
if (localmusiclists.Count > 0)
{
// 检查计算得到的nextmusic索引是否超出了localmusiclists的索引范围
if (nextmusic >= localmusiclists.Count)
{
// 如果超出了范围,则将nextmusic设置为0,表示要播放列表中的第一首音乐
nextmusic = 0;
}
// 使用axWindowsMediaPlayer1控件来播放指定路径的音乐
// 这里将localmusiclists列表中索引为nextmusic的音乐路径设置为axWindowsMediaPlayer1的URL属性
axWindowsMediaPlayer1.URL = localmusiclists[nextmusic];
// 调用musicplay方法(该方法在代码段中没有给出,但可能是用于处理播放逻辑或更新UI的自定义方法)
// 并将当前播放的音乐路径作为参数传递
musicplay(axWindowsMediaPlayer1.URL);
// 更新label1的文本内容,显示当前播放音乐的文件名(不带扩展名)
// 使用Path.GetFileNameWithoutExtension方法从音乐路径中提取文件名(不带扩展名)
label1.Text = Path.GetFileNameWithoutExtension(localmusiclists[nextmusic]);
// 更新listBox1的SelectedIndex属性,以反映当前正在播放的音乐在列表中的位置
listBox1.SelectedIndex = nextmusic;
}
}
3.以下是停止播放按钮的实现
private void button2_Click(object sender, EventArgs e)
{
axWindowsMediaPlayer1.Ctlcontrols.stop();
}
4.以下是添加文件按钮的实现
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog OpenFileDialog1 = new OpenFileDialog();
OpenFileDialog1.Filter = "选择音频|*.mp3;*";
OpenFileDialog1.Multiselect = true;
if(OpenFileDialog1.ShowDialog() == DialogResult.OK)
{
listBox1.Items.Clear();
if(files != null)
{
Array.Clear(files, 0, files.Length);
}
files = OpenFileDialog1.FileNames;
string[] array= files;
foreach(string item in array)
{
listBox1.Items.Add(item);
localmusiclists.Add(item);
}
}
}
3.进行应用测试
(1)播放MP3文件
添加MP3文件并播放
(2)播放ogg文件
添加ogg文件并播放
总结:能够实现播放音乐文件的功能,并且暂停,下一曲功能也能够实现
4.此次项目的总结与经验
本项目成功实现了一个基于WinForms的Ogg音频文件播放器。在项目中,我们使用了Windows Media Player控件或NAudio库来支持Ogg格式的音频播放,并设计了直观的用户界面,包括播放、暂停、停止等基本控制功能。用户可以通过列表框选择歌曲,并通过进度条查看歌曲的播放进度。经过多次测试,播放器表现出良好的稳定性和用户友好性。通过这个项目,我们不仅掌握了WinForms应用程序的开发流程和技巧,还提高了团队协作和问题解决能力。这些宝贵的经验将为我们今后的开发工作提供有力的支持。