void Record() { try { Bitmap lastFrame = null; while (!_stopCapturing.WaitOne(0) && _continueCapturing.WaitOne()) { var frame = _imageProvider.Capture(); var delay = (int)_timing.Elapsed.TotalMilliseconds; _timing.Stop(); _timing.Start(); // delay is the time between this and next frame if (lastFrame != null) { _videoEncoder.WriteFrame(lastFrame, delay); } lastFrame = frame; } } catch (Exception E) { ErrorOccured?.Invoke(E); Dispose(true); } }
void Record() { try { var lastFrameWriteTime = DateTime.MinValue; while (!_stopCapturing.WaitOne(0) && _continueCapturing.WaitOne()) { var frame = _imageProvider.Capture(); var delay = lastFrameWriteTime == DateTime.MinValue ? 0 : (int)(DateTime.Now - lastFrameWriteTime).TotalMilliseconds; lastFrameWriteTime = DateTime.Now; _videoEncoder.WriteFrame(frame, delay); } } catch (Exception E) { ErrorOccured?.Invoke(E); Dispose(true); } }