[英]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
類執行此操作。 請注意,您需要添加對WindowsBase
和PresentationCore
引用。
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使用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.