3

NAudio ライブラリを使用してオーディオを WAV ファイルに録音しています。サンプル データが到着したときに、ProgressBar をオーディオ レベル/ボリュームの値に更新できるようにしたいと考えています。

public WaveIn Recorder_NAudio;
public WaveFileWriter Writer_NAudio;

public void record()
{
        Recorder_NAudio = new WaveIn();
                Recorder_NAudio.WaveFormat = new NAudio.Wave.WaveFormat(sampleRate, 1);
                Writer_NAudio = new WaveFileWriter(File.Open(tempPath, FileMode.Create), Recorder_NAudio.WaveFormat);

                Recorder_NAudio.DataAvailable += new EventHandler<WaveInEventArgs>(Recorder2_DataAvailable);
                Recorder_NAudio.StartRecording();
}

void Recorder2_DataAvailable(object sender, WaveInEventArgs e)
{
     if (Writer_NAudio != null) if (Writer_NAudio.CanWrite)
     {
         Writer_NAudio.WriteData(e.Buffer, 0, e.BytesRecorded);

         // I need help to create this function
         ProgressBar1.value = GetVolumeFromBytes(e.buffer);
     }
}
4

2 に答える 2

2

Windows フォームの例については、NAudioDemo ソース コードと、特にAudioPlaybackPanelを使用しMeteringSampleProviderてそのイベントをサブスクライブしStreamVolume、カスタム ボリューム メーター コントロール (NAudio に含まれる) のプロパティを設定するクラスを見てください。

WPF の例については、同様の手法を使用するvoicerecorder.codeplex.comを参照してください。ボリューム メータリングについては、この記事で説明されています。

于 2012-09-24T21:55:22.423 に答える
-1

私はあなたがコントロールしたいすべてを行うコントロールを書きました ここで見つけることができます.

NAudio で使用するには、デバイスを次のように定義するだけで十分です。

Private NAudio.CoreAudioApi.MMDevice device;

次に、いつでも次の値のオーディオ レベルの値を知っています。

主人 :

device.AudioMeterInformation.MasterPeakValue;

左 :

device.AudioMeterInformation.PeakValues[0];

右 :

device.AudioMeterInformation.PeakValues[1];
于 2012-11-03T10:02:42.390 に答える