我需要在我的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
。
有关如何完成多重播放的任何想法?或者有关如何解码mp3
到wav
的建议?
答案 0 :(得分:3)
关于转换...对不起 - 但我认为目前没有任何api可用于WMA或MP3解码。
另外,我不认为有任何纯c#代码可用的MP3,WMA或Ogg解码器的实现 - 我见过的所有这些都使用DirectShow或PInvoke - 例如见C# Audio Library。
我个人确实希望在不久的将来某些时候可以在WP7 API中使用音频/视频压缩/解压缩 - 但我无法猜到什么时候!
对于一些简单的压缩,您可以尝试运输单声道而不是立体声文件,或运送8位而不是16位音频文件 - 这些很容易在手机上转换回16位(明显损失分辨率)。
像zip一样使用压缩也可能有助于一些声音效果......但我不希望它会取得巨大的成功。