# `Membrane.CameraCapture`
[🔗](https://github.com/membraneframework/membrane_camera_capture_plugin/blob/v0.8.0/lib/membrane_camera_capture.ex#L1)

Membrane Source Element for capturing image from a camera through FFmpeg

## Element options

Passed via struct `t:Membrane.CameraCapture.t/0`

- `device`  

  ```
  String.t()
  ```
  
  Default value: `"default"`  
  Name of the device used to capture video

- `framerate`  

  ```
  non_neg_integer()
  ```
  
  Default value: `30`  
  Framerate of device's output video stream

- `pixel_format`  

  ```
  String.t()
  ```
  
  Default value: `"nv12"`  
  Pixel format requested from the device.
  Must be one of: nv12, nv21, rgb24, rgba, yuv420p, yuv422p, yuv444p, yuyv422.

- `video_size`  

  ```
  {pos_integer(), pos_integer()} | nil
  ```
  
  Default value: `nil`  
  Size of a video stream requested from the device, e.g. `{1920, 1080}`.
  If set to `nil`, the device's default size is used.

## Pads

### `:output`

Accepted formats:
```
_any
```

Direction: | `:output`
Availability: | `:always`
Flow control: | `:push`

# `t`

```elixir
@type t() :: %Membrane.CameraCapture{
  device: String.t(),
  framerate: non_neg_integer(),
  pixel_format: String.t(),
  video_size: {pos_integer(), pos_integer()} | nil
}
```

Struct containing options for `Membrane.CameraCapture`

# `options`

```elixir
@spec options() :: keyword()
```

Returns description of options available for this module

---

*Consult [api-reference.md](api-reference.md) for complete listing*
