C# WinForms音频播放代码

以下是基于C# WinForms实现音频播放的代码示例,包含详细注释说明:


方法一:使用SoundPlayer播放WAV格式音频

 

csharp

// 引入System.Media命名空间
using System.Media;

public partial class Form1 : Form
{
    // 声明SoundPlayer对象
    private SoundPlayer player = new SoundPlayer();

    public Form1()
    {
        InitializeComponent();
    }

    // 加载音频文件按钮点击事件
    private void btnLoad_Click(object sender, EventArgs e)
    {
        OpenFileDialog openFileDialog = new OpenFileDialog();
        openFileDialog.Filter = "WAV文件|*.wav";  // 仅支持WAV格式
        if (openFileDialog.ShowDialog() == DialogResult.OK)
        {
            player.SoundLocation = openFileDialog.FileName;  // 设置音频文件路径
            player.Load();  // 同步加载音频文件
            MessageBox.Show("音频加载完成!");
        }
    }

    // 播放按钮点击事件
    private void btnPlay_Click(object sender, EventArgs e)
    {
        if (player.IsLoadCompleted)
        {
            player.Play();  // 异步播放(后台线程)
            // player.PlaySync(); // 同步播放(阻塞当前线程)
        }
        else
        {
            MessageBox.Show("请先加载音频文件!");
        }
    }

    // 停止按钮点击事件
    private void btnStop_Click(object sender, EventArgs e)
    {
        player.Stop();  // 停止播放
    }

    // 释放资源(窗体关闭时)
    private void Form1_FormClosing(object sender, FormClosingEventArgs e)
    {
        player.Dispose();
    }
}

注释说明 

2

  • SoundPlayer仅支持WAV格式音频,适合播放简短提示音。
  • Play()方法为异步播放,不会阻塞主线程;PlaySync()为同步播放,会阻塞线程直至播放完成。
  • 需通过Dispose()释放资源,避免内存泄漏。

方法二:使用Windows Media Player控件(支持MP3等格式)​

 

csharp

// 引入Windows Media Player COM组件
using WMPLib;

public partial class Form1 : Form
{
    // 声明Windows Media Player控件对象
    private AxWMPLib.AxWindowsMediaPlayer axWindowsMediaPlayer1;

    public Form1()
    {
        InitializeComponent();
        InitializeMediaPlayer();  // 初始化控件
    }

    // 初始化媒体播放器控件
    private void InitializeMediaPlayer()
    {
        // 动态创建控件并添加到窗体
        axWindowsMediaPlayer1 = new AxWMPLib.AxWindowsMediaPlayer();
        axWindowsMediaPlayer1.CreateControl();
        axWindowsMediaPlayer1.Visible = false;  // 隐藏播放器界面
        this.Controls.Add(axWindowsMediaPlayer1);
    }

    // 加载音频文件按钮点击事件
    private void btnLoad_Click(object sender, EventArgs e)
    {
        OpenFileDialog openFileDialog = new OpenFileDialog();
        openFileDialog.Filter = "音频文件|*.mp3;*.wav;*.wma";
        if (openFileDialog.ShowDialog() == DialogResult.OK)
        {
            axWindowsMediaPlayer1.URL = openFileDialog.FileName;  // 设置文件路径
        }
    }

    // 播放/暂停按钮点击事件
    private void btnPlayPause_Click(object sender, EventArgs e)
    {
        if (axWindowsMediaPlayer1.playState == WMPLib.WMPPlayState.wmppsPlaying)
        {
            axWindowsMediaPlayer1.Ctlcontrols.pause();  // 暂停
            btnPlayPause.Text = "播放";
        }
        else
        {
            axWindowsMediaPlayer1.Ctlcontrols.play();  // 播放
            btnPlayPause.Text = "暂停";
        }
    }

    // 停止按钮点击事件
    private void btnStop_Click(object sender, EventArgs e)
    {
        axWindowsMediaPlayer1.Ctlcontrols.stop();  // 停止
    }

    // 显示播放进度(通过Timer控件更新)
    private void timer1_Tick(object sender, EventArgs e)
    {
        if (axWindowsMediaPlayer1.playState == WMPLib.WMPPlayState.wmppsPlaying)
        {
            lblPosition.Text = axWindowsMediaPlayer1.Ctlcontrols.currentPosition.ToString("0.0");
            lblDuration.Text = axWindowsMediaPlayer1.currentMedia.duration.ToString("0.0");
            progressBar1.Value = (int)(axWindowsMediaPlayer1.Ctlcontrols.currentPosition * 100 / axWindowsMediaPlayer1.currentMedia.duration);
        }
    }
}

注释说明 

2

3

4

  1. 控件初始化:需通过COM组件添加AxWindowsMediaPlayer到工具箱(右键工具箱 → 选择项 → COM组件 → 勾选Windows Media Player)。
  2. 格式支持:支持MP3、WAV、WMA等常见格式。
  3. 播放控制:通过Ctlcontrols属性调用play()pause()stop()方法。
  4. 状态检测playState属性可判断当前播放状态(如播放中、暂停、停止)。
  5. 进度同步:结合Timer控件实时更新播放进度条。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值