如何一次播放多个 mp3/wma 文件?
Posted
技术标签:
【中文标题】如何一次播放多个 mp3/wma 文件?【英文标题】:How to play multiple mp3/wma files at once? 【发布时间】:2011-04-25 19:35:22 【问题描述】:我需要在我的 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
,但您似乎也无法使用它来播放多个文件。此外,XNA MediaPlayer
无法实例化,据我所知,无法同时播放多个文件。
我看到的唯一解决方案是我以某种方式将mp3
解码为wav
并将Stream
提供给SoundEffect
。
关于如何完成多重播放的任何想法?或者关于如何将mp3
解码为wav
的建议?
【问题讨论】:
我不是移动开发人员,但我可能会建议 WAV 可能是最好的选择。解码 MP3 需要一些 CPU 能力。我不知道在较新的设备上这有多么微不足道,但是一次执行多个操作可能会遇到麻烦。您可能会考虑使用更轻量级的编解码器,或者在应用程序启动时将 MP3 解码为 RAM 中的原始未压缩音频。 【参考方案1】:关于转换...抱歉 - 但我认为目前没有任何可用于 WMA 或 MP3 解码的 api。
另外,我认为没有任何 MP3、WMA 或 Ogg 解码器的实现可以在纯 c# 代码中使用——我见过所有这些都使用 DirectShow 或 PInvoke——例如见C# Audio Library。
我个人确实希望音频/视频压缩/解压缩功能在不久的将来在 WP7 API 中可用 - 但我无法猜测何时!
对于一些简单的压缩,您可以尝试发送单声道文件而不是立体声文件,或者发送 8 位而不是 16 位音频文件 - 这些很容易在手机上转换回 16 位(分辨率明显下降)。
使用 zip 之类的压缩也可能有助于一些声音效果...但我不认为它会取得巨大成功。
【讨论】:
以上是关于如何一次播放多个 mp3/wma 文件?的主要内容,如果未能解决你的问题,请参考以下文章