WPF 应用程序 mp3 声音文件的相对路径

Posted

技术标签:

【中文标题】WPF 应用程序 mp3 声音文件的相对路径【英文标题】:WPF Application Relative path to a mp3 sound file 【发布时间】:2014-01-24 09:13:39 【问题描述】:

我正在使用 Visual Studio 2012 构建一个 WPF 项目,但我发现相对路径存在问题。

具体来说,我希望在选中 ToggleButton 时播放声音。

这是我的按钮的代码:

<ToggleButton Name="Circles" Margin="88,104,86,172" Background="#FFFFD0CD" Foreground="Black" Checked="Circles_Checked">Circles</ToggleButton>

如果我这样写:

    private void Circles_Checked(object sender, System.Windows.RoutedEventArgs e)
    

    MediaPlayer mplayer = new MediaPlayer();

    mplayer.Open(new Uri("C:\\Users\\user1\\Documents\\Visual Studio 2012\\Projects\\RehabilitationGUIProject\\RehabilitationGUIProject\\circles.mp3", UriKind.Relative));

    mplayer.Play();
    

一切正常。但我希望这段代码也能在其他机器上工作,不仅仅是我的。如果我必须将声音移动到另一个位置怎么办?我想使用相对路径并在我的项目文件夹中移动每个声音。

于是我在根项目中新建了一个名为 Sound 的文件夹,结构如下:

RehabilitationGuiProject \属性 \参考 \斌 \对象 \听起来 \circles.mp3

...其他文件 .xaml

所以我写了上面相同的代码行,改变了这一行:

mplayer.Open(new Uri(@"/Sounds/circles.mp3", UriKind.Relative));

但是没有声音播放。从项目文件夹播放声音的正确相对路径是什么?

【问题讨论】:

您只能直接从文件系统播放文件,不能播放作为“资源”嵌入到程序集中的文件。 【参考方案1】:

路径必须相对于执行应用程序的文件夹。

mplayer.Open(new Uri(@"../../Sounds/circles.mp3", UriKind.Relative));

(假设您的 exe 是从 Bin/Debug 文件夹中运行的)

【讨论】:

谢谢您,现在可以使用了!我非常感谢您的帮助! 您可以在 Visual Studio 解决方案资源管理器中将 mp3 文件标记为“内容”和“如果较新则复制”,而不是跳出调试文件夹(通过添加 ../../)。 Visual Studio 然后会将 mp3 文件复制到正确的位置。

以上是关于WPF 应用程序 mp3 声音文件的相对路径的主要内容,如果未能解决你的问题,请参考以下文章

WPF 应用程序中的音频截断

WPF怎么获取mp3的自然时间然后赋值给progressbar

如何在没有关联应用程序的情况下直接播放声音文件(mp3、wav 等)?

怎么通过程序(如python)判断一个音频文件(如wav、mp3等格式)的声音清晰度?

在 iOS 应用中播放多种声音(mp3、wav 等)

Wpf - 相对图像源路径