c# - 在控制台上播放声音 - C#

标签 c# audio console console-application soundplayer

我正在用 C# 编写一个控制台应用程序,我想在连续显示文本时播放声音。这就是我所做的:

static SoundPlayer typewriter = new SoundPlayer("typewriter");
static public void print(string str, int delay)
    {
        Thread skipThread = new Thread(skipText);
        typewriter.PlayLooping();
        textgap = delay;
        foreach (char c in str)
        {
            Console.Write(c);
            if (textgap != 0)
                Thread.Sleep(textgap);

        }
        typewriter.Stop();

    }

typewriter.wav 被导入到我的项目中,位于 .cs 文件旁边,我选择了 copy always。当我运行这段代码时,开始播放声音时会弹出一个错误提示 Please be sure a sound file exists at the specified location. 这里有什么问题?

编辑: 根据 Kevin J 的回答,将我的代码更改为以下内容。

static SoundPlayer typewritter;

    public static void Load()
    {
        Assembly assembly;
        assembly = Assembly.GetExecutingAssembly();
        typewritter = new SoundPlayer(assembly.GetManifestResourceStream
            ("typewriter"));
    }

我还应该精确地使用路径 Environment.CurruntDirectory + "typewriter" 但没有任何变化。

最佳答案

解决了问题:我只需要设置 SoundPlayer 实例的 SoundLocation 属性:

SoundPlayer typewriter = new SoundPlayer();
typewriter.SoundLocation = Environment.CurrentDirectory + "/typewriter.wav";

关于c# - 在控制台上播放声音 - C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22028688/

相关文章:

c# - 持续监控设备是否通过IP连接

c# - 无法通过 HttpClient 或其他方式连接到 UWP 中的 127.0.0.1 (localhost) 设备门户(仅限 Windows 10 Mobile RS1)

c# - Audit.NET Entity Framework Core - 相关实体管理

swift - 如何在播放期间更改音频音高? ( swift 4)

javascript - $.post() 之后的代码在 post-request 完成之前执行

java - Java System.out.println 的 PHP 等价物是什么

c# - 使用 C# 更改 sql server express 的 tcp/ip 端口

c# - NAudio-wav的流字节[]使其播放缓慢

audio - ffmpeg 在连接视频时会留下音频间隙

javascript - 这个 setTimeout 是如何工作的?什么是 49221 以及 console.log.bind 是如何工作的?