J'ai essayé de résoudre un problème sur lequel j'ai été bloqué pendant des semaines! Fondamentalement, le logiciel que je développe peut enregistrer de l'audio, puis le lire. Le logiciel peut enregistrer des fichiers audio multipules, puis les lire l'un après l'autre (ce qui donne l'impression qu'il s'agit d'un fichier son continu). Cependant, le problème que je rencontre est que depuis le deuxième fichier son, il semble y avoir un "ticking" au-dessus du second, troisième, quatrième (et ainsi de suite) fichier.Problème avec le NAudio - Gérer les fichiers multipules les uns après les autres
Ce tick est les dernières millisecondes du premier fichier son. Le «ticking» auquel je fais référence est similaire au son d'un disque vinyle qui saute très vite.
Jusqu'à présent, je n'ai pas été en mesure de trouver la racine du problème, est-ce que quelqu'un a des idées en ce qui concerne ce qui pourrait causer cela?
Merci
EDIT: Ajout de quelques méthodes ci-dessous. Ok, donc la méthode suivante est la méthode de relecture.
public override void Replay(long time)
{
if(this.StartTime <= time && this.EndTime >= time && (Speed >= 0.95 && Speed <= 1.05))
{
if (!locked)
{
locked = true;
//close the previous stream
CloseWaveOut();
//open the file
waveOut = new NativeDirectSoundOut(latency);
mainOutputStream = CreateInputStream(outputFilename);
if (waveOut != null && mainOutputStream != null)
{
//set the time position
long offset = time - StartTime;
if (offset > 0)
{
mainOutputStream.CurrentTime = TimeSpan.FromMilliseconds(Convert.ToDouble(offset));
}
//CurrentTime = TimeSpan.FromMilliseconds(Convert.ToDouble(time - StartTime));
waveOut.Init(mainOutputStream);
((WaveChannel32)mainOutputStream).Volume = Volume;
Console.WriteLine("waveOut Playing"); // Debugging purposes
waveOut.Play();
}
}
}
}
La méthode suivante est la méthode d'enregistrement:
public override void Record(long time)
{
if (waveInStream == null && writer == null && !recorded)
{
//for record
writer = new WaveFileWriter(outputFilename, recordingFormat);
waveInStream = new WaveInStream(deviceNumber, recordingFormat, null);
waveInStream.DataAvailable += new EventHandler<WaveInEventArgs>(waveInStream_DataAvailable);
waveInStream.StartRecording();
this.StartTime = time;
Console.Out.WriteLine("Record Method called"); // Debugging Purposes
}
}
vous aurez besoin de montrer du code source afin de recevoir de l'aide. comment allez-vous enregistrer et lire l'audio? –
Ajouté du code illistrating méthode de lecture et méthode d'enregistrement – Alex