1
我有一個使用NAudio
庫的WAV格式的活動錄音。將活動錄製的Wav文件的內容複製並更新到新文件
private void RecordStart() {
try {
_sourceStream = new WaveIn {
DeviceNumber = _recordingInstance.InputDeviceIndex,
WaveFormat =
new WaveFormat(
44100,
WaveIn.GetCapabilities(_recordingInstance.InputDeviceIndex).Channels)
};
_sourceStream.DataAvailable += SourceStreamDataAvailable;
if (!Directory.Exists(_recordingInstance.AudioFilePath)) {
Directory.CreateDirectory(_recordingInstance.AudioFilePath);
}
WaveFileWriter _waveWriter = new WaveFileWriter(
_recordingInstance.AudioFilePath + _recordingInstance.AudioFileName,
_sourceStream.WaveFormat);
_sourceStream.StartRecording();
}
catch (Exception exception) {
Log.Error("Recording failes", exception);
}
}
private void SourceStreamDataAvailable(object sender, WaveInEventArgs e) {
if (_waveWriter == null) return;
_waveWriter.Write(e.Buffer, 0, e.BytesRecorded);
_waveWriter.Flush();
}
我想將最新的可用內容複製到另一個位置。複製的文件應該是WAV格式,並且應該能夠播放可用的持續時間。只要有更多內容可用,請更新目標文件。
我試過以下示例代碼(使用NAudio)與靜態WAV文件,但該解決方案無法正常工作。
生成的WAV文件被破壞 - 格式不正確。
using (WaveFileReader reader = new WaveFileReader(remoteWavFile)) { byte[] buffer = new byte[reader.Length]; int read = reader.Read(buffer, 0, buffer.Length); }
當正在進行錄製時,代碼會拋出一個異常「文件正在被另一個應用程序使用」。
你是什麼意思「解決方案不工作」?它是否編譯?它是否會拋出異常?它打你的狗嗎?請更詳細地描述問題。 – Corey
我正在嘗試將內容讀取到緩衝區,然後使用字節數組創建一個新文件。它複製了內容並創建了一個WAV文件。 但無法播放該文件。 – Sarin
因此,您的第二個代碼塊顯示您正在從波形文件中讀取數據,但它不會對該數據執行任何操作。寫入部分在哪裏? – Corey