如何一次播放多个mp3 / wma文件?

时间:2011-04-25 19:35:23

标签: windows-phone-7 audio mp3 wav wma

我需要在我的WP7应用中一次播放多个声音效果。 我目前使用wav文件,大约需要5兆字节,而不是用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

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

1 个答案:

答案 0 :(得分:3)

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

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

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

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

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