声音播放的开始被切断

时间:2013-08-19 04:05:51

标签: c# .net winapi audio

我正在尝试从嵌入式资源中播放WAV,但它一直在从开始的0.5到2.0秒之间切断。也就是说,如果WAV是录制的声音,说“大家好。今天的新闻......”那么回放通常会从一开始就切断“Hello every ---”。

播放代码非常简单:

using System.Media;

play(GetResourceStream(audioItem));

...

private static void play(UnmanagedMemoryStream sndData)
{
   SoundPlayer sp = new SoundPlayer(sndData);
   sp.LoadCompleted += delegate( object sender, System.ComponentModel.AsyncCompletedEventArgs e)
   {
      sp.Play();
   };    
   sp.LoadAsync();
}

原始代码刚创建 SoundPlayer 对象,然后调用 Play()方法。我添加了 LoadAsync()调用和 LoadCompleted 事件处理程序,以查看是否解决了问题,但它似乎没有任何不同的行为。

附加信息:只有在应用首次调用 SoundPlayer.Play()时才会切断声音播放。后续调用似乎正常。

3 个答案:

答案 0 :(得分:0)

应该没有问题。尝试将wav放入文件并从文件播放。如果问题仍然存在,我认为您应该检查声卡的各种效果设置,例如淡入淡出。

尝试播放“C:\ Windows \ Media \ chord.wav”,它非常短,甚至不到一秒钟。

System.Media.SoundPlayer player = new System.Media.SoundPlayer(@"C:\Windows\Media\chord.wav");
player.Play();

答案 1 :(得分:0)

如果你没有问题"同步"玩,只需尝试SoundPlayer.PlaySync()方法。在完全相同的情况下(即使用"嵌入式资源" s),这对我来说效果很好。

答案 2 :(得分:0)

我刚遇到同样的问题。声音的开始在应用程序和通过外部媒体播放器(如VLC)播放时都会被切断。就我而言,问题与蓝牙扬声器有关。将声音输出切换到有线扬声器后,工作正常。