# Video Labeling Editor

Ango Hub provides a labeling editor with which video files can be annotated.

{% hint style="info" %}
This article will exclusively go over Ango Hub’s video labeling interface. Features common to all labeling editors are instead [explained here](https://docs.imerit.net/labeling/labeling-editor-interface).
{% endhint %}

<figure><img src="https://3895963154-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FTcOUG6rfWxqGM0N4db2P%2Fuploads%2FqPuujFrWVAT7niKFeri0%2Floreshot-20251029-103327%402x.png?alt=media&#x26;token=0918d2aa-f8dd-4550-8d2d-e626becd1b5c" alt=""><figcaption></figcaption></figure>

## Overview <a href="#image-interface-elements" id="image-interface-elements"></a>

### Supported File Types

The video labeling editor supports video assets with the following file extensions:&#x20;

* .mp4
* .webm
* .mov
* .mkv

### Supported Labeling Tools

The video labeling editor supports following labeling tools:&#x20;

**Tools**

* Bounding Box
* Rotated Bounding Box
* Polygon
* Polyline
* Segmentation
* Point
* Circle

**Classifications**

* Radio
* Checkbox
* Single-Select Dropdown
* Multi-Select Dropdown
* Single-Select Tree
* Multi-Select Tree
* Text

**Relations**

* Single Relation
* Group Relation

### Playback Bar <a href="#zoom-buttons" id="zoom-buttons"></a>

<figure><img src="https://3895963154-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FTcOUG6rfWxqGM0N4db2P%2Fuploads%2FrGdQcep2XgmyGUQwtGRe%2Fimage.png?alt=media&#x26;token=c5599289-9543-4605-92b8-7a8f97e6bbf9" alt=""><figcaption></figcaption></figure>

The back and forward arrows allow you to move backwards and forwards one frame at a time, or to the beginning/end of the video. The Play ![](https://3895963154-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FTcOUG6rfWxqGM0N4db2P%2Fuploads%2FtTM9ElPNkql7qLIEo0S5%2Fimage.png?alt=media\&token=b3fe5c81-e20e-4de8-bfdd-3307cdf62c37) button starts and stops playback. The slider allows you to move between frames by clicking on the playhead and dragging it to find the frame you need.

{% hint style="info" %}
When dragging with the slider, the frame selected will only be loaded when you release the left mouse button.
{% endhint %}

You may also navigate to a specific frame by typing its number and pressing Enter or clicking outside of the text field:

<figure><img src="https://3895963154-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FTcOUG6rfWxqGM0N4db2P%2Fuploads%2Fe32gxfujFU5kQRHSeEZF%2Fimage.png?alt=media&#x26;token=1f3ad37c-c994-4a15-83fe-4c5337493c81" alt="" width="114"><figcaption></figcaption></figure>

The volume button allows you to change the volume of the audio when playing the file back. The "1x" button allows you to change the playback speed.

To the right, there is a three-dot menu. The menu options are:

* **Default Segment Length**: When you create a new annotation, Ango Hub will have it automatically persist for the remainder of the video. You can change this default duration here.

#### Videos with Variable Frame Rate <a href="#buffering" id="buffering"></a>

{% hint style="danger" %}
While Ango Hub will let you import and open videos with variable frame rate, and will attempt best-effort to determine how to display the segment timeline, **frame-level annotation on Variable Frame Rate (VFR) videos is not supported**. As such, the Ango Hub team can not and does not take responsibility for the accuracy of frame-level annotations created on VFR videos.
{% endhint %}

In videos with variable frame rate (VFR), the following warning is displayed:

<figure><img src="https://3895963154-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FTcOUG6rfWxqGM0N4db2P%2Fuploads%2Ffb3hloaz2scSEILFrNts%2Floreshot-20260407-093315%402x.png?alt=media&#x26;token=650e70b4-b472-4f6b-94c0-e64a1434bfff" alt="" width="375"><figcaption></figcaption></figure>

#### Buffering <a href="#buffering" id="buffering"></a>

Ango Hub does not load the entire video in memory right from the start, as that would be computationally expensive, delay loading, and would use unnecessary memory. Instead, Hub loads it chunk by chunk, buffering it.

You can see how much of the video has been downloaded (buffered) by looking at the playback bar as below:

<figure><img src="https://3895963154-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FTcOUG6rfWxqGM0N4db2P%2Fuploads%2Fr8P69kB1YtpNX3vd7yL9%2Fimage.png?alt=media&#x26;token=38a52bc4-c759-47e4-96ee-a8c26721554a" alt=""><figcaption></figcaption></figure>

If your download speed is not sufficiently high to smoothly play the video, a warning will appear:

<figure><img src="https://3895963154-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FTcOUG6rfWxqGM0N4db2P%2Fuploads%2FB623Pb2SkOn6Gasiy3a1%2Fimage.png?alt=media&#x26;token=effd9d54-50a8-4598-a39b-851e2dbcb579" alt="" width="563"><figcaption></figcaption></figure>

There is also a three-dot menu. Clicking it will make the following options appear:

<figure><img src="https://3895963154-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FTcOUG6rfWxqGM0N4db2P%2Fuploads%2FMh8508gFpsVUwqZMp3pA%2Fimage.png?alt=media&#x26;token=64785da5-01db-4928-a823-391d84062242" alt="" width="374"><figcaption></figcaption></figure>

**Annotation length** determines the default segment length when creating an annotation on the video.

**Frame skip** lets you customize how many frames to jump back/forth when using the Shift + C/Z keyboard shortcuts.

### Timeline <a href="#how-to-annotate-images" id="how-to-annotate-images"></a>

The timeline view allows you to see the annotations throughout the video in a visual way.

<figure><img src="https://3895963154-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FTcOUG6rfWxqGM0N4db2P%2Fuploads%2FFYeHMTKSIAcCZ1IbALsV%2Fimage.png?alt=media&#x26;token=38390353-f122-4aa1-81d1-ba228fecace6" alt=""><figcaption></figcaption></figure>

When you create a new annotation, a new row will be added to the timeline view. You can click on the row to select its annotation, or click on the annotation to select its row:

<figure><img src="https://3895963154-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FTcOUG6rfWxqGM0N4db2P%2Fuploads%2Frm6T0SBY25Bn0n6zLP4D%2FKapture%202025-02-24%20at%2015.46.08.gif?alt=media&#x26;token=f2479dc2-a14c-492a-8808-b4e1ed1aadc2" alt=""><figcaption></figcaption></figure>

Objects belonging to the same class are automatically grouped and collapsed. To see each object, click on the arrow:

<figure><img src="https://3895963154-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FTcOUG6rfWxqGM0N4db2P%2Fuploads%2Fh1Sb7VzP0tvQ1s0rqFVJ%2FKapture%202025-02-24%20at%2015.57.12.gif?alt=media&#x26;token=874d3855-98f9-4b62-a903-3c16da8fb11e" alt="" width="514"><figcaption></figcaption></figure>

Next to each object's class name, the first few characters of its unique Object ID will be visible. Hover over the characters to display and be able to copy to your clipboard the object's ID:

<figure><img src="https://3895963154-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FTcOUG6rfWxqGM0N4db2P%2Fuploads%2FTCiwybqbapA10e6NhiWs%2Fimage.png?alt=media&#x26;token=ef53d586-6ff8-46e6-b916-3205e0ff2376" alt="" width="375"><figcaption></figcaption></figure>

You can change each object row's order in the timeline by dragging and dropping it using its handle:

<figure><img src="https://3895963154-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FTcOUG6rfWxqGM0N4db2P%2Fuploads%2FLpcKDRxXwtRKyiHYJ4my%2Fvideo-reorder.gif?alt=media&#x26;token=9cfa82d9-1ff4-4f76-a5ef-4fb9dec5e71b" alt="" width="375"><figcaption></figcaption></figure>

#### Adding a keyframe <a href="#how-to-annotate-images" id="how-to-annotate-images"></a>

When you move the object, or change the answer in a frame-specific classification, a keyframe is added to the row, indicated by a white rhombus on the line:

<figure><img src="https://3895963154-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FTcOUG6rfWxqGM0N4db2P%2Fuploads%2F8D6D6qgGHWS5vPU9EqrI%2FKapture%202025-02-24%20at%2015.59.12.gif?alt=media&#x26;token=4237899f-6151-41db-9dc7-3e7b2cb802f2" alt=""><figcaption></figcaption></figure>

You may also add a keyframe without editing the object, by clicking on the segment, to the frame where you would like to add the frame, and then on the "Add Keyframe" button <img src="https://3895963154-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FTcOUG6rfWxqGM0N4db2P%2Fuploads%2FguJlWwLkTraUNZsXXRvC%2Fimage.png?alt=media&#x26;token=dfb144b7-e70f-4478-b4dc-6ae025722491" alt="" data-size="line">.

#### Removing a keyframe <a href="#how-to-annotate-images" id="how-to-annotate-images"></a>

To remove the keyframe, navigate to the frame where the keyframe is located, and click on the row or the annotation of which you'd like to delete the keyframe. A *Remove Keyframe* button will appear. Click on it to remove the keyframe:

<figure><img src="https://3895963154-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FTcOUG6rfWxqGM0N4db2P%2Fuploads%2FE1bZprhdJXkOm8HWXCWb%2Fimage.png?alt=media&#x26;token=b1a408ed-41b9-4a67-901b-c3f74edaa9f3" alt=""><figcaption></figcaption></figure>

#### Stopping an object or classification from appearing <a href="#how-to-annotate-images" id="how-to-annotate-images"></a>

**Manually**

You can mark a certain annotation as being "out of view". To do so, navigate to the frame where the annotation has gone out of view, click on the "Set as start of out of view" button.

<figure><img src="https://3895963154-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FTcOUG6rfWxqGM0N4db2P%2Fuploads%2FI4c0X248qqCbnYPVBVih%2Fimage.png?alt=media&#x26;token=18342d98-5939-4aff-8a8f-2b04944fe315" alt=""><figcaption></figcaption></figure>

To bring the annotation back, navigate to the last frame where the annotation is not in view, click on the segment you wish to bring back, then click on "Set as end of out of view":

<figure><img src="https://3895963154-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FTcOUG6rfWxqGM0N4db2P%2Fuploads%2FB0gvl4z3ZmSQ78qPscj1%2Fimage.png?alt=media&#x26;token=65c6f9b3-1867-4c0a-9475-b98304d1c61e" alt=""><figcaption></figcaption></figure>

Please note that when you mark an annotation out of view, while you cannot see it on the asset anymore, and it does not appear in the "Objects" list, you can still interact with it (for example to delete it, or mark it back in view) by right-clicking on the annotation segment in the timeline.

And even though nested classifications for out-of-view objects do not appear in the "Objects" view, they will appear in the final export, and in the context menu that opens when its segment is right-clicked.

<figure><img src="https://3895963154-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FTcOUG6rfWxqGM0N4db2P%2Fuploads%2FQuClPRLjRGgrHFeN30Y1%2Fimage.png?alt=media&#x26;token=4ad56f61-ac43-457c-aa52-789de8198e1e" alt=""><figcaption></figcaption></figure>

**By marking the start and end of the out of view segment**

1. Navigate to the frame where you'd like the out of view segment to start.
2. Click on the annotation you'd like to mark as out of view.
3. Click on the <img src="https://3895963154-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FTcOUG6rfWxqGM0N4db2P%2Fuploads%2Fc76QotFSWfON0hOMs741%2Floreshot-20251216-143529%402x.png?alt=media&#x26;token=5da52a79-8b22-4d2a-bb9f-d5b9c8c5d88c" alt="" data-size="line"> icon to start the out of view segment.
4. Navigate to frame where you'd like for your out of view segment to end.
5. Click again on the same button. All frames in that annotation in the interval will be marked as out of view.

#### Making annotations appear for shorter/longer <a href="#how-to-annotate-images" id="how-to-annotate-images"></a>

There are two ways.

The first way is to click and drag on the handles on the left/right side of the segment to shrink/extend the annotation duration:

<figure><img src="https://3895963154-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FTcOUG6rfWxqGM0N4db2P%2Fuploads%2F7KWGEzOYkZD6aZpg1WUz%2FKapture%202025-02-24%20at%2016.14.25.gif?alt=media&#x26;token=8b0662d1-d9c2-4f4a-8075-2a0a3fefca72" alt=""><figcaption></figcaption></figure>

The second way is to click on the segment, then to navigate to the frame where you'd like the segment to start or end, and click on the "Set Annotation Start" (or "Set Annotation End") button:

<figure><img src="https://3895963154-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FTcOUG6rfWxqGM0N4db2P%2Fuploads%2F7uJZGVveNVQzT2jTQh5m%2Fimage.png?alt=media&#x26;token=8da70fec-3d20-4ceb-9d3c-6b021009201e" alt="" width="303"><figcaption></figcaption></figure>

#### Giving Annotations Names <a href="#how-to-annotate-images" id="how-to-annotate-images"></a>

You may give each annotation its own name by clicking on it and pressing "D" on your keyboard. Alternatively, you may right-click on it, click on the three-dot menu, and click on "Update Description".

<figure><img src="https://3895963154-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FTcOUG6rfWxqGM0N4db2P%2Fuploads%2FSqYslZ1MrCv3zxSnRXd5%2Fimage.png?alt=media&#x26;token=0065e712-94db-4a42-ab1e-7221fcb1a984" alt=""><figcaption></figcaption></figure>

Once you update an annotation's description, it will appear on the timeline:

<figure><img src="https://3895963154-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FTcOUG6rfWxqGM0N4db2P%2Fuploads%2FTpITFlgxAiIBN7J3PWMA%2Fimage.png?alt=media&#x26;token=049e7a41-55b7-4aa9-a2ac-277654c5a876" alt="" width="375"><figcaption></figcaption></figure>

#### Split and Merge Segments <a href="#how-to-annotate-images" id="how-to-annotate-images"></a>

To split a segment into two separate segments, navigate to the frame where you'd like the segments to split and click on the "Split" button that appears:

<figure><img src="https://3895963154-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FTcOUG6rfWxqGM0N4db2P%2Fuploads%2F3Jt001lxFWlAvCR8oglt%2FKapture%202025-03-06%20at%2013.28.35.gif?alt=media&#x26;token=ed2467c5-79b1-4cfd-949c-fda6beb54332" alt=""><figcaption></figcaption></figure>

To merge two segments, click on the first segment, then Shift + click on the second segment. Then, click on the "Merge" button that appears.

#### Removing Segment Keyframes over an Interval <a href="#how-to-annotate-images" id="how-to-annotate-images"></a>

When a segment is selected, hovering over the <img src="https://3895963154-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FTcOUG6rfWxqGM0N4db2P%2Fuploads%2FqRaJWuxKvjucLeVXaLJM%2Fimage.png?alt=media&#x26;token=5a8b1e6a-d016-43e8-9d62-7cb4c7d5836c" alt="" data-size="line"> icon will cause this dialog to appear:

<figure><img src="https://3895963154-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FTcOUG6rfWxqGM0N4db2P%2Fuploads%2FGh4UnghY8akvf9E5WJvm%2Fimage.png?alt=media&#x26;token=f1477f00-ccd9-44c4-af76-616887eebee3" alt="" width="563"><figcaption></figcaption></figure>

Pick the frame interval where you would like to remove the keyframes in the selected segment and click on "Remove".

## How to Annotate Videos <a href="#how-to-annotate-images" id="how-to-annotate-images"></a>

The following are the labeling tools supported on videos:

* [Bounding Box](https://docs.imerit.net/labeling/labeling-tools/tools/bounding-box)
* [Polygon](https://docs.imerit.net/labeling/labeling-tools/tools/polygon)
* [Polyline](https://docs.imerit.net/labeling/labeling-tools/tools/polyline)
* [Segmentation](https://docs.imerit.net/labeling/labeling-tools/tools/segmentation)
* [Point](https://docs.imerit.net/labeling/labeling-tools/tools/point)
* [Entity](https://docs.imerit.net/labeling/labeling-tools/tools/entity) (only in Waveform View)

From the *Tools* panel on the left sidebar, select a supported labeling tool. Then, follow the instructions found on each tool's docs page, linked to above.

If no tools are present in the project, only answer the questions in the *Classifications* panel.

### Labeling Properties Specific to Videos

#### Frame Interpolation

Between keyframes, objects are automatically linearly interpolated. So for example, if you create a keyframe on frame 1 for an object on the top-left corner of the video, and in frame 100 of the same object being in the bottom-right corner of the video, Ango Hub will automatically fill in the contents of frames between 1-100 with interpolation, having the object smoothly move from one corner to the next.

{% hint style="info" %}
Interpolation is currently only available for the Bounding Box, Polygon, Segmentation, and Point labeling tools.
{% endhint %}

#### Frame-Specific Classifications <a href="#nested-questions-and-classifications" id="nested-questions-and-classifications"></a>

When creating classifications such as [radio](https://docs.imerit.net/labeling/labeling-tools/classification-tools/radio), [dropdown](https://docs.imerit.net/labeling/labeling-tools/classification-tools/single-dropdown), and others, project managers may choose to make those classifications general (e.g., one response per video) or frame-specific (e.g. one response per frame.)

<figure><img src="https://3895963154-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FTcOUG6rfWxqGM0N4db2P%2Fuploads%2F2vlwm7UScjkdHJuHUNkY%2Fimage.png?alt=media&#x26;token=b842811c-7fc6-4c82-b246-9ac2b35ea0c7" alt=""><figcaption></figcaption></figure>

If the classification has been marked as "frame-specific", then it will appear in the timeline and it will behave like a tool-based object with keyframes.

## Annotating Audio Entities in Videos (Waveform View) <a href="#keyboard-shortcuts" id="keyboard-shortcuts"></a>

{% hint style="info" %}
Certain video formats might not have Waveform View available.
{% endhint %}

You can switch to Waveform View by pressing this button:

<figure><img src="https://3895963154-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FTcOUG6rfWxqGM0N4db2P%2Fuploads%2F93pkbP9rFz5HaB7gnzII%2Floreshot-20251029-102641%402x.png?alt=media&#x26;token=36950f4c-8e93-44f2-8c14-aed1914e9f28" alt="" width="375"><figcaption></figcaption></figure>

In Waveform View, the timeline will be replaced with the video's sound waveform. All tools other than Entity will be disabled. Annotating audio in this view is equal to doing so in the [audio labeling editor](https://docs.imerit.net/labeling/labeling-editor-interface/audio-labeling-editor). Please consult the documentation page on the audio labeling editor for more information.

<figure><img src="https://3895963154-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FTcOUG6rfWxqGM0N4db2P%2Fuploads%2FeoXi7w0T6bmrxxEoGZp1%2Floreshot-20251029-104646%402x.png?alt=media&#x26;token=9e5bacdf-db33-4709-9692-279621cfaab5" alt=""><figcaption></figcaption></figure>

You can switch back to the video labeling editor at any time by pressing on the same button again.

If the waveform appears as a flat line, but you were expecting a rich sound wave, please click on the *Show Soundwave* button.

<figure><img src="https://3895963154-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FTcOUG6rfWxqGM0N4db2P%2Fuploads%2FRbAeGCYg8SRUYsIARspW%2Floreshot-20260121-123619%402x.png?alt=media&#x26;token=e7331832-0859-429d-9301-1434e645266b" alt="" width="188"><figcaption></figcaption></figure>

### Keyboard Shortcuts <a href="#keyboard-shortcuts" id="keyboard-shortcuts"></a>

A full list of keyboard shortcuts is available by clicking on the *Keyboard* button on the right side of the top bar:

![](https://3895963154-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-Mj9Q2CMggO8ujraHZeP%2F-Mk6CxZh5z2xVvRhJYrU%2F-Mk6F7P7tRIy5pUzA3oA%2Fimage.png?alt=media\&token=9c2301b3-695a-4816-bddb-65d4c43f37c5)

### Further reading

{% content-ref url="audio-labeling-editor" %}
[audio-labeling-editor](https://docs.imerit.net/labeling/labeling-editor-interface/audio-labeling-editor)
{% endcontent-ref %}

{% content-ref url="" %}
[](https://docs.imerit.net/labeling/labeling-editor-interface)
{% endcontent-ref %}
