Воспроизведение звука с микрофона в реальном времени с помощью SoundEffect silverlight 5

Я пытаюсь воспроизвести звук с микрофона в режиме реального времени, используя звуковой эффект и аудиозвонок в Silverlight 5, но звук прерывается, вот код, который я использовал

protected override void OnSamples(long sampleTime, long sampleDuration, byte[] sampleData)
{
  try
  {
    SoundEffect effect = new SoundEffect(sampleData, 8000, AudioChannels.Mono);
    effect.Play();
   }
   catch
   { }
 }

Любая помощь или альтернативы?

1 ответ

Решение

Я уверен, что это не тот сценарий, для которого предназначен класс SoundEffect. Для воспроизведения последовательного аудиопотока вам нужна как минимум некоторая буферизация и согласованность между различными кадрами. То, что я делал в прошлом, чтобы заставить подобные вещи работать, - это кратковременно буферизовать звук, поступающий из AudioSink, а затем сделать его доступным для MediaStreamSource, который, в свою очередь, воспроизводит его. Существуют хорошие базовые реализации MediaStreamSource, множество мест, которые вы можете занять (странная часть - правильно получить все заголовки WAV), но вам все равно придется писать код буферизации самостоятельно. Простейшим способом было бы использовать очередь для хранения каждого переданного байтового массива, а затем просто заставить MediaStreamSource извлекать байтовые массивы в своем методе GetSampleAsync().

Начните здесь: http://dotnet.dzone.com/news/creating-sound-using

Другие вопросы по тегам