我有MediaFoundationEncodern音讯1.7 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之后,文件大小仍在继续增长。文件中的时间线是正确的,写入文件垃圾字节。
P.S.我使用NAudio的最新版本(1.7)。
有几件事要尝试:1.运行WPF演示应用程序来枚举MF编码器和解码器,并检查是否确实有AAC编码器。 2.尝试使用“.mp4”文件扩展名。 –
感谢Mark的帮助,你是对的,问题出在MF编码器上,我在Windows 8上成功运行上面的代码。但文件大小增长的问题仍然存在。你能帮助解决这个问题吗? –