# MLVideoType

The video type describes video features.

## Creating the Type

The video type can be created with video information, or by inspecting a video file:

### From Video Info

```csharp
/// <summary>
/// Create an video feature type.
/// </summary>
/// <param name="width">Video width.</param>
/// <param name="height">Video height.</param>
/// <param name="frames">Video frame count.</param>
MLVideoType (int width, int height, int frames);
```

INCOMPLETE.

```csharp
/// <summary>
/// Create an video feature type.
/// </summary>
/// <param name="width">Video width.</param>
/// <param name="height">Video height.</param>
/// <param name="frames">Video frame count.</param>
/// <param name="type">Video frame data type.</param>
MLVideoType (int width, int height, int frames, Type type);
```

INCOMPLETE.

```csharp
/// <summary>
/// Create an video feature type.
/// </summary>
/// <param name="shape">Video feature shape.</param>
/// <param name="type">Video frame data type.</param>
/// <param name="name">Feature name.</param>
MLVideoType (int[] shape, Type type, string name = default);
```

### From a Video File

```csharp
/// <summary>
/// Get the video type for a video file at a given path.
/// </summary>
/// <param name="path">Video path.</param>
/// <returns>Corresponding video type or `null` if file is not a valid video file.</returns>
static MLVideoType FromFile (string path);
```

INCOMPLETE.

### From a [`VideoClip`](https://docs.unity3d.com/ScriptReference/Video.VideoClip.html)

```csharp
/// <summary>
/// Get the video type for a video clip.
/// Note that the frame count is merely an estimate based on the duration of the video.
/// </summary>
/// <param name-"clip">Video clip.</param>
/// <returns>Corresponding video type.</returns>
static MLVideoType FromVideoClip (VideoClip clip);
```

INCOMPLETE.

### From Streaming Assets

```csharp
/// <summary>
/// Get the video type for a video file in the `StreamingAssets` folder.
/// </summary>
/// <param name="relativePath">Relative path to video file in `StreamingAssets` folder.</param>
/// <returns>Corresponding video type or `null` if the file is not a valid video file.</returns>
static Task<MLVideoType> FromStreamingAssets (string relativePath);
```

INCOMPLETE.

## Inspecting the Type

```csharp
/// <summary>
/// Feature name.
/// </summary>
string name { get; }

/// <summary>
/// Feature data type.
/// This will typically be a numeric type.
/// </summary>
Type dataType { get; }
```

Refer to the [`MLFeatureType`](/unity/api/mlfeaturetype.md) class for more information.

## Inspecting the Video

The feature type reports information about the video it refers to:

### Video Width

```csharp
/// <summary>
/// Video width.
/// </summary>
int width { get; }
```

Refer to the [Image Width](/unity/api/mlfeaturetype/mlimagetype.md#image-width) section of the [`MLImageType`](/unity/api/mlfeaturetype/mlimagetype.md) class for more information.

### Video Height

```csharp
/// <summary>
/// Video height.
/// </summary>
int height { get; }
```

Refer to the [Image Height](/unity/api/mlfeaturetype/mlimagetype.md#image-height) section of the [`MLImageType`](/unity/api/mlfeaturetype/mlimagetype.md) class for more information.

### Video Channels

```csharp
/// <summary>
/// Video channels.
/// </summary>
int channels { get; }
```

Refer to the [Image Channels](/unity/api/mlfeaturetype/mlimagetype.md#image-channels) section of the [`MLImageType`](/unity/api/mlfeaturetype/mlimagetype.md) class for more information.

### Video Frames

```csharp
/// <summary>
/// Video frame count.
/// Note that this is almost always an approximate count.
/// </summary>
int frames { get; }
```

The video type reports the number of frames contained in the video.

{% hint style="warning" %}
Note that the frame count reported by the video type is always an estimate. To get an exact count, enumerate the [`MLVideoFeature`](/unity/api/mlfeature/mlvideofeature.md#enumerating-video-frames).
{% endhint %}

### Pixel Layout

```csharp
/// <summary>
/// Whether the image is interleaved or planar.
/// </summary>
bool interleaved { get; }
```

Refer to the [Pixel Layout](/unity/api/mlfeaturetype/mlimagetype.md#pixel-layout) section of the [MLImageType](/unity/api/mlfeaturetype/mlimagetype.md) class for more information.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.natml.ai/unity/api/mlfeaturetype/mlvideotype.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
