gpt4 book ai didi

c# - 同时播放两种声音

转载 作者:IT王子 更新时间:2023-10-29 04:14:36 24 4
gpt4 key购买 nike

有没有办法同时播放两种声音?

我知道 SoundPlayer 无法执行此操作。我不能使用 SoundEffect,因为我相信它只是 XNA 的一部分。

这两个必需的声音将在未知的随机时间被调用。声音播放后需要进行控制。即,声音必须能够在播放结束之前停止。

最佳答案

引用 PresentationCoreWindowsBase 并试试这个...

var p1 = new System.Windows.Media.MediaPlayer();
p1.Open(new System.Uri(@"C:\windows\media\tada.wav"));
p1.Play();

// this sleep is here just so you can distinguish the two sounds playing simultaneously
System.Threading.Thread.Sleep(500);

var p2 = new System.Windows.Media.MediaPlayer();
p2.Open(new System.Uri(@"C:\windows\media\tada.wav"));
p2.Play();

编辑我收到了反对票,可能是因为乍一看,这似乎会在第一个声音结束后播放第二个声音。不是,它们是由windows异步播放的。 sleep 就在那里,所以如果你逐字测试这段代码,你可以听到声音一起播放,如果没有延迟就不会引人注意,因为它们是相同的声音。

这段代码演示了两个声音在不同的线程上相互重叠播放,这有点毫无意义,因为播放无论如何都不会阻塞

new System.Threading.Thread(() => {
var c = new System.Windows.Media.MediaPlayer();
c.Open(new System.Uri(@"C:\windows\media\tada.wav"));
c.Play();
}).Start();

System.Threading.Thread.Sleep(500);

new System.Threading.Thread(() => {
var c = new System.Windows.Media.MediaPlayer();
c.Open(new System.Uri(@"C:\windows\media\tada.wav"));
c.Play();
}).Start();

http://msdn.microsoft.com/en-us/library/system.windows.media.mediaplayer.stop.aspx该类还具有停止播放所需的控件

关于c# - 同时播放两种声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6240002/

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