gpt4 book ai didi

c# - 在C#中播放多个wav文件

转载 作者:行者123 更新时间:2023-11-30 19:28:25 24 4
gpt4 key购买 nike

我有一个应用程序,我需要在按下或单击某个键或按钮时播放一个 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 来做到这一点类(class)。请注意,您需要添加对 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 控件进行循环的唯一方法。

关于c# - 在C#中播放多个wav文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15513599/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com