4

我需要在我的 WP7 应用程序中一次播放多个音效。我目前使用它处理大约 5 兆字节的 wav 文件,而不是使用 wma/mp3 编码时的 500kb。

当前部分代码:

 Stream stream = TitleContainer.OpenStream(String.Format("/location/{0}.wav", value)
 SoundEffect effect = SoundEffect.FromStream(stream);
 effect.Play();

这在一个循环中效果很好,准备所有效果,然后播放它们。

但是,我真的很想使用 mp3/wma/whatever-codec 来精简我的 xap 文件。

我尝试使用MediaElement,但似乎您也不能使用它来播放多个文件。XNAMediaPlayer也不能被实例化,据我所知,不能一次播放多个文件。

我看到的唯一解决方案是我以某种方式解码mp3towav并将其提供StreamSoundEffect.

关于如何完成多重播放的任何想法?或有关如何解码mp3的建议wav

4

1 回答 1

3

关于转换......对不起 - 但我认为目前没有任何可用于 WMA 或 MP3 解码的 api。

另外,我认为没有任何 MP3、WMA 或 Ogg 解码器的实现可以在纯 c# 代码中使用——我见过所有这些都使用 DirectShow 或 PInvoke——例如,参见C# Audio Library

我个人确实希望在不久的将来在 WP7 API 中可以使用音频/视频压缩/解压缩 - 但我猜不出什么时候!

对于一些简单的压缩,您可以尝试发送单声道文件而不是立体声文件,或者发送 8 位而不是 16 位音频文件 - 这些很容易在手机上转换回 16 位(分辨率明显下降)。

使用 zip 之类的压缩也可能有助于一些声音效果……但我不希望它取得巨大成功。

于 2011-04-25T21:21:38.747 回答