簡體   English   中英

在C#中播放多個wav文件

[英]Playing multiple wav files in C#

我有一個應用程序,當按下或單擊一個鍵或按鈕時我需要播放一個wav文件,我使用SoundPlayer類,但當我嘗試播放另一個wav文件同時正在播放的那個文件停止。

有沒有辦法同時播放多個wav文件? 如果它可以請你給我舉例或教程?

這是我到目前為止所得到的:

private void pictureBox20_Click(object sender, EventArgs e)
{
    if (label30.Text == "Waiting 15.wav")
    {
        MessageBox.Show("No beat loaded");
        return;
    }
    using (SoundPlayer player = new SoundPlayer(label51.Text))
    {
        try
        {
            player.Play();
        }
        catch (FileNotFoundException)
        {
            MessageBox.Show("File has been moved." + "\n" + "Please relocate it now!");
        }
    }
}

謝謝!

您可以使用System.Windows.Media.MediaPlayer類執行此操作。 請注意,您需要添加對WindowsBasePresentationCore引用。

private void pictureBox20_Click(object sender, EventArgs e)
{
    const bool loopPlayer = true;
    if (label30.Text == "Waiting 15.wav")
    {
        MessageBox.Show("No beat loaded");
        return;
    }
    var player = new System.Windows.Media.MediaPlayer();
    try
    {
        player.Open(new Uri(label51.Text));
        if(loopPlayer)
            player.MediaEnded += MediaPlayer_Loop;
        player.Play();
    }
    catch (FileNotFoundException)
    {
        MessageBox.Show("File has been moved." + "\n" + "Please relocate it now!");
    }
}

編輯:您可以通過訂閱MediaEnded事件來循環播放聲音。

void MediaPlayer_Loop(object sender, EventArgs e)
{
    MediaPlayer player = sender as MediaPlayer;
    if (player == null)
        return;

    player.Position = new TimeSpan(0);
    player.Play();
}

根據你的代碼,我猜你正在編寫某種音樂制作軟件。 老實說,我不確定這種方法每次都會完美循環,但據我所知,這是循環使用MediaPlayer控件的唯一方法。

無法使用SoundPlayer一次播放兩種聲音。

SoundPlayer使用Native WINAPI PlaySound ,它不支持在同一個實例中播放多個聲音。

更好的選擇是參考WindowsMediaPlayer

添加對C:\\Windows\\System32\\wmp.dll

var player1 = new WMPLib.WindowsMediaPlayer();
player1.URL = @"C:\audio_output\sample1.wav";

var player2 = new WMPLib.WindowsMediaPlayer();
player2.URL = @"C:\audio_output\sample2.wav";

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM