Tag: naudio

从麦克风实时播放音频。 C#

我期待创建一个应用程序,允许我从我的麦克风录制并通过其他电脑播放录音。 在这一点上,我只是希望它能在我自己的电脑上播放,所以我可以让它工作。 过去几个小时我一直在看NAudio,看起来它可以帮助我实现这个目标。 我只是想知道是否有其他人有这方面的经验,如果可能的话? 谢谢,斯图尔特

将wav文件存储在数组中

我需要一种快速方法来将wav文件的所有样本存储在一个数组中。 我目前正在通过播放音乐和存储示例提供程序中的值来解决此问题,但这不是很优雅。 从NAudio演示我有这个方法的Audioplayer类: private ISampleProvider CreateInputStream(string fileName) { if (fileName.EndsWith(“.wav”)) { fileStream = OpenWavStream(fileName); } throw new InvalidOperationException(“Unsupported extension”); } var inputStream = new SampleChannel(fileStream, true); var sampleStream = new NotifyingSampleProvider(inputStream); SampleRate = sampleStream.WaveFormat.SampleRate; sampleStream.Sample += (s, e) => { aggregator.Add(e.Left); }; // at this point the aggregator gets the current sample value, while playing […]

NAudio WaveStream和多个频道

我有一个WaveStream,我可以读取WaveFormat以获得多个通道。 当我从WaveStream中读取时,我是否正在读取所有通道混合的第一个通道或数据? 我想做一个用户控件来显示WaveForm,但我不确定我的控件是否正确显示它。

使用Naudio或Win API同时播放多个.wav文件

大家好我有一个应用程序通过来自不同UDP端口的多个线程同时接收wav数据: 是否可以使用Wave Out API同时播放所有收到的wav数据? 是否可以使用NAudio同时播放所有收到的wav数据? NAudio对象线程安全吗? 同时播放我的意思是说媒体播放器中播放的文件和YouTube同时播放的内容同时您可以同时听到扬声器发出的声音: 任何帮助或提示将不胜感激。 提前致谢。

如何使用NAudio播放音频原始数据的字节数组?

byte[] bytes = new byte[1024]; 假设bytes是一个充满音频原始数据的数组。 如何使用WaveOut对象播放此字节数组? _waveOut.Init(bytes); // <- Error: cannot resolve method. _waveOut.Play();

从naudio.Wave.WaveIn到Stream?

我复制了这段代码,我不明白,但我知道它完成后它会做什么(输出 – sourceStream)… NAudio.Wave.WaveIn sourceStream = null; NAudio.Wave.DirectSoundOut waveOut = null; NAudio.Wave.WaveFileWriter waveWriter = null; sourceStream = new NAudio.Wave.WaveIn(); sourceStream.DeviceNumber = 2; sourceStream.WaveFormat = new NAudio.Wave.WaveFormat(16000, NAudio.Wave.WaveIn.GetCapabilities(2).Channels); NAudio.Wave.WaveInProvider waveIn = new NAudio.Wave.WaveInProvider(sourceStream); waveOut = new NAudio.Wave.DirectSoundOut(); waveOut.Init(waveIn); //sourceStream.DataAvailable. sourceStream.StartRecording(); waveOut.Play(); sourceStream.StopRecording(); 据我所知,此代码记录来自所选麦克风的声音并为其提供输出(sourceStream) 所以我需要的第一件事是 – >我如何从这段代码中获取流(喜欢而不是WaveIn a Stream [从WaveIn转换为Stream])? 请你们解释一下代码……我试过NAudio网站的解释,但我不明白 – >我是音频和流媒体的初学者……

NAudio – 没有FileOpenDialog从互联网播放MP3?

我注意到NAudio Demo中最新版本的NAudio,如果Filename为空,那么它会打开一个fileopendialog。 因此,如果我在该窗口中粘贴http链接并单击“确定”,我会注意到FileName字符串看起来像这样: “C:\ Users \ User \ AppData \ Local \ Microsoft \ Windows \ Temporary Internet Files \ Content.IE5 \ 2FO1NTK2 \ 20s [1] .mp3” 这究竟是怎么发生的? 我不想要一个OpenFileDialog,因为我想要播放的路径已经在其他地方说明了。 在我的情况下,我使用一个类似于“ http://domainname.com/file.mp3 ”的字符串 这会产生一个错误,指出不支持该URL。 所以我猜我在这里缺少一些东西? 编辑:插入PlayMp3FromUrl会在WaveOut中出现此错误: ‘NAudio.Wave.WaveOut’不包含一个带’3’参数的构造函数’这是在线“使用(WaveOut waveOut = new WaveOut(0,500,null))”我试图删除所有参数,离开它()),并编译。 但声音回放似乎开始一微秒或其他什么。 然后一切都冻结了。 我尝试了各种各样的论点,但似乎都没有。 我想这与参数有关?

高内存使用情况在按键上播放带有NAudio的MP3

我正在使用C#,WPF和NAudio 。 当按下某个键时,我在应用程序exe播放embedded资源mp3 。 如果反复按下某个键,RAM的使用量将继续超过400MB并且永不下降。 即使调用GC ,在对象上使用Flush()和Dispose()似乎也不会释放内存。 当我使用string路径而不是MemoryStream从硬盘驱动器上的external资源播放时,这种情况MemoryStream 。 它曾经保持大约50MB RAM。 public static MemoryStream ms = null; public static WaveStream wav = null; public static WaveOutEvent output = null; // Embedded Resource sound1.mp3 MemoryStream sound1 = new MemoryStream(Properties.Resources.sound1); // Key Press // if (e.Key == Key.Space) { ms = new MemoryStream(StreamToBytes(sound1)); wav = new Mp3FileReader(ms); […]

ACM Stream转换exception显示AcmNotPossible

当从服务器解压缩Mp3的帧时,在Mp3播放10到15秒时发生上述exception。我的应用程序是客户端/服务器应用程序。我通过编写Mp3数据包并通过网络流序列化来发送Mp3帧。我使用NAudio Open Source API来压缩和解压缩帧并播放Mp3.I使用Stack Trace获得以下exception。 NAudio.MmException.Try(MmResult结果,字符串函数) at NAudio.Wave.Compression.AcmStreamHeader.Convert(Int32 bytesToConvert,Int32&sourceBytesConverted) at NAudio.Wave.Compression.AcmStream.Convert(Int32 bytesToConvert,Int32&sourceBytesConverted) 在NAudio.Wave.AcmMp3FrameDecompressor.DecompressFrame(Mp3Frame帧,Byte [] dest,Int32 destOffset) 在Client.Audio.SoundPlayer.StreamMP3(对象状态)

NAudio – 无法设置线路控制静音值

我正在使用NAudio做一些任务: 找到“Stereo Mix”源代码行 通过启用任何线控制来取消静音“立体声混音”源线 通过禁用存在的任何行控件,使同一输入设备上的所有其他源行静音 我编写的程序可以执行任务1,但任务2和3失败。 具体来说,这段代码导致抛出ArgumentException: if( control.IsBoolean ) { BooleanMixerControl boolControl = (BooleanMixerControl)control; boolControl.Value = isMuted; set = true; if( boolControl.Value != isMuted ) throw new ArgumentException(“Could not set line muted value.”); } 这是我用来执行这些任务的静态类。 它依赖于当前版本的NAudio: public static class RecordSourceManager { public static Boolean GetMicrophoneMuted(String deviceName) { Mixer mixer = GetMixer( deviceName ); if( […]