2017-06-05 244 views
-1

Mediaplayer没有为我工作,所以我转移到了一个简单的测试项目(C#控制台应用程序)。我将我的MP3档案,该项目是这样的:在解决方案资源管理C#Mediaplayer不会播放来自资源的mp3文件

  1. 右击项目名称(测试)
  2. 添加文件夹资源
  3. 右键单击Solution Explorer中的资源文件夹
  4. 添加我的warn.mp3文件
  5. 左击warn.mp3文件
  6. 在属性窗口中将生成操作更改为资源。

可悲的是,这个代码不工作:

namespace test 
{ 
    class Program 
    { 
     public static void Main(string[] args) 
     { 
      MediaPlayer player = new MediaPlayer(); 
      player.Open(new Uri("resources/warn.mp3", UriKind.Relative)); 
      player.Play(); 
      Console.ReadKey(); 
     } 
    } 
} 

然而,这一个作用:

namespace test 
{ 
    class Program 
    { 
     public static void Main(string[] args) 
     { 
      MediaPlayer player = new MediaPlayer(); 
      player.Open(new Uri("C:\\Users\\Krepsy3\\Documents\\Programs\\OOP\\test\\test\\resources\\warn.mp3", UriKind.Absolute)); 
      player.Play(); 
      Console.ReadKey(); 
     } 
    } 
} 

什么是错的任何想法?

+0

Dupplicated,btw MediaPlayer不允许嵌入资源https://stackoverflow.com/questions/3728181/how-would-i-use-a-pack-uri-resource-与媒体播放器 – bradbury9

回答

0

您无法从内部EXE/DLL资源使用MediaPlayer。您应该选择其他播放器组件或将其写入磁盘。如果你可以选择另一个球员,看起来像System.Media.SoundPlayer可以做到这一点。搜索堆栈溢出Play wav/mp3 from memory应该有一些结果

0

这个怎么样:

namespace test 
{ 
    class Program 
    { 
     public static void Main(string[] args) 
     { 
      MediaPlayer player = new MediaPlayer(); 
      player.Open(new Uri(System.Environment.CurrentDirectory + "\resources\warn.mp3", UriKind.Relative)); 
      player.Play(); 
      Console.ReadKey(); 
     } 
    } 
} 
+0

那么,这并没有帮助。我不想从程序中包含外部声音文件,我希望它被“打包”,就像我以相同的方式添加图片文件一样,然后我可以在Image控件中显示它,而无需让电脑上的文件不再(在另一台机器上编译后) –

+0

然后将其添加到您的项目中。右键单击添加文件并添加它。它会被复制到你的bin文件夹中。 – NicoRiff

+0

如果我说得对,“包装”意味着嵌入式资源。 AFAIK MediaPlayer不允许这样做。 – bradbury9