Windows Phone 8.1通过扬声器播放音频数据流?

时间:2014-09-03 11:17:55

标签: audio windows-phone-8 stream windows-phone windows-phone-8.1

我通过网络PCM音频数据流接收,这部分工作正常,所以我最终得到

DataReader incomming = args.GetDataReader();
byte[] RcvBuffer = new byte[incomming.UnconsumedBufferLength];
incomming.ReadBytes(RcvBuffer);

我将所有音频数据都放在缓冲区中。

我如何通过电话扬声器播放?你能指点我的方向吗?

由于

2 个答案:

答案 0 :(得分:0)

有很多方法可以做到这一点。

您可以将WAVE标头添加到数据中,并使用MediaElement进行播放,请参阅the documentation for SetSource method

但是,如果“电话扬声器”是指耳机,那么只有creating a VoIP app才有可能。

答案 1 :(得分:0)

花了一段时间,但我把它分类了,也许其他人将来需要帮助。

  • 第一个问题 - 由于我刚开始为Windows Phone开发应用程序,我选择空白应用程序(Windows Phone)而不是空白应用程序(Windows Phone Silverlight)< / strong>并且我无法访问Silverlight项目中提供的许多功能,因此我对初学者的建议是:了解每个项目的用途。

如同Soonts所说,有很多方法可以做到这一点,这是我用过的方法。

我简化了这段代码并对其进行了重新设置,因此可能存在一些拼写错误。

using Microsoft.Xna.Framework.Audio;
using System.IO;

1)创建Stream以加载传入的数据:

MemoryStream stream = new MemoryStream();

2)将数据从缓冲区加载到流:

stream.Write(RcvBuffer, 0, RcvBuffer.Length);

3)我正在使用SoundEfect通过Loud-Speaker播放。我使用的采样率是8 kHz

SoundEffect sound;
sound = new SoundEffect(stream.toArray(), 8000, AudioChannels.Mono)
sound.Play();