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怎么获取mp3的自然时间然后赋值给progressbar
如何在没有关联应用程序的情况下直接播放声音文件(mp3、wav 等)?