NAudio - Потоковое byte[] wav замедляет воспроизведение

Я пытаюсь прочитать байты из файла wav и отправить его в поток, но он воспроизводится медленно. Не могли бы вы помочь мне узнать правильный способ заполнения byte[]?

Спасибо за помощь.


person John    schedule 11.06.2010    source источник


Ответы (1)


Вы используете NAudio для чтения файла WAV и воспроизведения данных? вам нужно убедиться, что вы используете один и тот же WaveFormat на обоих концах

person Mark Heath    schedule 11.06.2010
comment
Привет Марк, Спасибо за ваш ответ. Я пытался связаться с вами. Я счастлив :) Что ж, я пытаюсь перехватить полученный с микрофона буфер byte[] и передать новый wav-файл как byte[]. При передаче новых звуковых данных в виде byte[] я использую File.ReadAllBytes. Не могли бы вы предложить хороший способ отправки byte[] в правильном направлении? - person John; 11.06.2010
comment
Привет, Марк, WaveStream outStream = new WaveFileReader(test.wav); outStream = WaveFormatConversionStream.CreatePcmStream(outStream); outStream = новый BlockAlignReductionStream (outStream); // уменьшает изменчивость byte[] buffer = new byte[outStream.Length]; outStream.Read(buffer, 0, (int)outStream.Length - 1); Array.Copy(buffer, 0, newSoundByteArray, startIndex, buffer.Length); newSoundByteArray отправляется в поток и воспроизводится медленно. Формат волны совпадает. - person John; 11.06.2010
comment
как вы собираетесь воспроизводить данные? - person Mark Heath; 11.06.2010
comment
В классе MicInterceptor SkypeFX я присваиваю этот newSoundByteArray args.Buffer и использую: bufferStream.SetLatestInBuffer(args.Buffer); //обработать через эффекты OutputStream.Read(args.Buffer, 0, args.Buffer.Length); // Воспроизведение outStream.Write(args.Buffer, 0, args.Buffer.Length); Спасибо. - person John; 11.06.2010
comment
хорошо, я не знал, что вы используете SkypeFx. Скайп играет сам. Вы должны предоставить 16 бит 44,1 кГц моно. Преобразуйте аудио в этот формат, прежде чем передавать его обратно в Skype. - person Mark Heath; 11.06.2010
comment
Благодарю за ваш ответ. Не могли бы вы сказать мне, должен ли я делать что-то еще, кроме двух фрагментов, которые я только что показал? Test.wav имеет тот же формат 16 бит 44,1 кГц моно. Пожалуйста помоги. - person John; 11.06.2010
comment
Привет, Марк, я вижу, что оба формата волны совпадают. Формат микрофона 16 бит, частота дискретизации 44100 и моно. public SkypeBufferStream(int sampleRate) { waveFormat = new WaveFormat(sampleRate, 16, 1); } и формат волны test.wav такой же. Не могли бы вы сказать мне, что мне не хватает? Спасибо - person John; 11.06.2010
comment
Привет Марк, Было бы здорово, если бы вы могли помочь мне с вашим предложением. Спасибо за вашу помощь. - person John; 11.06.2010