public async Task TakeVideoAsync(string filePath) { try { // Singleton initialized lazily. Reference once in your application. MMALCamera cam = this.MMALSharpCameraInstance; // using (var vidCaptureHandler = new VideoStreamCaptureHandler("/home/pi/videos/", "avi")) using (var vidCaptureHandler = new VideoStreamCaptureHandler(filePath)) { var cts = new CancellationTokenSource(TimeSpan.FromSeconds(30)); var split = new Split { Mode = TimelapseMode.Second, Value = 15, }; await cam.TakeVideo(vidCaptureHandler, cts.Token, split); } // Cleanup disposes all unmanaged resources and unloads Broadcom library. To be called when no more processing is to be done // on the camera. // cam.Cleanup(); Console.WriteLine($"Wrote video to: {filePath}"); } catch (Exception ex) { Console.WriteLine($"{nameof(MMALSharpCamera)} {nameof(TakeVideoAsync)} Failed"); Console.WriteLine($"{nameof(MMALSharpCamera)} {nameof(TakeVideoAsync)} {ex.ToString()}"); Console.WriteLine($"{nameof(MMALSharpCamera)} {nameof(TakeVideoAsync)} Failed"); } }
public static async Task TakeVideoAsync() { MMALCameraConfig.VideoResolution = new Resolution(640, 480); MMALCameraConfig.Flips = MMAL_PARAM_MIRROR_T.MMAL_PARAM_MIRROR_VERTICAL; MMALCameraConfig.InlineHeaders = true; MMALCameraConfig.VideoProfile = MMAL_VIDEO_PROFILE_T.MMAL_VIDEO_PROFILE_H264_HIGH; // Singleton initialized lazily. Reference once in your application. MMALCamera cam = MMALCamera.Instance; using (var vidCaptureHandler = new VideoStreamCaptureHandler("/home/pi/videos/", "avi")) { var cts = new CancellationTokenSource(TimeSpan.FromSeconds(10)); await cam.TakeVideo(vidCaptureHandler, cts.Token); } // Cleanup disposes all unmanaged resources and unloads Broadcom library. To be called when no more processing is to be done // on the camera. cam.Cleanup(); }