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

时间:2016-01-05 22:58:54

标签: c# audio directx directsound

这可能看起来像是一个非常基本的问题,但即使通过研究几个小时我也无法找出我做错了什么。

我尝试编写一个简单的控制台应用程序,它应该从资源中播放声音,这是我的代码:

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 version 4.6

  • 32位程序

  • 声音文件格式:WAV

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

如果有人可以解释我失败的地方,真的很棒!抱歉,如果这是重复的,或者我犯了一个非常真的愚蠢的错误,但是在花了这么多时间之后,我仍然无法弄清楚如何解决它,也找不到已经存在的解释

0 个答案:

没有答案