【发布时间】:2017-05-14 16:56:47
【问题描述】:
我正在尝试将音频字节流式传输到 naudio waveout 流中,但它不起作用。这是伪代码:
byte[] by = new byte[2560] //audio packet sizes
int counter=0;
while (true) { //keep receiving bytes from incoming TCP socket
int bytesAvailable = await stream.ReadAsync(by, 0, 2560); //read incoming bytes
if(counter==0) {
using (var MemoryStream = new MemoryStream(by)) {
var waveOut = new WaveOut();
var waveFormat = new WaveFormat(16000, 16, 2); // wave format
var rawSource = new RawSourceWaveStream(MemoryStream, waveFormat);
waveOut.Init(rawSource);
waveOut.Play();
counter++;
}
}
..但我什么也没听到。我猜它只是读取一个数据包并停止,但我不知道。
有人知道哪里出了问题/如何解决吗?我知道字节正在进来,因为我打印出最后一个字节,所以它与网络接收无关。
【问题讨论】:
-
没关系,使用 BufferLength、DiscardOnBufferOverflow 和 AddSamples 让它工作。必须在缓冲区长度上玩一点,但我会说我有可能以不到一秒的延迟将其清除为 85%。我对此很满意。仍然希望看到其他人的实现,因为它可能会更好。
-
你能用你的有效代码发布一个答案吗?我知道我来晚了,但这真的能帮到我!
-
在下方发表新评论。但是,从那以后我没有看过代码,所以不确定它处于什么状态。不确定它对你的工作方式,让我知道。