在Windows Phone 8中同时播放两个音频文件的最佳方法

目前正在研究如何在Windows Phone 8中同时播放两个mp3或aac格式文件。

目前我正在使用XNA SoundEffect类,但只允许WAV文件不适合通过网络传输。

虽然研究我遇到SharpDX,但似乎主要迎合.WAV或一次播放一个文件。

我还发现了这个问题: 在Windows 8 Metro App(C#/ XAML)中同时播放两个声音在Windows 8中可以使用多个媒体元素,但我不确定它们是否在Windows Phone中( 这个问题似乎不同意 )

任何想法将不胜感激。

更新:它不能通过MediaElement完成,因为我认为http://msdn.microsoft.com/en-us/library/windowsphone/design/hh202883(v=vs.105).aspx

您可以尝试通过MediaFoundation.MediaEngine执行此操作(有关如何在WP8上正确初始化它的指导,请参阅“ Windows Phone 8支持的Microsoft Media Foundation API ”)。 在SharpDX中,有一个Win8示例MediaPlayerApp可用作仅播放音频的起点(删除所有d3d部分并应用WP8指南)。 在MonoGame MediaPlayer类中也有它的用法。

关于使用SharpDX同时播放多个WAV,XAudio2完全可以实现,而SharpDX对XAudio2没有任何限制。

WP8 CLR Garbarge收集器只是一个巨大的问题,它似乎在收集时阻止所有本机线程,包括像XAudio2这样的本机音频线程,并且可能导致音频卡顿。 我们无能为力,因为这是操作系统和.NET线程调度的问题。

我对WP8实时解码两个MP3的能力也有一些疑问…如果你有一些结果,请告诉我们。

解决方案:嗨,我正在开发一个WP8应用程序,我需要同时播放多个声音,我使用了XNA框架。 链接在这里

http://msdn.microsoft.com/en-us/library/ff842408.aspx

然后播放这样的声音文件……

SoundEffect Sound = SoundEffect.FromStream(Application.GetResourceStream(new Uri("Assets/Sounds/wav/sound.wav", UriKind.Relative)).Stream); Sound.Play(); 

用于循环…

 SoundEffectInstance Sound = SoundEffect.FromStream(Application.GetResourceStream(new Uri("Assets/Sounds/wav/sound.wav", UriKind.Relative)).Stream).CreateInstance(); Sound.IsLooped = true; Sound.Play(); 

注意:文件必须是“.wav”(PCM,8或16位,8KHz到48KHz,单声道或立体声)格式