Skip to content

@seydx/rtsp / MediaPacket

Interface: MediaPacket ​

Defined in: types.ts:339

One unit of media flowing through the relay.

Represents a single demuxed packet for one track. The relay core only ever reads MediaPacket.streamIndex and MediaPacket.isKeyframe to route and gate packets; sinks that need the encoded payload reach for the underlying AV packet. Each packet is owned by exactly one holder: clone produces an independently-owned copy so a single demuxed packet can be fanned out to many sinks, and free releases any native resources it holds.

Example ​

typescript
import { MediaPacket } from '@seydx/rtsp';

function fanOut(packet: MediaPacket, sinks: { write(p: MediaPacket): void }[]) {
  for (const sink of sinks) {
    sink.write(packet.clone());
  }
  packet.free();
}

See ​

  • TrackInfo For the track a packet belongs to
  • Sink For the consumer that receives packets

Properties ​

av? ​

readonly optional av?: Packet

Defined in: types.ts:380

Underlying node-av Packet.

Present for AV-backed sources and carries the encoded payload AV-backed sinks need to write to a muxer. Never inspected by the relay core; absent for plain (non-AV) packets.


dts? ​

readonly optional dts?: number

Defined in: types.ts:371

Decode timestamp, in the track's time base.

The time at which the packet should be decoded, which can differ from MediaPacket.pts for streams with B-frames. May be absent when the source does not provide it.


isKeyframe ​

readonly isKeyframe: boolean

Defined in: types.ts:354

Whether this packet is a keyframe.

Used by the relay to gate sinks until a decodable starting point arrives, so downstream consumers begin on a clean frame rather than mid-GOP.


pts? ​

readonly optional pts?: number

Defined in: types.ts:362

Presentation timestamp, in the track's time base.

The time at which the decoded frame should be presented. May be absent when the source does not provide it.


streamIndex ​

readonly streamIndex: number

Defined in: types.ts:346

Index of the track this packet belongs to.

Matches the TrackInfo.index of the describing track, letting the relay and sinks route the packet to the correct stream.

Methods ​

clone() ​

clone(): MediaPacket

Defined in: types.ts:397

Return an independently-owned copy of this packet for fan-out.

The copy can be handed to another holder without affecting this one; for native packets the copy is cheap and reference-counted. Each clone must be freed independently.

Returns ​

MediaPacket

A new, independently-owned packet referring to the same media

Example ​

typescript
const copy = packet.clone();
sink.write(copy);

free() ​

free(): void

Defined in: types.ts:410

Release the packet's underlying native resources.

Must be called once the holder is done with the packet. A no-op for plain packets that hold no native resources.

Returns ​

void

Example ​

typescript
packet.free();