1
我試圖顯示錄製時間與NAudio庫使用C#窗口窗體Timer.This是Code我試圖實現的代碼。我有這個代碼的問題是,計時器的時間不符合長度錄音。我希望定時器的定時和錄製時間同步!如何在使用NAudio錄製時顯示錄製時間?
private void buttonStart_Click(object sender, EventArgs e)
{
buttonStart.Enabled = false;
buttonStop.Enabled = true;
waveSource = new WaveIn();
waveSource.WaveFormat = new WaveFormat(44100, 2);
waveSource.DataAvailable += new EventHandler<WaveInEventArgs>(waveSource_DataAvailable);
waveSource.RecordingStopped += new EventHandler<StoppedEventArgs>(waveSource_RecordingStopped);
waveFile = new WaveFileWriter(@"C:\one\Test0010.wav", waveSource.WaveFormat);
waveSource.StartRecording();
}
void waveSource_DataAvailable(object sender, WaveInEventArgs e)
{
if (waveFile != null)
{
timerSoundRecord.Start();
waveFile.Write(e.Buffer, 0, e.BytesRecorded);
waveFile.Flush();
var lenght = (int)(waveFile.Length/waveFile.WaveFormat.AverageBytesPerSecond);
if (lenght == 6)
{
timerSoundRecord.Stop();
waveSource.StopRecording();
buttonStop.Enabled = false;
buttonStart.Enabled = true;
}
}
}
private void timerSoundRecord_Tick(object sender, EventArgs e)
{
if (progressBarRecordSound.Value != 6)
{
seconds = seconds + 1;
labelTime.Text = @"00:0" + seconds;
progressBarRecordSound.Value++;
}
else
{
timerSoundRecord.Stop();
}
}
您可以使用秒錶添加任何示例嗎?以及如何使用時間跨度嘗試顯示標籤,但它不起作用!謝謝你 – bunny8989
我想你不需要秒錶,因爲你可以像使用waveSource_DataAvailable方法中的長度一樣獲得流逝的時間。我用新建議編輯了我的答案。 – Craveiro
但是我應該什麼時候開始計時?在StartRecording方法或Data_Available事件之前? – bunny8989