# `FormatParser.Video`

A Video struct and functions.

The Video struct contains the fields format, width_px, height_px and nature.

## Supported Formats

- FLV (Flash Video)
- MP4 (MPEG-4 Part 14)
- AVI (Audio Video Interleave)
- WMV (Windows Media Video)
- MOV (QuickTime)
- WebM
- MKV (Matroska)

# `t`

```elixir
@type t() :: %FormatParser.Video{
  format: atom() | nil,
  height_px: integer() | nil,
  nature: atom(),
  width_px: integer() | nil
}
```

A struct representing a parsed video file.

## Fields

- `:format` - The video format as an atom (e.g., `:mp4`, `:mkv`, `:webm`)
- `:width_px` - The video width in pixels (if available)
- `:height_px` - The video height in pixels (if available)
- `:nature` - Always `:video` for video files

# `parse`

```elixir
@spec parse({:error, binary()} | binary() | any()) :: any()
```

Parses a video file or result.

- If given a tuple `{:error, file}` where `file` is a binary, attempts to parse the video file.
- If given a binary `file`, attempts to parse the video file.
- For any other input, returns the input as-is.

## Examples

    iex> {:ok, file} = File.read("priv/test.mp4")
    iex> result = FormatParser.Video.parse(file)
    iex> result.format
    :mp4
    iex> result.nature
    :video

    iex> FormatParser.Video.parse(%FormatParser.Image{})
    %FormatParser.Image{}

---

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