# createFrameReader

URL: https://www.caprid.com/docs/reference/typescript/caprid/relay/media/functions/createframereader/

```ts
function createFrameReader<F>(sequencer, options): FrameReader;
```

Defined in: [relay-sdks/ts/src/frame-reader.ts:83](https://github.com/caprids/relay-sdks/blob/main/ts/src/frame-reader.ts#L83)

Read a track as frames: feed the sequencer every event, poll it after each, and again when a wait it reports ends
(at most 50 ms on, since another track may move a shared clock).
See spec/behavior.md, "Media subscribing".

```ts
const clock = createPlayoutClock();
const video = createFrameReader(createFrameSequencer({ clock }), { onFrame: decode });
subscriber.subscribe({ namespace, track: 'video' }, { ...video, onError });
```

## Type Parameters

| Type Parameter |
| ------ |
| <a id="type-parameter-f"></a> `F` |

## Parameters

| Parameter | Type |
| ------ | ------ |
| `sequencer` | [`FrameReaderSequencer`](https://www.caprid.com/docs/reference/typescript/caprid/relay/media/interfaces/framereadersequencer/)\<`F`\> |
| `options` | [`FrameReaderOptions`](https://www.caprid.com/docs/reference/typescript/caprid/relay/media/interfaces/framereaderoptions/)\<`F`\> |

## Returns

[`FrameReader`](https://www.caprid.com/docs/reference/typescript/caprid/relay/media/interfaces/framereader/)
