2

目前正在研究如何在 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

4

2 回答 2

3

解决方案:嗨,我正在开发一个 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,单声道或立体声)格式

于 2013-02-15T07:02:31.220 回答
1

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

用SharpDX同时播放多个WAV,用XAudio2完全可以,SharpDX对XAudio2没有任何限制。

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

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

于 2012-12-20T01:10:01.687 回答