【问题标题】:Play a sound using SoundPlayer使用 SoundPlayer 播放声音
【发布时间】:2014-04-01 05:21:21
【问题描述】:

我正在尝试播放特定的声音。 但是,我似乎无法访问我在解决方案资源管理器中添加的文件。 (我有一个名为“Sounds/”的文件夹,里面有几个 .wav 音效)

当我将文件路径硬编码到硬盘上的随机固定位置时,它工作得很好。此外,当我将资源放在“bin/debug/”文件夹中时,它工作得很好(这是我使用AppDomain.CurrentDomain.BaseDirectory 函数得到的最接近工作相对路径的路径)。

使用我在解决方案资源管理器中添加的文件时,如何使 SoundPlayer 正常工作?

【问题讨论】:

    标签: c# audio relative-path solution-explorer soundplayer


    【解决方案1】:

    您可以将它们作为项目资源嵌入到 dll/exe 中,然后通过 Application 对象使用它们:

    添加和编辑资源 (Visual C#)

    http://msdn.microsoft.com/en-us/library/7k989cfy%28v=vs.90%29.aspx

    您还可以使用资源管理器(如果您想单独交付声音文件,这是更好的选择):

    资源管理器

    http://msdn.microsoft.com/en-us/library/system.resources.resourcemanager%28v=vs.110%29.aspx

    【讨论】:

    • 啊,这个嵌入似乎真的很有效。经过一些管理后,它很容易处理。但是我想知道为什么不能直接从解决方案资源管理器中访问它们。
    • 可能你有Java经验,你习惯了jar等等。在 .net 中,您使用 dll 并且过程不同。但你是对的,这可能会更容易。
    • 是的,我使用 Java 已经有 12 年了,最近我不得不更广泛地使用 C#。 C# 的文档似乎比 Java 更难获得,但这可能就是我。
    【解决方案2】:
    System.Media.SoundPlayer player = new System.Media.SoundPlayer(@"c:\mywavfile.wav");
    player.Play();
    

    或 您可以使用资源将声音文件嵌入到您的项目中。

    System.Media.SoundPlayer player = new System.Media.SoundPlayer(Resources.Yourfile);
    player.Play();
    

    更新:当你将声音文件添加到资源中时,你可以通过文件名来访问它。

    【讨论】:

    • 第一个我已经确认它有效。但是我想要第二种选择。我似乎无法访问“Resources.Yourfile”。你能详细说明一下吗?
    • 在Resources中添加声音文件时,可以通过文件名访问。
    • 嗯,这似乎可行,但在我以其他答案中链接的方式嵌入它之后。
    猜你喜欢
    • 2010-11-20
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-12
    • 1970-01-01
    • 2014-08-15
    相关资源
    最近更新 更多