2015-11-12 9 views
5

Io uso questa funzione per unire due file wavunire due file wav in NAudio prima della fine del primo wav

public static void Concatenate(string outputFile, ArrayList sourceFiles) 
    { 
     byte[] buffer = new byte[1024]; 
     WaveFileWriter waveFileWriter = null; 
     try 
     { 
      foreach (string sourceFile in sourceFiles) 
      { 
       using (WaveFileReader reader = new WaveFileReader(sourceFile)) 
       { 
        if (waveFileWriter == null) 
        { 
         // first time in create new Writer 
         waveFileWriter = new WaveFileWriter(outputFile, reader.WaveFormat); 
        } 
        else 
        { 
         if (!reader.WaveFormat.Equals(waveFileWriter.WaveFormat)) 
         { 
          //throw new InvalidOperationException("Can't concatenate WAV Files that don't share the same format"); 
         } 
        } 
        int read; 
        while ((read = reader.Read(buffer, 0, buffer.Length)) > 0) 
        { 
         waveFileWriter.WriteData(buffer, 0, read); 
        } 
       } 
      } 
     } 
     catch (Exception ex) 
     { 
     } 
     finally 
     { 
      if (waveFileWriter != null) 
      { 
       waveFileWriter.Dispose(); 
      } 
     } 
    } 

Ma questa funzione unisco il secondo file wav dopo la fine del primo wav.

enter image description here

Quello che voglio davvero è quello di unire il secondo file wav 2 millisecondi prima della fine del wav.

enter image description here

Esiste un modo per farlo utilizzando NAudio, o utilizzando qualche altra libreria?

+0

Come vuoi unirti ai binari? Stai cercando di mescolarli o tagliare 2ms dal secondo e incollarlo fino alla fine? – kidmosey

+0

Voglio solo mixarlo @kidmosey! – zey

risposta

1

Quello che stai cercando di fare, non è una semplice unione di onde, è un'unione. In una fusione le onde saranno combinate per formare un'onda "mista".

Per unire i file è possibile seguire this documentation di NAudio.