# `FFix.Command.Input`
[🔗](https://github.com/akash-akya/ffix/blob/v0.1.0/lib/ffix/command/input.ex#L1)

One ffmpeg input declaration.

Accessing an input returns `FFix.Stream` references that can be used in graphs
or mapped directly to outputs. The access keys mirror common ffmpeg stream
selectors:

  * `input[:input]` maps the whole input, like `-map 0`
  * `input[:video]` maps/selects the first video stream class, like `0:v`
  * `input[:audio]` maps/selects the first audio stream class, like `0:a`
  * `input[audio: 1]` maps/selects a specific stream class index, like
    `0:a:1`
  * `input[raw: "s?"]` keeps an explicit ffmpeg selector escape hatch

## Examples

    src = FFix.Command.input("input.mp4", ss: "00:00:03")
    logo = FFix.Command.input("logo.png", loop: 1, framerate: 1)

    src[:input]
    src[:video]
    src[:audio]
    src[audio: 1]
    logo[:video]

# `option`

```elixir
@type option() :: {atom() | String.t(), term()}
```

# `source`

```elixir
@type source() ::
  String.t() | :stdin | {:pipe, non_neg_integer()} | {:url, String.t()}
```

# `t`

```elixir
@type t() :: %FFix.Command.Input{
  id: reference() | nil,
  options: [option()],
  source: source()
}
```

---

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