# `Exmpeg.MediaInfo`
[🔗](https://github.com/rubas/exmpeg/blob/v0.3.0/lib/exmpeg/media_info.ex#L1)

Top-level result of `Exmpeg.probe/1`.

Mirrors what `ffprobe -show_format -show_streams` would print: a
container-level summary plus a list of `Exmpeg.Stream` entries. Both
shapes are stable across releases; new fields will only be added.

# `format`

```elixir
@type format() :: %{
  name: String.t(),
  long_name: String.t() | nil,
  duration_s: float() | nil,
  bit_rate: integer(),
  start_time_s: float() | nil,
  nb_streams: non_neg_integer(),
  tags: %{optional(String.t()) =&gt; String.t()}
}
```

# `t`

```elixir
@type t() :: %Exmpeg.MediaInfo{format: format(), streams: [Exmpeg.Stream.t()]}
```

# `all`

```elixir
@spec all(t(), Exmpeg.Stream.kind()) :: [Exmpeg.Stream.t()]
```

Convenience: list every stream matching `kind`.

# `first`

```elixir
@spec first(t(), Exmpeg.Stream.kind()) :: Exmpeg.Stream.t() | nil
```

Convenience: return the first stream matching `kind`, or `nil`.

    iex> Exmpeg.MediaInfo.first(info, :video)
    %Exmpeg.Stream{kind: :video, ...}

---

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