media-stream-library
Version:
Media stream library for Node & the Web.
80 lines (79 loc) • 2.37 kB
TypeScript
import { MediaTrack } from '../utils/protocols/isom';
import { Rtcp } from '../utils/protocols/rtcp';
import { Sdp } from '../utils/protocols/sdp';
export interface GenericMessage {
readonly type: MessageType;
readonly data: Buffer;
ntpTimestamp?: number;
}
export declare enum MessageType {
UNKNOWN = 0,
RAW = 1,
RTP = 2,
RTCP = 3,
RTSP = 4,
SDP = 5,
ELEMENTARY = 6,
H264 = 7,
ISOM = 8,
XML = 9,
JPEG = 10
}
export interface RawMessage extends GenericMessage {
readonly type: MessageType.RAW;
}
export interface RtpMessage extends GenericMessage {
readonly type: MessageType.RTP;
readonly channel: number;
}
export interface RtcpMessage extends GenericMessage {
readonly type: MessageType.RTCP;
readonly channel: number;
readonly rtcp: Rtcp;
}
export interface RtspMessage extends GenericMessage {
readonly type: MessageType.RTSP;
readonly method?: string;
readonly headers?: {
[key: string]: string;
};
readonly uri?: string;
readonly protocol?: string;
}
export interface SdpMessage extends GenericMessage {
readonly type: MessageType.SDP;
readonly sdp: Sdp;
}
export interface ElementaryMessage extends GenericMessage {
readonly type: MessageType.ELEMENTARY;
readonly payloadType: number;
readonly timestamp: number;
}
export interface H264Message extends GenericMessage {
readonly type: MessageType.H264;
readonly payloadType: number;
readonly timestamp: number;
readonly nalType: number;
}
export interface IsomMessage extends GenericMessage {
readonly type: MessageType.ISOM;
readonly checkpointTime?: number;
readonly tracks?: MediaTrack[];
readonly mime?: string;
}
export interface XmlMessage extends GenericMessage {
readonly type: MessageType.XML;
readonly timestamp: number;
readonly payloadType: number;
}
export interface JpegMessage extends GenericMessage {
readonly type: MessageType.JPEG;
readonly timestamp: number;
readonly payloadType: number;
readonly framesize: {
readonly width: number;
readonly height: number;
};
}
export type Message = RawMessage | RtpMessage | RtcpMessage | RtspMessage | SdpMessage | ElementaryMessage | H264Message | IsomMessage | XmlMessage | JpegMessage;
export type MessageHandler = (msg: Message) => void;