# MLVideoFeature

INCOMPLETE.

## Creating the Feature

INCOMPLETE.

### From a Video File

```csharp
/// <summary>
/// Create an video feature from a video file.
/// </summary>
/// <param name="path">Video file path.</param>
MLVideoFeature (string path);
```

INCOMPLETE.

### From Streaming Assets

```csharp
/// <summary>
/// Create a video feature from a video file in the `StreamingAssets` folder.
/// </summary>
/// <param name="relativePath">Relative path to video file in `StreamingAssets` folder.</param>
/// <returns>Video feature or `null` if no valid video can be found at the relative path.</returns>
static Task<MLVideoFeature> FromStreamingAssets (string relativePath);
```

INCOMPLETE.

## Inspecting the Feature

INCOMPLETE

### Feature Type

```csharp
/// <summary>
/// Feature type.
/// </summary>
MLFeatureType type { get; }
```

Refer to the [Inspecting the Feature](/unity/api/mlfeature.md#inspecting-the-feature) section of the [`MLFeature`](/unity/api/mlfeature.md) class for more information.

{% hint style="info" %}
The `type` is always an [`MLVideoType`](/unity/api/mlfeaturetype/mlvideotype.md).
{% endhint %}

### Video Path

```csharp
/// <summary>
/// Video path.
/// </summary>
string path { get; }
```

The video feature provides the full path of its source video.

{% hint style="info" %}
The video path always refers to an accessible file on the local file system.
{% endhint %}

### Video Width

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

The video feature provides the width of its source video in pixels.

### Video Height

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

The video feature provides the height of its source video in pixels.

### Video Frame Count

```csharp
/// <summary>
/// Video frame count.
/// </summary>
int frames { get; }
```

The video feature provides the frame count of its source video.

{% hint style="warning" %}
Note that the reported frame count is merely an approximate count based on the average frame rate and duration of the source video. Enumerate the video to get an exact count.
{% endhint %}

## Handling Normalization

```csharp
/// <summary>
/// Normalization mean.
/// </summary>
Vector4 mean { get; set; }

/// <summary>
/// Normalization standard deviation.
/// </summary>
Vector4 std { get; set }
```

See the [Handling Normalization](/unity/api/mlfeature/mlimagefeature.md#handling-normalization) section of the [`MLImageFeature`](/unity/api/mlfeature/mlimagefeature.md) class for more information.

## Handling Aspect Mode

```csharp
/// <summary>
/// Aspect mode.
/// </summary>
MLImageFeature.AspectMode aspectMode { get; set; }
```

See the [Handling Aspect Mode](/unity/api/mlfeature/mlimagefeature.md#handling-aspect-mode) section of the [`MLImageFeature`](/unity/api/mlfeature/mlimagefeature.md) class for more information.

## Enumerating Video Frames

INCOMPLETE.

## Creating Cloud Features

```csharp
/// <summary>
/// Create a Cloud ML feature that is ready for prediction with Cloud ML models.
/// </summary>
/// <param name="featureType">Optional feature type used to create the Cloud ML feature.</param>
/// <returns>Cloud ML feature.</returns>
MLCloudFeature IMLCloudFeature.Create (in MLFeatureType featureType = default);
```

INCOMPLETE.


---

# 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/mlfeature/mlvideofeature.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.
