NAudio
ライブラリを使用して、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 形式である必要があり、使用可能な期間を再生できる必要があります。より多くのコンテンツが利用可能になるたびに、宛先ファイルを更新します。
静的 WAV ファイルで次のサンプル コード (NAudio を使用) を試しましたが、解決策が機能しません。
作成された結果の WAV ファイルが壊れています - 正しい形式ではありません。
using (WaveFileReader reader = new WaveFileReader(remoteWavFile)) { byte[] buffer = new byte[reader.Length]; int read = reader.Read(buffer, 0, buffer.Length); }
記録が進行中の場合、コードは「ファイルは別のアプリケーションによって使用されています」という例外をスローします。