2015-06-16 5 views
0

Использования BufferedWaveProvider для воспроизведения аудио образцов, которые хранятся в базе данных double[]NAudio воспроизведения в образцах памяти приводит к задержкам и неэстетичные пробела в звуке

_bufferedWaveProvider = new BufferedWaveProvider(Format) 
           { 
            DiscardOnBufferOverflow = true, 
            BufferDuration = TimeSpan.FromSeconds(5) 
           }; 

public void Consume(double[] samples, int offset, int count) 
{ 
    samples.Paginate<double, float>(offset, count) 
      .ForEach(x => 
      { 
      byte[] consumeBuffer = x.ToBytes(ref _consumeBuffer); 

      _bufferedWaveProvider.AddSamples(consumeBuffer, 0, _consumeBuffer.Length); 
      }); 
} 

звука при воспроизведении производят пробела в звуке. Образцы отправляются внутри метода Consume() на каждые 100 мс. Есть ли проблема, что WaveOut() играет быстрее, чем мы называем метод Consume()? Как синхронизировать это чтение и воспроизведение.

+1

API waveOut по умолчанию использует модель pull. Вы и/или NAudio каким-то образом превратили его в модель push, так что да, возможно, что вы не называете 'Consume' достаточно быстрым. Другая возможность заключается в том, что вы вызываете ее быстро, и буфер отбрасывается ('DiscardOnBufferOverflow'). Вы не показали, как это называется, так что невозможно дать надежный ответ. – jaket

ответ

0

Лучшим выбором здесь будет RawSourceWaveStream, а не BufferedWaveProvider, что позволит вам играть напрямую с MemoryStream, содержащего полный аудиозапись.

+0

Я использую BufferedWaveProvider для выполнения, Pause() и Resume(), Смешивая несколько каналов, Equalizing. Не знаю, как их достичь с помощью MemoryStream. Можем ли мы сначала инициализировать WaveOut, а затем добавить данные в MemoryStream? он не работает. Более того, я рисую форму волны во время ее воспроизведения. Легче было использовать BufferedWaveProvider. – jero2rome

+0

Я предполагал, что, поскольку ваши данные находятся в базе данных, у вас фактически есть доступ ко всем аудиоданным. –

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

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