RTP stack for Node.js and browser written in TypeScript. rtp.js provides with an API to parse, generate and modify RTP and RTCP packets.
npm install rtp.js
All RTP and RTCP classes, types and packet related helpers are exported by the packets module:
import {
isRtp,
isRtcp,
RtpPacket,
CompoundPacket,
ReceiverReportPacket,
SenderReportPacket,
ReceptionReport,
ByePacket,
SdesPacket,
NackPacket,
SrReqPacket,
EcnPacket,
PliPacket,
SliPacket,
RpsiPacket,
XrPacket,
ExtendedJitterReportsPacket,
GenericPacket,
// etc.
} from 'rtp.js/packets';
const rtpPacket = new RtpPacket();
The utils module exports some generic helpers and utilities:
import {
padTo4Bytes,
nodeBufferToDataView,
dataViewToNodeBuffer,
nodeBufferToArrayBuffer,
arrayBufferToNodeBuffer,
numericArrayToDataView,
numberToDataView,
dataViewToString,
arrayBufferToString,
stringToDataView,
getStringByteLength,
// etc.
} from 'rtp.js/utils';
const view = stringToDataView('fooœæ€ñ#¢∞Ω©bar');
CommonJS is also supported:
const { RtpPacket /* etc. */ } = require('rtp.js/packets');
const { padTo4Bytes /* etc. */ } = require('rtp.js/utils');
Single entry point ("main" or "module" entries in package.json) is also supported for backwards compatibility:
// Using ESM:
import { packets as rtpJsPackets, utils as rtpJsUtils } from 'rtp.js';
// Using CommonJS:
const { packets: rtpJsPackets, utils: rtpJsUtils } = require('rtp.js');
const { RtpPacket /* etc. */ } = rtpJsPackets;
const { padTo4Bytes /* etc. */ } = rtpJsUtils;
rtp.js is written in TypeScript with module: NodeNext, meaning that TypeScript projects that want to import rtp.js using its exposed entry points ("rtp.js/packets" and "rtp.js/utils") must have moduleResolution set to "node16", 'NodeNext" or "bundler" in their tsconfig.json file.