我使用此代碼從資源播放WAV文件,並且音頻播放正確,但播放後會播放一段短暫的靜態(大約1/2秒):C#SoundPlayer WAV播放後靜態
//System.Media.SystemSounds.Beep.Play();
SoundPlayer sndPlayer = new SoundPlayer();
sndPlayer.Stream = Resources.Notify;
sndPlayer.Play();
如果我去掉上面的System.Media.SystemSounds.Beep.Play()
線,那麼蜂鳴聲,並且聲音通知從我的資源都正常播放,且無靜電。我已經嘗試了以上代碼的幾個不同變體,並且始終獲得靜態。我試着讓所有的變量都是靜態的,因爲有些東西和早期的垃圾收集有關,但是這並沒有幫助。
WAV文件只是我從c:\WINDOWS\Media\ding.wav
(在Windows XP上)複製的一個文件,它在Windows Media Player中表現不錯。另外,如果我使用新的SoundPlayer("c:\WINDOWS\Media\ding.wav")
,它會從文件中正確播放。
我想它和UnmanagedMemoryStream
有關,Resources.Notify
是,也許我需要先將它加載到受管理的流中?我知道如果我不使用new Bitmap(Resource.MyPNG)
並直接嘗試使用Resource.MyPNG
,那麼我的PNG文件有問題,因此可能與WAV資源類似?
更新:我原本以爲每次播放聲音時都會發生這種情況,但現在看起來它只是第一次在我的應用程序中播放聲音。那麼可能需要完成一些初始化?
我也試過了,同樣的問題:
SoundPlayer sndPlayer = new SoundPlayer(Resources.Notify);
sndPlayer.Play();
您是否能夠快速測試另一臺PC是否出現同樣的問題?排除聲卡... –
有趣的是,你問,我現在回家了,它並沒有發生在我的家用電腦上。我懷疑這可能是PC的問題,甚至可能與在VS調試器下運行有關。我明天會在幾臺PC上進行測試,如果只是一個問題,我想這可能不是問題。 – eselk
雖然(通過SoundPlayer的文件名),它從文件播放很奇怪,但這是錯誤有時如何工作。 – eselk