2016-06-23 9 views
0

Я получаю полное исключение буфера в BufferedWaveProvider, когда я отправляю аудиопоток в реальном времени с Android, используя соединение через веб-соединение. Формат аудио Отправлено с Android: 44100, Sterio, 16bit Я также попытался увеличить длину буфера BufferedWaveProvider, но все равно ничего хорошего, единственное, что изменилось, это то, что программа работает немного дольше. Также я попытался записать аудио в файл используя WaveFileWriter, файл был около 80 МБ в течение 10 секунд аудиопотока и не имеет звука в нем.C# Naudio BufferedWaveProvider Buffer Полное исключение

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); 
    } 

ответ

0

ну, вам необходимо начать с понимания того, какой формат входящих данных есть. Если файл wav, который вы записали, не имеет звука в нем, то что-то не так, хотя перед тем, как попытаться получить к нему доступ, вы должны вызвать Dispose на носителе волнового файла.

+0

Thanks Mark Heath, я понял, что на следующий день мое устройство Android не записало звук, поэтому поток был пуст, теперь он отлично работает с любой проблемой, извините за поздний ответ. –

 Смежные вопросы

  • Нет связанных вопросов^_^