# VideoFile

## class nominal.core.VideoFile(rid, name, description, created_at)

Bases: `HasRid`, `RefreshableConjureMixin`[`VideoFile`]

### rid: str

### name: str

### description: str | None

### created_at: IntegralNanosecondsUTC

### archive()

Archive the video file, disallowing it to appear when playing back the video

### poll_until_ingestion_completed(interval=timedelta(seconds=1), *, timeout=None)

Block until video ingestion has completed.
This method polls Nominal for ingest status after uploading a video file on an interval.

Parameters:
:   - **interval** ([*timedelta*](https://docs.python.org/3/library/datetime.html#datetime.timedelta "(in Python v3.15)"))

      How long to wait between status checks.
    - **timeout** ([*timedelta*](https://docs.python.org/3/library/datetime.html#datetime.timedelta "(in Python v3.15)") *|* *None*)

      Give up after this long and raise `NominalIngestTimeout`; None waits indefinitely.

Raises:
:   - [**NominalIngestFailed**](https://dev.nominal.io/python/ref/generated/nominal.exceptions.NominalIngestFailed.md#nominal.exceptions.NominalIngestFailed "nominal.exceptions.NominalIngestFailed") – if the ingest failed
    - [**NominalIngestTimeout**](https://dev.nominal.io/python/ref/generated/nominal.exceptions.NominalIngestTimeout.md#nominal.exceptions.NominalIngestTimeout "nominal.exceptions.NominalIngestTimeout") – if the ingest did not finish within `timeout`
    - [**NominalIngestError**](https://dev.nominal.io/python/ref/generated/nominal.exceptions.NominalIngestError.md#nominal.exceptions.NominalIngestError "nominal.exceptions.NominalIngestError") – if the ingest status is not known

### refresh()

Return type:
:   [*Self*](https://docs.python.org/3/library/typing.html#typing.Self "(in Python v3.15)")

### unarchive()

Unarchive the video file, allowing it to appear when playing back the video

### update(*, name=None, description=None, starting_timestamp=None, ending_timestamp=None, true_frame_rate=None, scale_factor=None)

Update video file metadata.

Parameters:
:   - **name** ([*str*](https://docs.python.org/3/builtins/stdtypes.html#str "(in Python v3.15)") *|* *None*)

      Name of the video file
    - **description** ([*str*](https://docs.python.org/3/builtins/stdtypes.html#str "(in Python v3.15)") *|* *None*)

      Description of the video file
    - **starting_timestamp** ([*datetime*](https://docs.python.org/3/library/datetime.html#datetime.datetime "(in Python v3.15)") *|* [*int*](https://docs.python.org/3/builtins/functions.html#int "(in Python v3.15)") *|* *None*)

      Starting timestamp for the video file
    - **ending_timestamp** ([*datetime*](https://docs.python.org/3/library/datetime.html#datetime.datetime "(in Python v3.15)") *|* [*int*](https://docs.python.org/3/builtins/functions.html#int "(in Python v3.15)") *|* *None*)

      Ending timestamp for the video file
    - **true_frame_rate** ([*float*](https://docs.python.org/3/builtins/functions.html#float "(in Python v3.15)") *|* *None*)

      Frame rate that the video file was recorded at, irregardless of the
      frame rate that the media plays at.
    - **scale_factor** ([*float*](https://docs.python.org/3/builtins/functions.html#float "(in Python v3.15)") *|* *None*)

      Ratio of absolute time to media time for the video file. For example,
      a value of 2 would indicate that for every second of media, two seconds have elapsed
      in absolute time.

Returns:
:   Updated video file metadata.

Return type:
:   [*Self*](https://docs.python.org/3/library/typing.html#typing.Self "(in Python v3.15)")

> **Note**
>
> Only one of {ending_timestamp, true_frame_rate, scale_factor} may be present at one time.
