最近的项目开发中遇到了这个问题,基本尝试了所有使用Silverlight on WP7来播放音频流的方法,总结了一下它们各自的特点。

1、MediaElement

优点:Silverlight自带控件,支持mp3和部分视频格式,方便控制。

缺点:不支持wav格式,需自行编写解码器(MediaStreamSource)。

适用场合:前台播放。

相关代码:无,参考MSDN即可。

2、Song+MediaPlayer

优点:小巧轻便,简单易用,支持格式多,可直接从Uri中加载。

缺点:需启用XNA Framework。

适用场合:后台播放完整音频。

相关代码:

song = Song.FromUri("music", new Uri("badapple.mp3", UriKind.Relative));
MediaPlayer.Play(song);

3、SoundEffect+SoundEffectInstance

优点:可同时播放多段音频,支持简单的音效处理。

缺点:需启用XNA Framework,且仅支持wav文件。

适用场合:后台播放多音频片段,并需要音效处理。

相关代码:

soundEffect = SoundEffect.FromStream(stream);
soundEffectInstance = soundEffect.CreateInstance();
soundEffectInstance.Play();

4、SoundEffect+DynamicSoundEffectInstance

优点:在3的基础上,DynamicSoundEffectInstance支持buffer机制(BufferNeeded事件和SubmitBuffer方法)。

缺点:需启用XNA Framework,且仅支持wav文件,另外DynamicSoundEffectInstance的buffer只支持byte[]格式,同时对wav的格式有所要求[1]。

适用场合:后台播放音频片段,并需要支持buffer机制。

相关代码:懒得写了,请自行研究。

参考资料:
[1] MSDN:Audio API Developers Guide

» 转载请注明来源及链接:未来代码研究所

Related Posts:

Leave a Reply

World Line
Time Machine
Friendly Links
Online Tools