gpt4 book ai didi

c#、mp3 和文件路径

转载 作者:太空宇宙 更新时间:2023-11-03 15:08:41 24 4
gpt4 key购买 nike

你好,我是 c# 的新手,我正在做一个需要播放 mp3 文件的小游戏。

我一直在搜索这个并使用 wmp 来做,就像这样:

    WindowsMediaPlayer myplayer = new WindowsMediaPlayer();
myplayer.URL = @"c:\somefolder\project\music.mp3";
myplayer.controls.play();

我能够使用 mp3 文件的完整路径成功播放该文件。问题是我找不到直接从项目文件夹中使用文件的方法,我的意思是,如果我将项目复制到另一台计算机,mp3 文件的路径将无效并且不会播放声音。我觉得我现在处于死胡同,所以如果有人能帮助我,我将不胜感激!提前致谢

最佳答案

另一个简单的选项是:

WindowsMediaPlayer myplayer = new WindowsMediaPlayer();
string mp3FileName = "music.mp3";
myplayer.URL = AppDomain.CurrentDomain.BaseDirectory + mp3FileName;
myplayer.controls.play();

这将从您的可执行文件所在的目录播放 MP3。同样重要的是要注意不需要反射,这会增加不必要的性能成本。

作为关于将 MP3 作为资源嵌入的评论的后续,添加以下代码后即可实现:

Assembly assembly = Assembly.GetExecutingAssembly();
string tmpMP3 = AppDomain.CurrentDomain.BaseDirectory + "temp.mp3";
using (Stream stream = assembly.GetManifestResourceStream("YourAssemblyName.music.mp3"))
using (Stream tmp = new FileStream(tmpMP3, FileMode.Create))
{
byte[] buffer = new byte[32 * 1024];
int read;

while ((read = stream.Read(buffer, 0, buffer.Length)) > 0)
{
// Creates a temporary MP3 file in the executable directory
tmp.Write(buffer, 0, read);
}
}
WindowsMediaPlayer myplayer = new WindowsMediaPlayer();
myplayer.URL = tmpMP3;
myplayer.controls.play();
// Checks the state of the player, and sends the temp file path for deletion
myplayer.PlayStateChange += (NewState) =>
{
Myplayer_PlayStateChange(NewState, tmpMP3);
};

private static void Myplayer_PlayStateChange(int NewState, string tmpMP3)
{
if (NewState == (int)WMPPlayState.wmppsMediaEnded)
{
// Deletes the temp MP3 file
File.Delete(tmpMP3);
}
}

关于c#、mp3 和文件路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42164949/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com