2015-11-12 30 views
5

użyć tej funkcji, aby połączyć dwa pliki wavzłączyć dwa pliki wav w NAudio przed końcem pierwszej 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(); 
      } 
     } 
    } 

Ale ta funkcja przystąpić do drugiego pliku wav po zakończeniu pierwszego WAV za.

enter image description here

Co ja naprawdę chcę to do przyłączenia się do drugiego pliku wav 2 milisekundy przed końcem WAV za.

enter image description here

Czy istnieje jakiś sposób, aby to zrobić za pomocą NAudio lub stosując inną bibliotekę?

+0

Jak chcesz dołączyć do utworów? Czy chcesz je miksować lub wycinać 2ms z drugiego i wklejać do końca? – kidmosey

+0

Po prostu chcę to zmiksować @kidmosey! – zey

Odpowiedz

1

To, co próbujesz zrobić, to nie proste połączenie fal, to połączenie. W wyniku połączenia fale zostaną połączone, tworząc jedną "mieszaną" falę.

Aby scalić pliki, można śledzić this documentation z NAudio.