如何将2个wav文件混合在一起?我正在尝试录制输入并将其与歌曲合并(而不是串联)。我有一把吉他,是在听歌时录制的,我想把吉他放在歌曲的顶部(就像立体声一样)。有什么办法吗?如果无法实时混音——我可以在录制后合并它们吗?就像我录制了一把吉他,现在它是一个wav文件,我想将两个wav文件混合在一起。大多数输入设备:privatevoidCapture(){input=newWasapiCapture((MMDevice)inputCombo.SelectedItem);bufferedWaveProvider=newBufferedWaveProvider(input.WaveFormat);input.DataAvailable+=WaveInOnDataAvailable;input.StartRecording();write=newWaveFileW(System.IO.Path.GetTempFileName(),input.WaveFormat);}privatevoidWaveInOnDataAvailable(objectsender,WaveInEventArgse){bufferedWaveProvider.AddSamples(e.Buffer,0,e.BytesRecorded);write.Write(e.Buffer,0,e.BytesRecorded);写。冲洗();我不想将其写入空白文件,而是将其写入现有的wav文件而不是覆盖它。是否可以使用MixingSampleProvider?要使用MixingSampleProvider混合多个ISampleProvider源,您可以执行以下操作:SignalGenerator有一个Gain属性,用于指定它在混音中的音量。使用系统;使用NAudio.Wave;使用NAudio.Wave.SampleProviders;namespaceConsoleApplication1{内部类程序{privatestaticvoidMain(string[]args){ISampleProviderprovider1=newSignalGenerator{Frequency=1000.0f,Gain=0.5f};ISampleProviderprovider2=newSignalGenerator{Frequency=1250.0f,Gain=0.5f};vartakeDuration1=TimeSpan.FromSeconds(5);//否则它会无限期地发射vartakeDuration2=TimeSpan.FromSeconds(10);varsources=new[]{provider1.Take(takeDuration1),provider2.Take(takeDuration2)};varmixingSampleProvider=newMixingSampleProvider(来源);varwaveProvider=mixingSampleProvider.ToWaveProvider();WaveFileWriter.CreateWaveFile("test.wav",waveProvider);这应该可以使用WaveMixerStream32,例如上面的C#学习教程:Howtomix2wavfilestogether?所有分享的内容,如果对你有用,需要了解更多C#学习教程,希望大家多多关注——varmixer=newWaveMixerStream32{AutoStop=true};varwav1=newWaveFileReader(@"c:...1.wav");变种wav2=newWaveFileReader(@"c:...2.wav");mixer.AddInputStream(newWaveChannel32(wav1));mixer.AddInputStream(newWaveChannel32(wav2));WaveFileWriter.CreateWaveFile("mixed.wav",newWave32To16Stream(mixer));本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如有转载请注明出处:
