c# - 声音播放的开始被切断

标签 c# .net winapi audio

我正在尝试从嵌入式资源播放 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)播放时都会被剪切。就我而言,问题与蓝牙扬声器有关。将声音输出切换到有线扬声器后,效果很好。

关于c# - 声音播放的开始被切断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18306238/

相关文章:

c# - 如何连接 xaml 和 xaml.cs 文件

c# -/auth 和/authenticate 之间有什么区别?

asp.net - 请求变量中的查询字符串

c - 从 TCP 设备对象读取

c# - Entity Framework 代码优先 : CASCADE DELETE for same table many-to-many relationship

c# - 如何使 .NET 类库可链接(无 DLL)

c# - 如何根据 DateTime 类型的生日计算某人的年龄?

c# - 看看 Regex 对象是用什么模式创建的?

windows - 关于 SetWindowsHookEx() 和 Hook 的问题

c++ - DirectX 不正确的纹理