2016-01-22 1 views
0

Lors de la lecture d'un flux de mémoire contenant de l'audio codé wav, la lecture commence par un pop/crépitement forte:pop au début de la lecture

ms = new MemoryStream(File.ReadAllBytes(audio_filename)); 
[...] 
dispose_audio(); 
sound_output = new DirectSoundOut(); 
IWaveProvider provider = new RawSourceWaveStream(ms, new WaveFormat()); 
sound_output.Init(provider); 
sound_output.Play(); 

Ce pop/grésillement ne se produit pas lors de la lecture du fichier wav directement:

dispose_audio(); 
NAudio.Wave.WaveStream pcm = new WaveChannel32(new NAudio.Wave.WaveFileReader(audio_filename)); 
audio_stream = new BlockAlignReductionStream(pcm); 
sound_output = new DirectSoundOut(); 
sound_output.Init(audio_stream); 
sound_output.Play(); 

même fichier en cours de lecture, mais lorsque les données wav sont stockées dans un flux de mémoire d'abord, il y a un pop un peu fort au début de la lecture. Je suis un débutant avec NAudio et l'audio en général, donc c'est probablement quelque chose de stupide, mais je n'arrive pas à le comprendre.

+1

Veuillez consulter ["Les questions doivent-elles inclure" les balises "dans leurs titres?"] (Http://meta.stackexchange.com/questions/19190/should-questions-include-tags-in-their-titles), où le consensus est "non, ils ne devraient pas"! –

+0

@AndreasNiedermair Merci d'avoir signalé cela. – Sylverdrag

Répondre

0

Vous lisez l'en-tête du fichier WAV comme s'il s'agissait d'un fichier audio. Au lieu de RawSourceWaveStream, vous devez toujours utiliser WaveFileReader, il suffit de transmettre votre flux de mémoire.

+0

Merci! Ça a du sens. – Sylverdrag