forked from mbullington/yellowstone
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathRTSPClient copy.d.ts
More file actions
107 lines (107 loc) · 3.23 KB
/
RTSPClient copy.d.ts
File metadata and controls
107 lines (107 loc) · 3.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
/// <reference types="node" />
/// <reference types="node" />
/// <reference types="node" />
/// <reference types="node" />
import * as net from "net";
import * as tls from "tls";
type SocketUnion = net.Socket | tls.TLSSocket;
import { EventEmitter } from "events";
import * as util from "./util";
import { Transport } from "./util";
import * as transform from "sdp-transform";
declare enum ReadStates {
SEARCHING = 0,
READING_RTSP_HEADER = 1,
READING_RTSP_PAYLOAD = 2,
READING_RAW_PACKET_SIZE = 3,
READING_RAW_PACKET = 4
}
type Connection = "udp" | "tcp";
type AuthOptions = {
type: "Digest" | "Basic";
realm?: string;
nonce?: string;
qop?: string;
algorithm?: "MD5" | "SHA-256";
};
type Headers = {
[key: string]: string | number | undefined;
Session?: string;
Location?: string;
CSeq?: number;
"WWW-Authenticate"?: string;
Transport?: string;
Unsupported?: string;
};
type Detail = {
codec: string;
mediaSource: ({
type: string;
port: number;
protocol: string;
payloads?: string | undefined;
} & transform.MediaDescription);
transport: Transport['parameters'];
isH264: boolean;
rtpChannel: number;
rtcpChannel: number;
sr_ntpMSW?: number;
sr_ntpLSW?: number;
sr_rtptimestamp?: number;
};
export default class RTSPClient extends EventEmitter {
username: string;
password: string;
headers: {
[key: string]: string;
};
isConnected: boolean;
closed: boolean;
_url?: string;
_client?: SocketUnion;
_cSeq: number;
_unsupportedExtensions?: string[];
_authOpions?: AuthOptions;
_session?: string;
_keepAliveID?: NodeJS.Timeout;
_nextFreeInterleavedChannel: number;
_nextFreeUDPPort: number;
readState: ReadStates;
messageBytes: number[];
rtspContentLength: number;
rtspStatusLine: string;
rtspHeaders: Headers;
rtspPacketLength: number;
rtspPacket: Buffer;
rtspPacketPointer: number;
clientSSRC: number;
tcpSocket: SocketUnion;
setupResult: Array<Detail>;
constructor(username: string, password: string, headers?: {
[key: string]: string;
});
_netConnect(hostname: string, port: number, secure?: boolean): Promise<this>;
connect(url: string, { keepAlive, connection, secure, }?: {
keepAlive: boolean;
connection?: Connection;
secure: boolean;
}): Promise<Detail[]>;
request(requestName: string, headersParam?: Headers, url?: string): Promise<{
headers: Headers;
mediaHeaders?: string[];
} | void>;
respond(status: string, headersParam?: Headers): void;
play(): Promise<void>;
pause(): Promise<void>;
sendAudioBackChannel(audioChunk: Buffer): Promise<void>;
close(isImmediate?: boolean): Promise<void>;
_onData(data: Buffer): void;
_sendInterleavedData(channel: number, buffer: Buffer): void;
_sendUDPData(host: string, port: number, buffer: Buffer): void;
_emptyReceiverReport(): Buffer;
_socketWrite(socket: SocketUnion, data: Buffer): Promise<any>;
private _generateAuthString;
ntpBaseDate_ms: number;
GetWallClockTime(packet: util.RTPPacket, detail: Detail): Date | undefined;
}
export { RTPPacket, RTCPPacket } from "./util";