WaveChannel32 выдает мне исключение:Смещение и длина были за пределами допустимых значений

StackOverflow https://stackoverflow.com/questions/1994843

Вопрос

С помощью библиотеки NAudio я пытаюсь микшировать аудио с помощью WaveMixerStream32, поэтому я использую WaveChannel32 для передачи потоков в нужном формате.У меня вышло исключение со следующим сообщением:

Смещение и длина вышли за рамки для массива или count больше количество элементов от index до конца исходной коллекции.

Минимальный пример, который я мог бы привести, который также выдавал эту ошибку, вообще не включал WaveMixerStream32, и привел меня к выводу, что проблема заключалась в том, как я использую WaveChannel32.Код заключается в следующем:

var audio = new WaveFileReader(OriginalAudioFileName);
var audio32 = new WaveChannel32(new WaveFileReader(OriginalAudioFileName));
WaveFileWriter.CreateWaveFile(PublicAudioFileName + "audio.wav", audio);
WaveFileWriter.CreateWaveFile(PublicAudioFileName + "audio32.wav", audio32);

Аудио.wav генерируется просто отлично.audio32.wav имеет размер 58 байт, и эта строка вызвала исключение.

Что случилось?

Это было полезно?

Решение

Да, это ошибка в Наудио. Спасибо, что сообщили об этом. Я проверил исправление (была проблемой с WaveChannel32.getSourceBuffer). Вы также должны знать, что вы должны установить Padwithzeroes на False на свой WaveChannel32, прежде чем вызовать WaveFileWriter.CreateWaveFile, или вы создадите бесконечный файл WAV, медленно заполняя ваш жесткий диск.

Другие советы

Я довольно легко получил замечание.Это похоже на основную ошибку в WaveChannel32.Read(), она неправильно обрабатывает файлы .wav с несколькими каналами.Аргумент numBytes выглядит как размер файла, а не потока.

Пусть владелец проекта знает.Однако вы добавите свою проблему в довольно длинный список.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top