Pergunta

Com a biblioteca Naudio, estou tentando misturar um pouco de áudio usando um waveMixersTream32, então estou usando o wavechannel32 para alimentá -lo os fluxos no formato adequado. Eu tenho uma exceção com a seguinte mensagem:

O deslocamento e o comprimento estavam fora dos limites para a matriz ou contagem é maior que o número de elementos do índice até o final da coleção de origem.

O exemplo mínimo que eu poderia fazer isso também lançaram esse erro não incluiu o waveMixersTream32, levou -me à conclusão de que o problema estava em como estou usando o wavechannel32. O código é o seguinte:

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

Audio.wav é gerado muito bem. Audio32.Wav são 58 bytes e essa linha jogou a exceção.

O que está errado?

Foi útil?

Solução

Sim, isso é um bug em Naudio. Obrigado por denunciá -lo. Eu verifiquei uma correção (foi um problema com o wavechannel32.getSourceBuffer). Você também precisa saber que deve definir o PadwithZeroes como False no seu waveChannel32 antes de ligar para o WaveFileWriter.CreateWaveFile ou criará um arquivo WAV interminável, preenchendo lentamente seu disco rígido.

Outras dicas

Eu tenho uma repro com muita facilidade. Parece um bug básico no waveChannel32.read (), ele não lida com arquivos .wav com vários canais corretamente. O argumento numbytes se parece com o tamanho do arquivo, não o fluxo.

Deixe o Proprietário do projeto sabe. Você adicionará seu problema a uma lista bastante longa.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top