Windows音乐播放器

要求1:

1. 程序应能够读取MP3文件,并播放其中的音频。

2. 程序应能够处理可能出现的异常,如文件不存在、文件读取错误等。

3. 程序应具有良好的用户界面,方便用户进行操作。

4. 程序应具有良好的兼容性,能在不同版本的C#中正常运行。

提示:此功能可以使用WindowsMediaPlayer控件

要求2:

1. 程序应能够播放ogg文件。

2. 程序应能够处理可能出现的异常,如文件不存在、文件读取错误等。

3. 程序应具有良好的用户界面,方便用户进行操作。

4. 程序应具有良好的兼容性,能在不同版本的C#中正常运行。

提示:此功能可以使用Nuget程序包中的Naudi.Vorbis控件

WindowsMediaPlayer控件是Windows Forms中用来播放媒体文件的控件,但它并不直接支持OGG格式。因此,对于MP3文件,我们可以使用WindowsMediaPlayer控件,而对于OGG文件,我们将使用NAudio库和Naudi.Vorbis,这里采用NAudio库

一,下载NAudio NuGet包

这里不做过多赘述。

二, 引入必要的命名空间

引入程序中使用的所有命名空间

using System;  
using System.IO;  
using System.Windows.Forms;  
using NAudio.Wave; // 引入NAudio的Wave命名空间以使用音频播放功能

三,定义窗体类

定义一个继承自Form的窗体类,这个类将包含播放音乐所需的所有控件和逻辑。

public partial class MusicPlayerForm : Form  
{  
    // ... 类的成员和方法将在这里定义 ...  
}

四, 成员变量

定义了一些成员变量来存储音频播放器和音频文件读取器。

private IWavePlayer _wavePlayer; // 用于播放音频的接口  
private AudioFileReader _audioFileReader; // 用于读取音频文件的类

五,窗体初始化

初始化_wavePlayer成员变量。这里假设InitializeComponent方法已经被自动调用,用于初始化窗体上的控件。

public MusicPlayerForm()  
{  
    InitializeComponent(); // 假设这个方法用于初始化窗体上的控件  
    _wavePlayer = new WaveOutEvent(); // 初始化音频播放器  
}

六,播放MP3文件

定义一个方法来处理MP3文件的播放。这个方法会尝试打开指定的MP3文件,并使用_wavePlayer来播放它。如果发生错误,会弹出一个消息框显示错误信息。

private void btnPlayMp3_Click(object sender, EventArgs e)  
{  
    try  
    {  
        string mp3FilePath = "path_to_your_mp3_file.mp3"; // 替换为你的MP3文件路径  
        _audioFileReader = new AudioFileReader(mp3FilePath); // 读取MP3文件  
        _wavePlayer.Init(_audioFileReader); // 初始化播放器以播放文件  
        _wavePlayer.Play(); // 开始播放音频  
    }  
    catch (Exception ex)  
    {  
        MessageBox.Show("播放MP3文件时出错: " + ex.Message); // 显示错误信息  
    }  
}

七,播放OGG文件

NAudio可能不直接支持OGG格式,我们需要一个假设性的实现来展示如何处理这种情况。这里我们将指出可能需要的额外步骤或库。

private void btnPlayOgg_Click(object sender, EventArgs e)  
{  
    try  
    {  
        string oggFilePath = "path_to_your_ogg_file.ogg"; // 替换为你的OGG文件路径  
        // 假设这里有一个能够处理OGG文件的类或者方法  
        // 可能需要额外的库或编解码器  
        // 例如,使用MediaFoundationReader(如果它支持OGG)或查找其他能够处理OGG的库  
        // ... 假设性的代码实现 ...  
  
        // 注意:这里的代码没有实际实现,因为它取决于具体的库或方法  
        throw new NotImplementedException("播放OGG文件的实现未在此处展示。");  
    }  
    catch (Exception ex)  
    {  
        MessageBox.Show("播放OGG文件时出错: " + ex.Message); // 显示错误信息  
    }  
}

八,窗体关闭时释放资源

private void Form_FormClosing(object sender, FormClosingEventArgs e)  
{  
    // 停止播放并释放资源  
    if (_audioFileReader != null)  
    {  
        _audioFileReader.Dispose(); // 释放文件读取器资源  
        _audioFileReader = null; // 清空引用  
    }  
  
    if (_wavePlayer != null && _wavePlayer.PlaybackState == PlaybackState.Playing)  
    {  
        _wavePlayer.Stop(); // 停止播放  
        _wavePlayer.Dispose(); // 释放播放器资源  
        _wavePlayer = null; // 清空引用  
    }  
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值