0
当我使用websocket连接从Android发送实时音频流时,我得到BufferedWaveProvider上的缓冲区完全异常。 从Android发送的音频格式:44100,Sterio,16bit 我也尝试增加BufferedWaveProvider的缓冲区长度,但仍然没有好处,唯一改变的是程序运行时间更长,此外我尝试将音频记录到文件使用WaveFileWriter,该文件大约80mb用于10秒音频流并且没有音频。C#Naudio BufferedWaveProvider缓冲区完全异常
class Program
{
static WaveOut waveOut;
static BufferedWaveProvider bufferedWaveProvider = null;
private static SpeechSynthesizer ss;
private static SpeechRecognitionEngine sre;
private static int temperature = 75;
private static WebSocketServer appServer = new WebSocketServer();
private static int total = 0;
private static WaveFileWriter writer = new WaveFileWriter("recording.wav", new WaveFormat(44100, 16, 2));
private static MemoryStream memStream = new MemoryStream();
static void Main(string[] args)
{
Console.WriteLine("Press any key to start the WebSocketServer!");
Console.ReadKey();
Console.WriteLine();
waveOut = new WaveOut();
bufferedWaveProvider = new BufferedWaveProvider(new WaveFormat());
waveOut.Init(bufferedWaveProvider);
waveOut.Play();
appServer.NewDataReceived += new SessionHandler<WebSocketSession, byte[]>(appServer_NewDataReceived);
appServer.NewSessionConnected += AppServer_NewSessionConnected;
appServer.SessionClosed += new SessionHandler<WebSocketSession, CloseReason>(appServer_SessionClosed);
//Setup the appServer
if (!appServer.Setup(80)) //Setup with listening port
{
Console.WriteLine("Failed to setup!");
Console.ReadKey();
return;
}
//Try to start the appServer
if (!appServer.Start())
{
Console.WriteLine("Failed to start!");
Console.ReadKey();
return;
}
Console.WriteLine("The server started successfully, press key 'q' to stop it!");
while (Console.ReadKey().KeyChar != 'q')
{
Console.WriteLine();
continue;
}
//Stop the appServer
appServer.Stop();
Console.WriteLine();
Console.WriteLine("The server was stopped!");
Console.ReadKey();
}
static void appServer_NewDataReceived(WebSocketSession session, byte[] value)
{
total = total + value.Length;
Console.WriteLine("Receiving!! " + total);
bufferedWaveProvider.AddSamples(value, 0, value.Length);
}
感谢Mark Heath,第二天我发现我的android设备实际上并没有录制音频,所以流是空的,现在它可以完美地解决任何问题,对于迟到的反应感到抱歉。 –