使用DirectSound(DirectX API)使用C#播放声音

使用DirectSound(DirectX API)使用C#播放声音,c#,audio,directx,directsound,C#,Audio,Directx,Directsound,这似乎是一个非常基本的问题,但即使通过研究几个小时,我也无法找出我做错了什么 我试图编写一个简单的控制台应用程序,用来播放资源中的声音,下面是我的代码: using System; using Microsoft.DirectX.DirectSound; namespace AudioPlayer { class Program { static void Main() { Console.WriteLine("Playi

这似乎是一个非常基本的问题,但即使通过研究几个小时,我也无法找出我做错了什么

我试图编写一个简单的控制台应用程序,用来播放资源中的声音,下面是我的代码:

using System;
using Microsoft.DirectX.DirectSound;

namespace AudioPlayer
{
    class Program
    {
        static void Main()
        {
            Console.WriteLine("Playing...");

            Device device = new Device();
            SecondaryBuffer buffer = new SecondaryBuffer(AudioPlayer.Properties.Resources.AudioFile, device);
            // AudioPlayer.Properties.Resources.AudioFile returns a stream

            buffer.Play(0, BufferPlayFlags.Default);

            Console.WriteLine("Finished");
            Console.ReadKey(true);
        }
    }
}
但我得到的只是一个没有文本的控制台窗口,虽然至少应该打印“播放…”,而且也没有声音

我正在使用Visual Studio 2015,它提供了暂停应用程序的选项,如果我这样做,它会告诉我所有线程当前都在处理外部代码。考虑到这一点,我假设我的程序在创建设备或缓冲区时被卡住了,但接着又是
Console.WriteLine(“Playing…”)似乎未执行

其他信息:

  • .NET framework 4.6版

  • 32位程序

  • 声音文件格式:WAV

  • 编解码器:MPEG-1音频层3(MP3)


如果有人能解释我失败的地方,那就太好了!如果这是重复的,或者如果我犯了一个非常愚蠢的错误,那么很抱歉,但是在花了这么多时间之后,我仍然无法找到解决方法,也无法找到已经存在的解释。

在.WAV文件中指定了什么编解码器?你能从Windows资源管理器中播放.WAV文件吗?您可能缺少编解码器?如何查找编解码器?是的,我可以从资源管理器中查找文件(使用Windows Media Player)@MickyExcellent,编解码器似乎出现了。要知道是哪一个,请看@Micky好的,谢谢!该文件使用MPEG-1音频第3层编解码器(MP3)。