2017-02-03 2 views
0

J'essaye de couper un fichier mp3. en utilisant ce code:Fichier audio de retouche MP3

private void TrimMp3(string open, string save) 
    { 
     using (var mp3FileReader = new Mp3FileReader(open)) 
     using (var writer = File.Create(save)) 
     { 
      var startPostion = TimeSpan.FromSeconds(60); 
      var endPostion = TimeSpan.FromSeconds(90); 
      mp3FileReader.CurrentTime = startPostion; 
      while (mp3FileReader.CurrentTime < endPostion) 
      { 
       var frame = mp3FileReader.ReadNextFrame(); 
       if (frame == null) break; 
       writer.Write(frame.RawData, 0, frame.RawData.Length); 
      } 
     } 
    } 

« ouvert » est le fichier que je suis parage et « sauver » est l'endroit je sauve. La taille fonctionne mais pas complètement. Le nouveau fichier commence à partir de 60 secondes mais il continue et ne s'arrête pas à 90 secondes. Par exemple, si le fichier est de 3 minutes, il commencera à 1 minute et se terminera à 3. C'est comme si le moment est toujours vrai. Qu'est-ce que je fais mal ici?

Merci d'avance!

Répondre

0

Je n'ai aucune idée de ce que fait votre Mp3FileReader là-bas. Mais votre while loop semble étrange. Est-ce que mp3FileRead.ReadNextFrame() change également mp3FileReader.CurrentTime? Si non, alors il y a votre problème. Vous devriez au moins faire mp3FileReader.CurrentTime + 1Frame. Sinon, votre currentTime ne change jamais et la boucle sera toujours true

+0

Je pense qu'il devrait. C'est de la bibliothèque NAudio. J'apprends par le cours de Mark Heath (l'auteur de NAudio) et c'est le code qu'il a écrit mais au lieu de donner l'emplacement de fichier pour l'ouvrir et le sauver il l'a fait défier. – EldarGoren

+0

@EldarGoren Pouvez-vous lier à la documentation? –

+0

Voulez-vous dire la documentation NAudio? Si oui: https: //naudio.codeplex.com/documentation – EldarGoren

0

En NAudio 1.8.0, Mp3FileReader.ReadNextFrame ne progresse CurrentTime, bien que je checked in a fix pour que récemment.

Ainsi, vous pouvez soit obtenir le dernier code NA audio, ou utiliser la propriété SampleCount sur chaque Mp3Frame pour garder une trace précise de la distance que vous êtes vous-même.

+0

Je suis déjà en train d'utiliser NAudio 1.8.0 Je ne suis pas habitué à ça, donc il y a moyen de télécharger le correctif. Si ce n'est pas le cas, essayez de jouer avec le nombre d'échantillons. – EldarGoren

+0

J'ai ajouté une variable de position au code comme vous l'avez fait dans le correctif. 'var position = 0; while (mp3FileReader.CurrentTime EldarGoren