如何在 windows phone 7 上使用压缩音频进行 SoundEffects?

Posted

技术标签:

【中文标题】如何在 windows phone 7 上使用压缩音频进行 SoundEffects?【英文标题】:How do you use compressed audio for SoundEffects on windows phone 7? 【发布时间】:2010-11-04 21:15:00 【问题描述】:

我可以使用 SoundEffectInstance 很好地播放 wav 文件,但我找不到任何方法在手机上使用这些库播放压缩音频。

我发现使用 XNA 执行此操作的方法是使用 here 概述的 XACT 创建工具,但据我所知,手机上不提供 AudioEngine、WaveBank 和 SoundBank 类。通过各种资源,我发现有人使用内容加载器直接加载到音效中:

SoundEffect soundEffect = Content.Load<SoundEffect>(@"Content\Audio\LaserShot");
soundEffect.Play();

但我似乎也无法让它工作。

在我看来,一定有办法做到这一点,因为让所有音效都是未压缩的 wav 有点荒谬。

【问题讨论】:

【参考方案1】:

您需要将未压缩的文件添加到您的内容项目中。内容管道可以单独压缩它们,并让您将它们加载为SoundEffect(与加载Texture2D 的方式相同)。默认设置为未压缩(“最佳”),但您可以将其设置为使用有损压缩(“低”或“中”)以获得非常好的压缩率。

newer answer of mine here 包含更多信息和详细说明。

【讨论】:

我不知道如何设置内容管理器,因为我的类不是从基本 XNA 游戏类派生的。 我对另一个问题***.com/questions/2863575#2873609 的回答可能会有所帮助。基本上:WinForms 示例 (create.msdn.com/en-US/education/catalog/sample/…) 包含无需 Game 即可设置 GraphicsDevice 和 ContentManager 的代码。 我必须创建一个表单、GraphicsDeviceService 和 ServiceContainer 来初始化内容管理器以仅加载音频? 啊 - 如果您没有加载任何与图形相关的内容,您应该能够只传入 ServiceContainer 而不需要其中的 IGraphicsDeviceService-implementing 对象(因此您不需要形式)。实际上,您可以编写一个基本上空白的 IServiceProvider 实现。 好吧,我让它编译,但现在我无法让它找到要加载的任何文件。我尝试将 wav 文件放在不同的目录中,在解决方案本身中,也尝试加载由 XACT 创建的 .xap 文件。为什么这如此困难,为什么没有任何文档可以做到这一点?

以上是关于如何在 windows phone 7 上使用压缩音频进行 SoundEffects?的主要内容,如果未能解决你的问题,请参考以下文章

演示Windows Phone 7在监视器上

如何在 Windows Phone 7 上调试 Internet Explorer?

如何在模拟器上获取 Windows Phone 7 中的当前位置

如何识别当前在 Windows Phone 7 中使用的 GPS 模式

如何检查 HTML5 视频是不是在 Windows Phone 7 上结束?

windows phone 7 让应用程序在后退按钮上运行