声音播放的开始被切断

本文关键字:开始 播放 声音 | 更新日期: 2023-09-27 18:28:04

我正试图从嵌入式资源中播放WAV,但它总是在0.5到2.0秒的时间内停止播放。也就是说,如果WAV是一个录音声音,说"大家好。今天的新闻……",那么播放通常从一开始就切断"大家好"。

播放代码非常简单:

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()时才会中断声音播放。后续调用似乎正常。

声音播放的开始被切断

我刚刚遇到了同样的问题。无论是在应用程序中还是在通过外部媒体播放器(如VLC)播放时,声音的开头都会被剪切。在我的案例中,这个问题与蓝牙扬声器有关。将声音输出切换到有线扬声器后,效果良好。

应该没有问题。尝试将wav放入文件并从文件中播放。如果问题仍然存在,我认为你应该检查你的声卡的设置是否有各种效果,比如渐变。

试着播放"C:''Windows''Media''chord.wav",它很短,甚至不到一秒钟。

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

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

我的问题确实是蓝牙扬声器。。。我断开了连接,然后重新连接,之后一切都很好。我不必切换到有线扬声器。

问题发生在两个不同的微软玩家和VLC身上。