我对 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 我正在使用 NAudio (1.7) 的最新版本。