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

C# 在Windows Phone 8中同时播放两个音频文件的最佳方式,c#,windows-phone-8,sharpdx,C#,Windows Phone 8,Sharpdx,目前正在研究如何在WindowsPhone8中同时播放两个mp3或aac格式的文件 目前我使用的是XNA SoundEffect类,但它只允许WAV文件,这对于通过网络传输来说并不理想 在研究过程中,我遇到了SharpDX,但这似乎主要是为了迎合.WAV或一次播放一个文件 我还发现了这个问题: Windows 8中可以有多个媒体元素,但我不确定它们是否在Windows Phone中() 任何想法都将不胜感激 更新:这不能通过MediaElement完成,因为我认为您可以尝试通过MediaFoun

目前正在研究如何在WindowsPhone8中同时播放两个mp3或aac格式的文件

目前我使用的是XNA SoundEffect类,但它只允许WAV文件,这对于通过网络传输来说并不理想

在研究过程中,我遇到了SharpDX,但这似乎主要是为了迎合.WAV或一次播放一个文件

我还发现了这个问题: Windows 8中可以有多个媒体元素,但我不确定它们是否在Windows Phone中()

任何想法都将不胜感激


更新:这不能通过MediaElement完成,因为我认为

您可以尝试通过MediaFoundation.MediaEngine完成(有关如何在WP8上正确初始化它的指南,请参阅“”)。在SharpDX中有一个Win8示例,可以用作仅播放音频的起点(删除所有d3d部分并应用WP8指南)。在MonoGame类中也有它的用法

关于同时使用SharpDX播放多个WAV,使用XAudio2是完全可能的,并且SharpDX对XAudio2没有任何限制

WP8 CLR Garbarge收集器在收集时似乎会阻止所有本机线程,包括像XAudio2这样的本机音频线程,这可能会导致音频口吃。我们对此无能为力,因为这是操作系统和.NET线程调度的问题


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

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

关于同时使用SharpDX播放多个WAV,使用XAudio2是完全可能的,并且SharpDX对XAudio2没有任何限制

WP8 CLR Garbarge收集器在收集时似乎会阻止所有本机线程,包括像XAudio2这样的本机音频线程,这可能会导致音频口吃。我们对此无能为力,因为这是操作系统和.NET线程调度的问题

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

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

然后像这样播放你的声音文件

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,单声道或立体声)格式 你好 我正在开发一个WP8应用程序,我需要多个声音来同时播放,我使用了XNA框架。这里是链接

然后像这样播放你的声音文件

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

使用XNA,在Windows Phone 10中它不会在锁定屏幕下播放(不确定您是否需要它…但其他人想知道);使用XNA,在Windows Phone 10中它不会在锁定屏幕下播放(不确定您是否需要它…但其他人想知道)