【问题标题】:can't Get stream of mp3 file in wp7 application无法在 wp7 应用程序中获取 mp3 文件流
【发布时间】:2012-01-04 19:47:53
【问题描述】:

我正在使用 silverlight 和 XNA 为游戏构建 wp7 应用程序 我有一个名为“Punch1.mp3(Build action : resource ) 的 mp3 文件存储在项目文件夹中名为“SoundEffects"”的文件夹中

我想使用此代码播放文件

         StreamResourceInfo info;

         Uri myuri = new Uri("/SoundEffects/Punch1.mp3", UriKind.Relative);
         info = App.GetResourceStream (myuri);
         punch1 = SoundEffect.FromStream(info.Stream ) ; 

punch 在这里的代码中定义:

public static SoundEffect punch1;

问题在于它在第三行中引发了一个 nullreference 异常,声称 info 为 null 在调试模式下确实如此,我发现资源流信息为空
我认为这是因为尽管 uri 是正确的,但它无法读取文件

【问题讨论】:

  • 能否请您粘贴代码,该代码指的是拳头1 需要哪些信息才能查看您声明这些信息的位置.. thx

标签: c# windows-phone-7 nullreferenceexception


【解决方案1】:

你可以尝试两件事

- Clean and rebuild the project
- Try appending project name in URI "/PhoneApp1;component/SoundEffects/Punch.mp3"

【讨论】:

  • 当我附加项目名称时,这将是一个绝对或相对 uri?
  • 我认为这是相对的,因为您仍然通过您的项目相对访问它
  • 我试过了,还是不行,我在另一台电脑上试过也没用
【解决方案2】:

由于您仍然使用 XNA 程序集,因此您可以改用 TitleContainer.OpenStream(带有相对 URI)并将音频文件构建设置为 Content

【讨论】:

  • 我在这里试过上面的代码:Stream stream = TitleContainer.OpenStream(@"soundeffects\ahhh1.mp3"); punch1 = SoundEffect.FromStream(stream) ;流对象设法读取文件,并且在调试时它的长度和偏移量似乎很有希望,但第二行出现 InvalidOperationException
  • 抛出异常是因为FromStream 需要一个波形文件,而不是 MP3。 msdn.microsoft.com/en-us/library/… 如果要使用 FromStream 方法,则必须对其进行转换。但是您仍然可以使用TitleContainer.OpenStream 方法来加载WAV。
【解决方案3】:

我同意 Haris Haqsan 的观点,即您的 URI 字符串是错误的。

Uri myuri = new Uri("/PhoneBoxing;component/SoundEffects/Punch1.mp3", UriKind.Relative);

但您也应该考虑改用内容文件,而不是将它们嵌入资源中,因为它可以帮助您的应用程序启动时间。根据我们正在谈论的文件数量,它可能会产生很大的不同。

将您的构建操作设置为内容,您的代码应如下所示:

FileStream stream = new FileStream("/SoundEffects/Punch1.mp3", FileMode.Open, FileAccess.Read);

【讨论】:

  • uri 运行良好问题是 fromstream 方法只接受 wav 文件
【解决方案4】:

在以下代码中:

     Uri myuri = new Uri("/SoundEffects/Punch1.mp3", UriKind.Relative);
     info = App.GetResourceStream (myuri);
     punch1 = SoundEffect.FromStream(info.Stream ) ; 

SoundEffect.FromStream() 期望波形文件流不是 MP3,如下所示:http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.audio.soundeffect.fromstream.aspx。 所以找到一个 mp3 > wav 转换器的解决方案,或者只是找到另一种将 mp3 加载到 WP7 的方法

考虑到图片,这是正常的 URI,在正常情况下无法评估 isfile 的表达式。

【讨论】:

    【解决方案5】:

    我在我的机器上遇到了同样的问题,InvalidOperationException 有点令人困惑。我所要做的就是将 wav 文件重新编码为规范 listed on MSDN

    在我这样做之后,它工作得很好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多