Воспроизведение звука с микрофона в реальном времени с помощью 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