标签: naudio

在NAudio中枚举录制设备

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

c# naudio

8
推荐指数
1
解决办法
2万
查看次数

记录来自NAudio WaveIn的输入,并输出到NAudio WaveOut

我希望能够通过NAudio.WaveIn从麦克风设备获取输入,然后通过NAudio.WaveOut将精确输入输出到输出设备.

我该怎么做?

c# naudio

8
推荐指数
2
解决办法
2万
查看次数

从WaveStream中读取2通道样本到阵列的最简单方法

我一直在努力解决这个问题很长一段时间,我找不到一个有效的解决方案.

我有一个wav文件(16位PCM:44kHz 2通道),我想为两个通道中的每一个提取两个数组的样本.据我所知,NAudio库中不存在直接的方法,所以我尝试运行以下代码来读取一些隔行扫描的样本,但缓冲区数组保持为空(只是一堆零):

using (WaveFileReader pcm = new WaveFileReader(@"file.wav"))
{
    byte[] buffer = new byte[10000];
    using (WaveStream aligned = new BlockAlignReductionStream(pcm))
    {
        aligned.Read(buffer, 0, 10000);
    }
}
Run Code Online (Sandbox Code Playgroud)

任何有关这方面的帮助将非常感激.

c# naudio

8
推荐指数
1
解决办法
5221
查看次数

如何在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;            
}
Run Code Online (Sandbox Code Playgroud)

c# naudio

8
推荐指数
2
解决办法
8141
查看次数

NAudio错误:"NoDriver调用acmFormatSuggest"

我有一个使用NAudio从mp3转换为wav的项目.(使用WaveFormatConversionStream.CreatePcmStream()方法)

它在我的开发机器上工作正常,但现在我正在一个新的服务器上尝试它并抛出这个错误:

NAudio.MmException:NoDriver
在NAudio.WmException.Try(MmResult结果,字符串函数)
上调用acmFormatSuggest ,
位于NAudio.Wave.Wave.WaveFormatConversionStream.CreatePcmStream(WaveStream sourceStream )的NAudio.Wave.Compression.AcmStream.SuggestPcmFormat(WaveFormat compressedFormat )

我假设NAudio需要一些不在新服务器上的依赖.它是什么,我应该从哪里安装它?

Server是一个刚孵化的Amazon EC2 Windows 2008 32位实例,安装了"Web服务器"和"app server"角色.

c# dependencies naudio

7
推荐指数
1
解决办法
7927
查看次数

使用NAudio更改wav文件(到16KHz和8bit)

我想用NAudio将WAV文件更改为8KHz和8bit.

            WaveFormat format1 = new WaveFormat(8000, 8, 1);
            byte[] waveByte = HelperClass.ReadFully(File.OpenRead(wavFile));
            Wave
            using (WaveFileWriter writer = new WaveFileWriter(outputFile, format1))
            {
                writer.WriteData(waveByte, 0, waveByte.Length);
            }
Run Code Online (Sandbox Code Playgroud)

但是当我播放输出文件时,声音只是嘶嘶声.我的代码是正确的还是错的?

如果我将WaveFormat设置为WaveFormat(44100,16,1),它可以正常工作.

谢谢.

.net c# audio wav naudio

7
推荐指数
1
解决办法
2万
查看次数

NAudio频段强度

我有一个使用NAudio的音频播放器,我想为每个频段显示实时强度.

我为每个1024个样本块触发了一个事件:

public void Update(Complex[] fftResults)
{
   // ??
}
Run Code Online (Sandbox Code Playgroud)

我想要的是一组数字,表示每个频段的强度.让我们说我想将窗口划分为16个波段.

例如,当有更多低音频率时,它可能如下所示:

????????????????
????????????????
????????????????
????????????????
????????????????
????????????????
Run Code Online (Sandbox Code Playgroud)

如果可以使用该数据,我应该将什么放入该事件处理程序?

来自(Complex [])的数据已经通过FFT进行了转换.这是一个立体声流.

第一次尝试:

    double[] bandIntensity = new double[16] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };

    public void Update(Complex[] fftResults)
    {
        // using half fftResults because the others are just mirrored
        int band = 0;
        for (int n = 0; n < fftResults.Length/2; n++)
        {
            band = (int)((double)n / (fftResults.Length / …
Run Code Online (Sandbox Code Playgroud)

c# algorithm fft naudio

7
推荐指数
1
解决办法
3032
查看次数

构造WaveIn时出现NAudio InvalidOperationException

我是NAudio的新手,我正在尝试编写一个小程序,用于记录麦克风中的一些音频并将其写入Wave文件.当我在程序的Main函数中调用recordStuff()函数时,程序没有通过WaveIn对象的构造,并且程序死于InvalidOperationException,其中包含消息"使用WaveInEvent在后台线程上记录" .知道NAudio的人可能会告诉我这意味着什么吗?我试过在它自己的线程中调用recordStuff()函数,但我最终得到了相同的结果.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using NAudio.Wave;

namespace SimpleWave
{
    class Recorder
    {
        public Recorder()
        {
            writer = new WaveFileWriter("C:\\Users\\Paul\\Desktop\\yeah.wav", new NAudio.Wave.WaveFormat(44100, 1));
        }

        public static List<byte> buff = new List<byte>();
        public static WaveFileWriter writer;

        public void recordStuff()
        {
            // WaveIn Streams for recording
            WaveIn waveInStream;

            waveInStream = new WaveIn();
            waveInStream.DeviceNumber = 0;
            waveInStream.WaveFormat = new WaveFormat(44100, 2);
            writer = new WaveFileWriter(@"C:\Users\Paul\Desktop\this.wav", waveInStream.WaveFormat);

            waveInStream.DataAvailable += new EventHandler<WaveInEventArgs>(waveInStream_DataAvailable);
            waveInStream.StartRecording();
        }

        public void waveInStream_DataAvailable(object sender, WaveInEventArgs e) …
Run Code Online (Sandbox Code Playgroud)

.net c# audio audio-recording naudio

7
推荐指数
1
解决办法
5464
查看次数

如何在不使用NAudio和.NET重新编码的情况下检测静音并剪切mp3文件

我一直在寻找答案,我只能找到一些零碎的东西.我想要做的是加载多个mp3文件(暂时合并它们),然后使用静音检测将它们分割成碎片.

我的理解是我可以使用Mp3FileReader,但问题是:1.如何从mp3文件中读出20秒的音频?我是否需要阅读20次阅读器.WaveFormat.AverageBytesPerSecond?或者可能继续阅读框架,直到Mp3Frame.SampleCount/Mp3Frame.SampleRate的总和超过20秒?2.我如何真正发现沉默?我会查看相应数量的连续样本,以检查它们是否都低于某个阈值.但是我如何访问样本,无论它们是8位还是16位,单声道还是立体声等?我可以直接解码MP3帧吗?3.在示例10465处检测到静音后,如何将其映射回mp3帧索引以执行切割而无需重新编码?

naudio

7
推荐指数
1
解决办法
2515
查看次数

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

byte[] bytes = new byte[1024];
Run Code Online (Sandbox Code Playgroud)

假设bytes是一个充满音频原始数据的数组.

如何使用WaveOut对象播放此字节数组?

_waveOut.Init(bytes); // <- Error: cannot resolve method.
_waveOut.Play();
Run Code Online (Sandbox Code Playgroud)

.net c# audio naudio

7
推荐指数
2
解决办法
9880
查看次数

标签 统计

naudio ×10

c# ×9

.net ×3

audio ×3

algorithm ×1

audio-recording ×1

dependencies ×1

fft ×1

wav ×1