Skip to content

Instantly share code, notes, and snippets.

@techyian
Last active November 8, 2018 20:21
Show Gist options
  • Save techyian/49e32e029d51c0174d03b1a0fa80c4b4 to your computer and use it in GitHub Desktop.
Save techyian/49e32e029d51c0174d03b1a0fa80c4b4 to your computer and use it in GitHub Desktop.
public async Task PicAndVid()
{
using (var imgCaptureHandler = new ImageStreamCaptureHandler("/home/pi/images/", "jpg"))
using (var vidCaptureHandler = new VideoStreamCaptureHandler("/home/pi/videos/", "avi"))
using (var splitter = new MMALSplitterComponent(null))
using (var imgEncoder = new MMALImageEncoder(imgCaptureHandler, continuousCapture: true))
using (var vidEncoder = new MMALVideoEncoder(vidCaptureHandler))
using (var nullSink = new MMALNullSinkComponent())
{
cam.ConfigureCameraSettings();
// Create our component pipeline.
imgEncoder.ConfigureOutputPort(0, MMALEncoding.JPEG, MMALEncoding.I420, 90);
vidEncoder.ConfigureOutputPort(0, MMALEncoding.H264, MMALEncoding.I420, 0, 25000000);
cam.Camera.VideoPort.ConnectTo(splitter);
splitter.Outputs[0].ConnectTo(imgEncoder);
splitter.Outputs[1].ConnectTo(vidEncoder);
cam.Camera.PreviewPort.ConnectTo(nullSink);
// Camera warm up time
await Task.Delay(2000);
CancellationTokenSource cts = new CancellationTokenSource(TimeSpan.FromSeconds(15));
// Process for 15 seconds.
await cam.ProcessAsync(cam.Camera.VideoPort, cts.Token);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment