MediaFoundationEncoder に問題があります
入力デバイス ファイルからAAC形式で録音する必要があるため、次のコードを記述します。
private Timer timer;
private static IWaveIn _waveIn;
private static IWaveProvider _provider;
public void StartRecorder()
{
_waveIn = new WaveInEvent
{
WaveFormat = new WaveFormat(8000, 1)
};
_provider = new WaveInProvider(_waveIn);
_waveIn.DataAvailable += OnDataAvailable;
_waveIn.StartRecording();
//for testing purpose write only first 5 seconds.
timer = new Timer(5000);
timer.Elapsed += (sender, args) => Stop();
timer.Start();
}
private void Stop()
{
timer.Stop();
_waveIn.StopRecording();
_waveIn.Dispose();
_waveIn = null;
var outputFilename = String.Format("D:\\{0:yyy-mm-dd HH-mm-ss}.aac", DateTime.Now);
MediaFoundationEncoder.EncodeToAac(_provider, outputFilename);
_provider = null;
}
また、MediaFoundationEncoder.EncodeToWma を使用しようとしましたが、記録を停止して _waveIn を破棄した後もファイル サイズが大きくなり続けました。ファイルのタイムラインは正しいです。何かがファイルのゴミ箱バイトに書き込みます。
PS Imは、NAudio(1.7)のlastetビルドを使用しています。