开发者

How to play multiple mp3/wma files at once?

I have the need to play multiple soundeffects at once in my WP7 app. I currently have it working with wav files that takes around 5 megabyte, instead of 500kb when coded开发者_如何学运维 in wma/mp3.

Current part of the code:

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

This works great in a loop, preparing all effects, and then playing them.

However, I would really like to use mp3/wma/whatever-codec to slim my xap file down.

I tried to use MediaElement, but it appears that you also can't use that to play multiple files. Also the XNA MediaPlayer can't be instantiated, and as far as I experienced can't be made to play multiple files at once.

The only solution I see left is that I somehow decode the mp3 to wav and feed that Stream to SoundEffect.

Any ideas on how to accomplish the multiple playback? Or suggestions on how to decode mp3 to wav?


On the conversion... sorry - but I don't think there's any api currently available for WMA or MP3 decoding.

Also, I don't think there are any implementations of MP3, WMA or Ogg decoders which are available in pure c# code - all of them I've seen use DirectShow or PInvoke - e.g. see C# Audio Library.

I personally do expect audio/video compression/decompression to be available at some point in the near future in the WP7 APIs - but I can't guess when!

For some simple compression you can try things like shipping mono instead of stereo files, or shipping 8 bit rather than 16 bit audio files - these are easy to convert back to 16 bit (with obvious loss of resolution) on the phone.

Using compression like zip might also help for some sound effects... but I wouldn't expect it to be hugely successful.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜