static void Start(MainViewModel ViewModel, StartCmdOptions StartOptions)
{
ViewModel.Settings.IncludeCursor = StartOptions.Cursor;
ViewModel.Settings.Clicks.Display = StartOptions.Clicks;
ViewModel.Settings.Keystrokes.Display = StartOptions.Keys;
if (File.Exists(StartOptions.FileName))
{
WriteLine("Output File Already Exists");
return;
}
HandleVideoSource(ViewModel, StartOptions);
HandleVideoEncoder(ViewModel, StartOptions);
HandleAudioSource(ViewModel, StartOptions);
HandleWebcam(StartOptions);
ViewModel.Settings.Video.FrameRate = StartOptions.FrameRate;
ViewModel.Settings.Audio.Quality = StartOptions.AudioQuality;
ViewModel.Settings.Video.Quality = StartOptions.VideoQuality;
if (!ViewModel.RecordCommand.CanExecute(null))
{
WriteLine("Nothing to Record");
return;
}
if (StartOptions.Delay > 0)
{
Thread.Sleep(StartOptions.Delay);
}
if (!ViewModel.StartRecording(StartOptions.FileName))
{
return;
}
Task.Factory.StartNew(() =>
{
Loop(ViewModel, StartOptions);
ViewModel.StopRecording().Wait();
Application.Exit();
});
// MouseKeyHook requires a Window Handle to register
Application.Run(new ApplicationContext());
}