Csharp/C#教程:如何将2个wav文件混合在一起?分享


如何将2个wav文件混合在一起?

我正在尝试录制输入并将其与歌曲合并(不连接)。 我有一把吉他,我在听一首歌的同时录制了这首吉他,我想把吉他放在歌曲上(如音响)。 这样做有什么办法吗? 如果实时混音不可能 – 我可以在录制后将它们合并吗? 就像我录制了吉他,现在它是一个wav文件,我想把两个wav文件混合在一起。 多数输入设备:

private void Capture() { input = new WasapiCapture((MMDevice)inputCombo.SelectedItem); bufferedWaveProvider = new BufferedWaveProvider(input.WaveFormat); input.DataAvailable += WaveInOnDataAvailable; input.StartRecording(); write = new WaveFileWriter(System.IO.Path.GetTempFileName(), input.WaveFormat); } private void WaveInOnDataAvailable(object sender, WaveInEventArgs e) { bufferedWaveProvider.AddSamples(e.Buffer, 0, e.BytesRecorded); write.Write(e.Buffer, 0, e.BytesRecorded); write.Flush(); } 

我想将它写入已存在的wav文件而不是覆盖它,而不是将其写入空白文件。 是否可以使用MixingSampleProvider?

要使用MixingSampleProvider混合多个ISampleProvider源,您可以执行以下操作:

SignalGenerator具有Gain属性,可以指定混音中应该有多大声。

 using System; using NAudio.Wave; using NAudio.Wave.SampleProviders; namespace ConsoleApplication1 { internal class Program { private static void Main(string[] args) { ISampleProvider provider1 = new SignalGenerator { Frequency = 1000.0f, Gain = 0.5f }; ISampleProvider provider2 = new SignalGenerator { Frequency = 1250.0f, Gain = 0.5f }; var takeDuration1 = TimeSpan.FromSeconds(5); // otherwise it would emit indefinitely var takeDuration2 = TimeSpan.FromSeconds(10); var sources = new[] { provider1.Take(takeDuration1), provider2.Take(takeDuration2) }; var mixingSampleProvider = new MixingSampleProvider(sources); var waveProvider = mixingSampleProvider.ToWaveProvider(); WaveFileWriter.CreateWaveFile("test.wav", waveProvider); } } } 

这应该可以使用WaveMixerStream32 ,例如像这样

上述就是C#学习教程:如何将2个wav文件混合在一起?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

 var mixer = new WaveMixerStream32 { AutoStop = true}; var wav1 = new WaveFileReader(@"c:...1.wav"); var wav2 = new WaveFileReader(@"c:...2.wav"); mixer.AddInputStream(new WaveChannel32(wav1)); mixer.AddInputStream(new WaveChannel32(wav2)); WaveFileWriter.CreateWaveFile("mixed.wav", new Wave32To16Stream(mixer)); 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1026214.html

(0)
上一篇 2022年1月9日
下一篇 2022年1月9日

精彩推荐