问题标签 [soundplayer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
wpf - SoundPlayer 的替代品
我正在使用SoundPlayer
该类在我的 WPF 应用程序中播放 WAV 文件。这些文件很短,是应用程序的一部分,并根据程序中发生的事件进行播放。用户无法控制播放什么声音,也无法自行决定播放声音。我也尝试过使用 WPFMediaPlayer
控件,但我遇到了该控件的问题。效果很好,SoundPlayer
但是有问题。
本质上,我需要保留一系列声音,并在它们排队时一个接一个地播放声音。在某些情况下,我必须停止播放任何声音并播放另一种声音。SoundPlayer
所以我有两个要求与控件互斥:
- 我的代码需要知道声音何时播放完毕。
- 声音必须在后台播放
为了实现这一点,我创建了一个名为SoundController
. 这有一个后台线程,它使用Thread
's Dispatcher
对我用来播放声音的方法的调用进行排队,使用BeginInvoke
. 该方法在SoundController
调用播放声音之前在事件中引发一个事件SoundPlayer.PlaySync
,然后在PlaySync
返回后引发另一个事件。
在我的 UI 线程中,在我需要停止声音的地方,我调用了SoundController
类的Stop
方法。这会调用SoundPlayer
'Stop
方法来停止播放声音。这就是问题发生的地方。事实证明,SoundPlayer.Stop
它不会停止声音,而是等待声音结束后再返回。
这会阻止我的 GUI 死机。虽然我可以异步调用它,但我的 GUI 不会停止,但声音也不会停止。
正如我所说,WPF MediaPlayer 对我们不起作用,而且无论如何它是矫枉过正的。是否有其他播放声音的替代方法可以让我能够引发事件、在后台线程中播放声音并停止播放?
2012 年 6 月 26 日编辑:
这个问题已经存在一个多月了,我还没有收到任何回复。所以我想没有其他替代SoundPlayer
控制。
我将从不同的角度发布一个新问题。
asp.net - ASP.NET 声音资源未发布
所以我在 VS2010 中创建了一个 ASP.NET 4 应用程序,它需要向最终用户播放声音,它在我的本地开发环境中运行良好。问题是声音资源也不是 Resources.resx 没有发布到服务器。知道为什么吗?
我做了什么:
1) 在项目 属性 资源下,我添加了我的声音资源,名为:soundbyte(包含 soundbyte.wav)。我注意到这会创建一个带有 wav 文件的 Resource 文件夹,并在我的项目下创建一个 Resources.resx 文件来引用该文件
2)在我的代码中,我按如下方式播放文件:
c# - WAV 播放后的 C# SoundPlayer 静态
我正在使用此代码从资源中播放 WAV 文件,并且音频播放正确,但是在播放后(大约 1/2 秒)我得到了短暂的静态爆炸:
如果我取消注释System.Media.SystemSounds.Beep.Play()
上面的行,那么来自我的资源的哔声和通知声音都可以正确播放,并且没有静态。我已经尝试了上述代码的一些不同变体,并且总是得到静态的。我尝试将所有变量设为静态,以防与早期垃圾收集有关,但这并没有帮助。
WAV 文件只是我从c:\WINDOWS\Media\ding.wav
(在 Windows XP 上)复制的一个文件,它在 Windows Media Player 中播放良好。另外,如果我使用 new SoundPlayer("c:\WINDOWS\Media\ding.wav")
,它会从文件中正确播放。
我想这与那个UnmanagedMemoryStream
有关Resources.Notify
,也许我需要先将它加载到托管流中?我知道如果我不使用new Bitmap(Resource.MyPNG)
并尝试Resource.MyPNG
直接使用 PNG 文件,我会遇到问题,所以可能与 WAV 资源类似?
更新:我最初以为每次播放声音时都会发生这种情况,但现在看来它只发生在我第一次在我的应用程序中播放声音时。所以也许需要做一些初始化?
我也试过这个,同样的问题:
c# - 如何在 C# 中附加声音
我正在通过阅读一些书籍和观看一些教程来自学 C#。所以,我决定同时做一个小项目,以获取更多经验并巩固我的知识。我正在尝试用格鲁吉亚语(我的语言)创建一个文本到语音程序,但是我不明白如何将不同的声音相互附加。例如,当我的程序要说“语言”时,它会将单词分成“la”“n”“gu”“a”“ge”所以,我已经记录了这些部分并想要附加它们并创建一个单词。我在 MSDN.COM 上寻找课程并找到了 SoundPlayer,但我不知道如何附加 WAV 格式的声音。我想将一种声音添加到另一种声音并播放一个新声音,例如我的声音说“aaa”,另一个说“bbbb”
为了划分单词,我创建了一个数组列表并使用了这段代码。
我已经在 java 上制作了这个程序,并且想在 C# 上做同样的事情,所以这是我在 java 上的代码。这就是我之后添加声音的方式,将它们放入arraylist。
我应该从这些http://msdn.microsoft.com/en-us/library/system.media.soundplayer.aspx中使用哪个方法或类?我如何在 C# 中做同样的事情?
c# - 如何将 .wav 格式的声音相互附加
我正在通过阅读一些书籍和观看一些教程来自学 C#。所以,我决定同时做一个小项目,以获取更多经验并巩固我的知识。我正在尝试用格鲁吉亚语(我的语言)创建一个文本到语音程序。我在java中做过同样的程序,但想用C#来传输它,但我不明白如何将不同的声音相互附加。例如,当我的程序想要说一个词“general”时,它会将这个词分成像这样的部分 "ge"-first "ne"-second "ra"-second "l"-second (这些 first 和 second 表示该部分位于单词的第一部分,我这样做是因为 ge-first 和 ge -second 有不同的语调)所以,我以 .wav 格式记录了这些部分,并希望程序附加它们并创建一个单词。我在 MSDN.COM 上寻找课程并找到了 SoundPlayer,但我不知道如何将 WAV 格式的声音相互附加。我想将一种声音添加到另一种声音并播放新的声音,例如我有一个声音说“aaa”而另一个说“bbbb”我想要一个声音说“aaabbbb”。
为了划分单词,我创建了一个数组列表并使用了这段代码。
我在我的 java 程序中使用了相同的代码(当然是在 java 语法中),但是在尝试使用 .wav 文件时遇到了问题,我不知道使用哪种方法以及如何粘贴这些声音。这就是我在java上的做法。
现在我想在 C# 上做几乎同样的事情。我查看了此页面http://msdn.microsoft.com/en-us/library/system.media.soundplayer.aspx但不知道该怎么做,所以请帮助我:) 我应该使用什么方法和如何?
c# - XML 声音的字节形式
我有一个 .wav 文件,我将此字节形式写入 XML。我想在我的表格上播放这首歌,但我不确定我是否正确并且它不起作用。Str 是我文件的字节形式。
c# - How to play all words using narrator?
my project is text to speech project, here is my code,
but enter text "au" it will play only "u" sound. but I put break point and press F11 then only it's play a sound and u sound. What is the reason behind. please can you help me?
c# - SoundPlayer 不播放任何捆绑的 Windows 声音 PCM wav 文件
在 C# 中,我无法使用以下代码从 System.Media 获取 SoundPlayer 类来播放我的 C:\Windows\Media 文件夹中的任何 wav。我得到的只是没有声音:
我用一个名为“Gspot”的程序检查了波形文件“tada.wav”,它告诉我音频编解码器是“PCM Audio”。我没有收到任何编译器警告或错误,运行程序时也没有引发异常。我只是听不到任何声音。我的扬声器已打开,我可以使用 Windows Media Player 播放文件。
将 wav 添加为项目资源没有任何区别。有人可以帮我弄清楚为什么我听不到任何声音吗?
c# - SoundPlayer 并播放无缝连续的声音
我想要做的是播放循环 wav,但具有特定的循环开始位置,如音乐模块文件(.it、s3m..mod 等)中使用的样本。SoundPlayer 没有这个功能,所以我创建了两个单独的文件:原始 wav 和开头截断到循环开始处的 wav。我想无缝地连续播放这两个文件,首先是使用 PlaySync() 的原始 wav 文件,然后是使用 PlayLooping() 的循环部分。
不幸的是,在我 PlaySync() 第一个 wav 之后,它和 PlayLooping() 开始播放循环 wav 之间有一个瞬间中断。
这在播放两个不同的不同声音时可能不明显,但在尝试拉出我想要的循环机制时非常明显。声音 wav 是乐器样本,非常小(通常不超过 0x1000 字节)。
c# - c# SoundPlayer 播放列表循环
也许我有一个简单的问题,但我对 MSDN 有点困惑。我想用一些东西来播放音乐。我知道这听起来很容易。
这工作正常,但是 .PlayLooping 中的更多声音呢?或改变音量?SoundPlayer 一定有一些解决方案,不是吗?
我想在 MOGRE 程序中使用,首先我尝试使用MogreFreeSL
,但对我来说没用。
我只想要多一个声音的背景音乐,一定很简单。