在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,单声道或立体声)格式