---
title: "VideoWriter"
sidebar_label: "VideoWriter"
description: "The clika_runtime.io VideoWriter class."
---

<!-- Generated by tools/api_reference/generate_api_docs.py. Do not edit. -->

Encodes a stream of [H, W, 3] uint8 RGB frames into a video file, with an optional audio track: open() names the file, the codec, the frame rate and the geometry; write_frame() appends one frame; close() finalizes the file (also run when the object is garbage collected, and by the `with` form on exit). The frames are copied as they are written and encoded at close.

## `__init__`

```python
__init__(self, /, *args, **kwargs)
```

Initialize self.  See help(type(self)) for accurate signature.

## `close`

```python
closeclose(self) -> None
```

close(self) -> None

close() -> None

Encode the written frames (and the track's samples) into the file and finalize it. A declared track that received no samples is refused here. A second close() changes nothing.

## `open`

```python
openopen(path: object, *, fps: float, width: int, height: int, codec: str = '', audio: clika_runtime._core.io.AudioTrack | None = None) -> clika_runtime._core.io.VideoWriter
```

open(path: object, *, fps: float, width: int, height: int, codec: str = '', audio: clika_runtime._core.io.AudioTrack | None = None) -> clika_runtime._core.io.VideoWriter

open(path, *, fps, width, height, codec='', audio=None) -> VideoWriter

Open a writer to `path` (a str or an os.PathLike; the suffix picks the container) producing `width` x `height` frames at `fps`. `codec` names the video codec; '' picks the first encoder the host offers along a fixed preference list (h264, hevc, vp9, mpeg4), and a named codec whose encoder is absent raises naming the encoders found. `audio`, an AudioTrack, declares a sound track whose samples arrive through write_audio(); a track with a sample rate that is not positive or no channel is refused here. Raises when no encode backend exists (video_capability() is False).

## `write_audio`

```python
write_audiowrite_audio(self, samples: clika_runtime._core.Tensor) -> None
```

write_audio(self, samples: clika_runtime._core.Tensor) -> None

write_audio(samples) -> None

Append interleaved samples to the track declared at open(): [frames, channels] (or [frames] for a mono track), a float dtype in [-1, 1] or int16 PCM codes, on any device. The first call pins the sample dtype the track is written at. Raises InvalidArgumentError on a writer opened without a track, on a channel count other than the declared one, on a second dtype mid-track and on quantized samples.

## `write_frame`

```python
write_framewrite_frame(self, frame: clika_runtime._core.Tensor) -> None
```

write_frame(self, frame: clika_runtime._core.Tensor) -> None

write_frame(frame) -> None

Append one [H, W, 3] uint8 frame of the writer's geometry; the bytes are copied, the tensor is not retained. A frame of another shape or dtype, an undefined tensor or a quantized one (dequantize it first) raises InvalidArgumentError; a frame after close() raises with code_name FAILED_PRECONDITION.
