Tag: naudio

从麦克风听到传入的音频

我只是想听听我对使用NAudio的麦克风所说的话,这是我的代码到目前为止,但问题是我听不到任何声音。 任何帮助,将不胜感激。 public partial class frmMain : Form { private WaveIn waveIn; // Gets an audio from microphone private WaveOut waveOut; // Sends audio to speaker private BufferedWaveProvider waveProvider; // Gets an audio from stream public frmMain() { InitializeComponent(); } private void frmMain_Load(object sender, EventArgs e) { waveOut = new WaveOut(); waveIn = new WaveIn(); […]

在NAudio中枚举录制设备

如何使用NAudio获取计算机上所有录制设备的列表? 当你想要录制时,你必须给它你想要使用的设备的索引,但是没有办法知道它是什么设备。 我希望能够选择Mic,Stereo Mix等。

将WasapiLoopbackCapture wav音频流转换为MP3文件

我能够在WasapiLoopbackCapture(naudio)的帮助下捕获由扬声器生成的系统音频。 但问题是它捕获wav文件和wav文件的大小非常大(几乎10到15 MB / Min)。 我必须捕获2-3小时的音频,这将太高了。 我正在寻找一种解决方案,将wap流转换为WasapiLoopbackCapture转换为MP3,然后将其保存到磁盘。 我尝试使用LAME.exe或其他解决方案,但没有成功。 任何工作代码。 这是我的代码: private void button1_Click(object sender, EventArgs e){ LoopbackRecorder obj = new LoopbackRecorder(); string a = textBox1.Text; obj.StartRecording(@”e:\aman.mp3″); } public class LoopbackRecorder { private IWaveIn _waveIn; private Mp3WaveFormat _mp3format; private WaveFormat _wavFormat; private WaveFileWriter _writer; private bool _isRecording = false; /// /// Constructor /// public LoopbackRecorder() { […]

如何在C#\ NAudio音乐播放器中创建搜索栏?

我是NAudio和C#的新手,我设法创建了一个简单的MP3播放器,你可以选择一个文件并播放它。 它还有一个播放/暂停按钮。 我现在想添加一个搜索栏,但不知道如何做到这一点。 波形样式的搜索条也可以吗? openButton单击处理程序 private void openButton_Click(object sender, EventArgs e) { OpenFileDialog open = new OpenFileDialog(); open.Filter = “Audio File|*.mp3;”; if (open.ShowDialog() != DialogResult.OK) return; CloseWaveOut(); // disposes the waveOutDevice and audiofilereader waveOutDevice = new WaveOut(); audioFileReader = new AudioFileReader(open.FileName); waveOutDevice.Init(audioFileReader); waveOutDevice.Play(); pauseButton.Enabled = true; }

将WAV文件转换为频谱图

嗨,我对这件事很新,所以请耐心等待。 我正在尝试将WAV文件转换为频谱图但不确定如何开始。 我读了一些关于读取PCM数据(我认为是我的WAV文件)并将其存储在WavReader类中的数组中的内容,然后对其应用FFT并将其转换为GUI。 我目前正在使用Naudio来实现这一点,但找不到任何显示如何将WAV文件转换为频谱图的内容。 谢谢 编辑:我发现有关使用Naudio将PCM转换为FFT并且我卡住了。 using (var reader = new AudioFileReader(“test1.wav”)) { // test1.wav is my file to process // test0.wav is my temp file IWaveProvider stream16 = new WaveFloatTo16Provider(reader); using (WaveFileWriter converted = new WaveFileWriter(“test0.wav”, stream16.WaveFormat)) { // buffer length needs to be a power of 2 for FFT to work nicely // […]

如何将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?

录制某个应用程序的声音

我想知道有没有办法记录某个应用程序的声音? 我搜索了一段时间,但没有找到一些有用的信息。 所以现在我正在使用NAudio库来录制WASAPI环回和麦克风声音,将它们混合在一起并使用以下代码保存到mp3文件: Silence = new WaveOut(); Silence.Init(new SignalGenerator() { Gain = 0 }); Silence.Play(); SoundOut = new WasapiLoopbackCapture(); SoundOut.DataAvailable += SoundOut_DataAvailable; SoundOut.StartRecording(); SoundOutBuffer = new BufferedWaveProvider(SoundOut.WaveFormat); SoundIn = new WaveIn(); SoundIn.WaveFormat = SoundOut.WaveFormat; SoundIn.DataAvailable += SoundIn_DataAvailable; SoundIn.StartRecording(); SoundInBuffer = new BufferedWaveProvider(SoundIn.WaveFormat); List Sources = new List { SoundOutBuffer.ToSampleProvider(), SoundInBuffer.ToSampleProvider() }; Mixer = new MixingSampleProvider(Sources); […]

使用NAudio转换为WAV后使用SoundPlayer播放MP3

我想使用NET提供的System.Media.SoundPlayer机制播放从网上下载的MP3文件。 由于它适用于WAV格式,它需要支持例如NAudio库 – 我需要将MP3转换为WAV。 我想在内存中执行所有操作,因为我需要快速调用它,但我有问题。 下面我展示的代码按预期工作,但它与文件合作。 相反,我需要让它仅使用内存操作。 (1)工作,但涉及磁盘操作: public void Speak(Uri mp3FileUri) { using (var client = new WebClient()) { using (var networkStream = client.OpenRead(mp3FileUri)) { if (networkStream != null) { var temp = Path.GetTempPath(); var mp3File = Path.Combine(temp, “file.mp3”); var wavFile = Path.Combine(temp, “file.wav”); using (var fileStream = File.Create(mp3File)) { networkStream.CopyTo(fileStream); } using (var […]

如何获得MIDI事件的准确时间

我正在尝试读取一个MIDI文件,我想在C#中确定它的NoteOn事件的确切时间。 我试图使用绝对时间,但输出类似于256632。 这个号码是多少? 这是我的代码行返回时间: (note as NoteOnEvent).AbsoluteTime

使用naudio播放.wav文件,播放在1秒后停止

我在C#中使用naudio lib并想播放一个简单的文件。 问题是,播放在1秒后停止。 我无法弄清楚它为什么这样做。 using System; using System.Collections.Generic; using System.Linq; using System.Text; using NAudio.Wave; namespace NAudioTest { class Program { static IWavePlayer waveout; static WaveStream outputStream; static string filename = null; static void Main(string[] args) { waveout = new WaveOut(); filename = “C:\\1.wav”; outputStream = CreateInputStream(filename); try { waveout.Init(outputStream); } catch (Exception ex) { Console.WriteLine(“Error […]