C#WindowsForm项目,音乐播放器,播放mp3和ogg格式音乐

目录

一、程序要求

二、设计思路

三、详细步骤

1.创建项目

2.安装Naudio.Vorbis第三方库

3.播放实现

四、总结


一、程序要求


        1. 程序应能够读取MP3文件,并播放其中的音频。(此功能可以使用WindowsMediaPlayer控件)

        2. 程序应能够播放ogg文件。(此功能可以使用Nuget程序包中的Naudi.Vorbis控件)

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

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

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

二、设计思路


2.1文件格式支持
        使用WindowsMediaPlayer控件自带的类来实现MP3文件的解析和播放。使用NVorbis库处理OGG文件。

2.2界面设计
        创建一个简单的窗口应用程序,包含选择音乐、下一首、播放和暂停按钮功能。使用Windows Forms来创建用户界面。

2.3异常处理
        在文件读取过程中可能会发生各种异常,如文件不存在、文件读取错误等。需要能够捕获可能出现的异常,并提供适当的错误处理和用户提示。

2.4兼容性
        确保代码在多个C#版本上均可运行,可以选择使用向后兼容的API和库,以确保在较旧的C#版本上也可以正常工作。在选择第三方库时,要考虑库本身对于不同版本的C#的支持情况。

三、详细步骤

1.创建项目


使用环境:VS 2022的.NET framework 4.7.2的框架

要想使音乐播放之前,需要选择我们想要播放的歌曲,先从工具箱里创建一个button按钮,来实现视图上的音乐播放,然后创建一个openFileDialog来选择音乐文件。用字符串数组files来存放输入的文件。openFileDialog1.Filter来提示用户应输入.mp3、.flac、.wav的文件。

OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "打开音频|*.ogg";
 
string oggFilePath = "";
 
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
    oggFilePath = openFileDialog.FileName;
}

2.安装Naudio.Vorbis第三方库

在播放音乐之前,我们还需要安装Naudio.Vorbis第三方库实现音乐播放。
在Nuget程序包里搜索Naudio.Vorbis并安装。

在文件开头调用第三方库

using NAudio;
using NAudio.Wave;
using NAudio.Vorbis;

3.播放实现


使用VorbisWaveReader来读取.ogg文件。注意,这里需要确保已经添加了支持.ogg格式的NAudio扩展库(如NAudio.Vorbis)。
创建一个WaveOutEvent实例来播放音频。WaveOutEvent是NAudio中用于播放音频的类,它使用事件驱动的方式来处理音频播放,这在多线程环境中更为安全。
使用waveOut.Init(vorbisReader)来初始化WaveOutEvent实例,并设置其输入为从vorbisReader读取的音频流。
调用waveOut.Play()开始播放音频。
使用一个while循环来等待音频播放完成。这里使用Thread.Sleep(100)来避免死循环,但它也导致程序在这段时间内处于阻塞状态,无法响应其他事件或用户输入。这通常不是最佳实践,因为它会降低用户体验。更好的方法是使用事件或回调来处理播放完成的情况。
播放完成后,调用waveOut.Stop()(尽管在大多数情况下,当音频播放完毕时,WaveOutEvent会自动停止),然后释放waveOut和vorbisReader的资源。

OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "打开音频|*.ogg";
 
string oggFilePath = "";
 
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
    oggFilePath = openFileDialog.FileName;
}
 
using (var vorbisReader = new VorbisWaveReader(oggFilePath))
{
    // 创建一个WaveOutEvent实例来播放音频  
    using (var waveOut = new WaveOutEvent())
    {
        // 初始化WaveOutEvent实例,并设置其输入为VorbisFileReader  
        waveOut.Init(vorbisReader);
 
        // 开始播放音频  
        waveOut.Play();
 
        // 等待播放完成,或者可以添加其他逻辑,比如响应播放事件  
        while (waveOut.PlaybackState == PlaybackState.Playing)
        {
            System.Threading.Thread.Sleep(100); // 等待一段时间,避免死循环  
        }
 
        // 播放完成后,停止并释放WaveOutEvent资源  
        waveOut.Stop();
        waveOut.Dispose();
    }
 
    // 释放VorbisFileReader资源  
    vorbisReader.Dispose();

四、总结

在本次实验中,我创建了一个简单的Windows Forms应用程序,用于播放MP3和OGG音乐文件。对于MP3文件,我使用了Windows Media Player控件,它内置在Windows Forms中,并且易于使用。然而,Windows Media Player控件不支持OGG格式,因此我使用了NAudio库来处理OGG文件的播放。NAudio是一个强大的音频处理库,它提供了对多种音频格式的支持,包括OGG。

在实现过程中,我注意到了错误处理的重要性。通过捕获并处理可能发生的异常(如文件不存在或读取错误),确保了应用程序的稳定性和用户体验。

此外,我还注意到了兼容性问题。虽然在这个简单的示例中,我没有遇到与不同C#版本相关的兼容性问题,但在开发更复杂的应用程序时,确保代码在不同平台和环境中的兼容性是非常重要的。

最后,用户界面的设计对于应用程序的易用性至关重要。通过添加适当的按钮和控件,我们为用户提供了一个直观的方式来选择并播放音乐文件。在未来的开发中,可以进一步扩展此应用程序的功能,例如添加播放列表、音量控制等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值