这可能看起来像是一个非常基本的问题,但即使通过研究几个小时我也无法找出我做错了什么。
我尝试编写一个简单的控制台应用程序,它应该从资源中播放声音,这是我的代码:
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)
如果有人可以解释我失败的地方,真的很棒!抱歉,如果这是重复的,或者我犯了一个非常真的愚蠢的错误,但是在花了这么多时间之后,我仍然无法弄清楚如何解决它,也找不到已经存在的解释