2011-09-20 176 views
1

我试图播放SilverSprite中的MP3文件,它是超级越野车。在Silverlight中是否有可用于播放MP3的替代库?Silverlight MP3播放库

编辑:现在有一个赏金,我专门寻找的东西:

  • 工程与SL 3-4
  • 是一个单独的项目/ DLL
  • 将工作中SilverSprite项目(我在SS之上使用了一个图层) - 没有GUI,只能调用播放声音的方法
  • 适用于构建操作设置为Content的内容。 由于SilverSprite中的错误,我无法使用嵌入式资源。我的应用程序不会运行。
  • 播放MP3。
  • 可以在同一时间

我希望这是明确的什么我试图找到播放多种音频文件。我希望能够嵌入我自己的游戏引擎中,它位于SilverSprite之上。我将提供XAP中的所有音频文件。 (该SilverSprite声音是相当坏了,无法正常工作。)

更新:我大概想进去的具体方向是实例化一个新的MediaElement,设置源,并播放。我在下面有一些代码,但a)NaturalDuration.TimeSpan.TotalMilliseconds报告0,并且b).MediaOpened从不触发。

MediaElement m = new MediaElement(); 
m.Source = new Uri("Content/Audio/chimes.mp3", UriKind.Relative); 
m.Stop(); // useless? 
//m.SetSource(new FileStream("Content/Audio/chimes.mp3", FileMode.Open)); // "Permission denied" exception, is it even finding the file? 
m.Volume = 1; // Max 
m.Position = TimeSpan.FromMilliseconds(0); 
while (m.CurrentState != System.Windows.Media.MediaElementState.Closed) 
{ 
    Thread.Sleep(10); 
} 
m.MediaOpened += (sender, e) => 
{ 
    m.Play(); 
}; 
m.Play(); 

回答

1

对于某些与您的更新方法非常相似的工作代码,请参见http://www.wiredprairie.us/blog/index.php/archives/577。请注意需要将MediaElement添加到控件/组件树 - 请参阅http://www.michaelsnow.com/2010/12/17/playing-sound-effects-on-windows-phone-7/

您需求的两个非常有趣的选项是this librarythis one

对于这种东西,你也可以实现/使用自定义MediaStreamSourcethis一...看到herehere

编辑 - 一些其他选项:

经由XNA播放多个声音并联看到源代码在http://create.msdn.com/en-US/education/catalog/sample/silverlightsound

从XNA 4使用的MediaPlayer类例如:

MediaPlayer.Stop(); 
MediaPlayer.Volume = 1; 
MediaPlayer.Play(Song.FromUri("TestSound", new Uri("/Content/Audio/chimes.mp3", UriKind.Relative))); 

至于播放多个声音文件在同一时间:

IIRC这是可能导致您的应用程序fa il验证。

+0

我会看看链接。失败哪个验证?我没有组件树;我的游戏只有一个组件。 – ashes999

+0

@ ashes999验证MS“appstore”... – Yahia

+0

应用程序验证不是问题,因为这可以通过网络进行播放。你有兴趣看我的来源吗?我尝试了上述几个来源,但要么获得空的资源,要么什么都没有发生。 – ashes999