我通过网络接收PCM音频数据流,这部分工作正常,所以我最终使用
DataReader incomming = args.GetDataReader();
byte[] RcvBuffer = new byte[incomming.UnconsumedBufferLength];
incomming.ReadBytes(RcvBuffer);
我有所有的音频数据在缓冲区。
如何通过电话扬声器播放?你能给我指个方向吗?
感谢
有很多方法可以做到这一点。
您可以在数据中预先设置WAVE标头,并使用MediaElement进行播放,请参阅SetSource方法的文档。
然而,如果你所说的"电话扬声器"是指耳机,那么只有当你正在创建一个VoIP应用程序时,这才有可能。
花了一段时间,但我已经整理好了,也许将来会有其他人需要帮助。
- 第一个问题-由于我刚刚开始为Windows Phone开发应用程序,我选择了空白应用程序(Windows Phone)而不是空应用程序(WindowsPhoneSilverlight)
正如宋所说,有很多方法可以做到这一点,这是我使用的一种方法。
我简化了这段代码,并重新键入了它,这样可能会有一些拼写错误
using Microsoft.Xna.Framework.Audio;
using System.IO;
1) 创建流以加载传入数据:
MemoryStream stream = new MemoryStream();
2) 将数据从缓冲区加载到流:
stream.Write(RcvBuffer, 0, RcvBuffer.Length);
3) 我正在使用SoundEfect通过扬声器播放这个。我使用的采样率是8kHz
SoundEffect sound;
sound = new SoundEffect(stream.toArray(), 8000, AudioChannels.Mono)
sound.Play();