我通过网络PCM音频数据流接收,这部分工作正常,所以我最终得到
DataReader incomming = args.GetDataReader();
byte[] RcvBuffer = new byte[incomming.UnconsumedBufferLength];
incomming.ReadBytes(RcvBuffer);
我将所有音频数据都放在缓冲区中。
我如何通过电话扬声器播放?你能指点我的方向吗?
由于
答案 0 :(得分:0)
有很多方法可以做到这一点。
您可以将WAVE标头添加到数据中,并使用MediaElement进行播放,请参阅the documentation for SetSource method。
但是,如果“电话扬声器”是指耳机,那么只有creating a VoIP app才有可能。
答案 1 :(得分:0)
花了一段时间,但我把它分类了,也许其他人将来需要帮助。
如同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();