我目前只能用Accord.video录制一个mp4视频文件,用Accord.audio录制一个wav音频文件,然后用ffmpeg音视频合成,但是这样会导致音视频不同步,有没有Accord.net录制音视频文件的解决方案,求指导,急急急!
目前处理如下
视频
private void VideoStart()
{//开始录制时videoWriter打开MP4文件
videoSourcePlayer.VideoSource = videoDevice;
videoWriter = new Accord.Video.FFMPEG.VideoFileWriter();
videoSourcePlayer.Start();
videoWriter.Open(VideoPath, 640, 480); //可设置
}
private void videoSourcePlayer_NewFrameReceived(object sender, Accord.Video.NewFrameEventArgs args)
{//录制过程实时写道文件里
DateTime now = DateTime.Now;
Graphics g = Graphics.FromImage(args.Frame);
videoWriter.WriteVideoFrame(args.Frame);
// paint current time
SolidBrush brush = new SolidBrush(Color.Red);
g.DrawString(now.ToString(), this.Font, brush, new PointF(5, 5));
brush.Dispose();
g.Dispose();
}
音频
private void AudioStop()
{//录制时音频存到一内存中,结束时写道wav文件,这是按照accord的demo来的
source.SignalToStop();
source.WaitForStop();
Stream fileStream = new FileStream(AudioPath, FileMode.OpenOrCreate);
//VideoPath;
stream.WriteTo(fileStream);
fileStream.Close();
stream.Dispose();
}
ffmpeg音视频合成命令
ffmpeg -i "audio2.wav" -y "audio3.wav"
ffmpeg -i video2.flv -i audio3.wav -vcodec copy -acodec copy out1.flv