node-av 3.1.3 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (192) hide show
  1. package/README.md +88 -52
  2. package/binding.gyp +23 -11
  3. package/dist/api/audio-frame-buffer.d.ts +201 -0
  4. package/dist/api/audio-frame-buffer.js +275 -0
  5. package/dist/api/audio-frame-buffer.js.map +1 -0
  6. package/dist/api/bitstream-filter.d.ts +320 -78
  7. package/dist/api/bitstream-filter.js +684 -151
  8. package/dist/api/bitstream-filter.js.map +1 -1
  9. package/dist/api/constants.d.ts +44 -0
  10. package/dist/api/constants.js +45 -0
  11. package/dist/api/constants.js.map +1 -0
  12. package/dist/api/data/test_av1.ivf +0 -0
  13. package/dist/api/data/test_mjpeg.mjpeg +0 -0
  14. package/dist/api/data/test_vp8.ivf +0 -0
  15. package/dist/api/data/test_vp9.ivf +0 -0
  16. package/dist/api/decoder.d.ts +454 -77
  17. package/dist/api/decoder.js +1081 -271
  18. package/dist/api/decoder.js.map +1 -1
  19. package/dist/api/{media-input.d.ts → demuxer.d.ts} +295 -45
  20. package/dist/api/demuxer.js +1965 -0
  21. package/dist/api/demuxer.js.map +1 -0
  22. package/dist/api/encoder.d.ts +423 -132
  23. package/dist/api/encoder.js +1089 -240
  24. package/dist/api/encoder.js.map +1 -1
  25. package/dist/api/filter-complex.d.ts +769 -0
  26. package/dist/api/filter-complex.js +1596 -0
  27. package/dist/api/filter-complex.js.map +1 -0
  28. package/dist/api/filter-presets.d.ts +80 -5
  29. package/dist/api/filter-presets.js +117 -7
  30. package/dist/api/filter-presets.js.map +1 -1
  31. package/dist/api/filter.d.ts +561 -125
  32. package/dist/api/filter.js +1083 -274
  33. package/dist/api/filter.js.map +1 -1
  34. package/dist/api/{fmp4.d.ts → fmp4-stream.d.ts} +141 -140
  35. package/dist/api/fmp4-stream.js +539 -0
  36. package/dist/api/fmp4-stream.js.map +1 -0
  37. package/dist/api/hardware.d.ts +58 -6
  38. package/dist/api/hardware.js +127 -11
  39. package/dist/api/hardware.js.map +1 -1
  40. package/dist/api/index.d.ts +8 -4
  41. package/dist/api/index.js +17 -8
  42. package/dist/api/index.js.map +1 -1
  43. package/dist/api/io-stream.d.ts +6 -6
  44. package/dist/api/io-stream.js +5 -4
  45. package/dist/api/io-stream.js.map +1 -1
  46. package/dist/api/{media-output.d.ts → muxer.d.ts} +280 -66
  47. package/dist/api/muxer.js +1934 -0
  48. package/dist/api/muxer.js.map +1 -0
  49. package/dist/api/pipeline.d.ts +77 -29
  50. package/dist/api/pipeline.js +449 -439
  51. package/dist/api/pipeline.js.map +1 -1
  52. package/dist/api/rtp-stream.d.ts +312 -0
  53. package/dist/api/rtp-stream.js +630 -0
  54. package/dist/api/rtp-stream.js.map +1 -0
  55. package/dist/api/types.d.ts +533 -56
  56. package/dist/api/utilities/async-queue.d.ts +91 -0
  57. package/dist/api/utilities/async-queue.js +162 -0
  58. package/dist/api/utilities/async-queue.js.map +1 -0
  59. package/dist/api/utilities/audio-sample.d.ts +11 -1
  60. package/dist/api/utilities/audio-sample.js +10 -0
  61. package/dist/api/utilities/audio-sample.js.map +1 -1
  62. package/dist/api/utilities/channel-layout.d.ts +1 -0
  63. package/dist/api/utilities/channel-layout.js +1 -0
  64. package/dist/api/utilities/channel-layout.js.map +1 -1
  65. package/dist/api/utilities/image.d.ts +39 -1
  66. package/dist/api/utilities/image.js +38 -0
  67. package/dist/api/utilities/image.js.map +1 -1
  68. package/dist/api/utilities/index.d.ts +3 -0
  69. package/dist/api/utilities/index.js +6 -0
  70. package/dist/api/utilities/index.js.map +1 -1
  71. package/dist/api/utilities/media-type.d.ts +2 -1
  72. package/dist/api/utilities/media-type.js +1 -0
  73. package/dist/api/utilities/media-type.js.map +1 -1
  74. package/dist/api/utilities/pixel-format.d.ts +4 -1
  75. package/dist/api/utilities/pixel-format.js +3 -0
  76. package/dist/api/utilities/pixel-format.js.map +1 -1
  77. package/dist/api/utilities/sample-format.d.ts +6 -1
  78. package/dist/api/utilities/sample-format.js +5 -0
  79. package/dist/api/utilities/sample-format.js.map +1 -1
  80. package/dist/api/utilities/scheduler.d.ts +138 -0
  81. package/dist/api/utilities/scheduler.js +98 -0
  82. package/dist/api/utilities/scheduler.js.map +1 -0
  83. package/dist/api/utilities/streaming.d.ts +105 -15
  84. package/dist/api/utilities/streaming.js +201 -12
  85. package/dist/api/utilities/streaming.js.map +1 -1
  86. package/dist/api/utilities/timestamp.d.ts +15 -1
  87. package/dist/api/utilities/timestamp.js +14 -0
  88. package/dist/api/utilities/timestamp.js.map +1 -1
  89. package/dist/api/utilities/whisper-model.d.ts +310 -0
  90. package/dist/api/utilities/whisper-model.js +528 -0
  91. package/dist/api/utilities/whisper-model.js.map +1 -0
  92. package/dist/api/webrtc-stream.d.ts +288 -0
  93. package/dist/api/webrtc-stream.js +440 -0
  94. package/dist/api/webrtc-stream.js.map +1 -0
  95. package/dist/api/whisper.d.ts +324 -0
  96. package/dist/api/whisper.js +362 -0
  97. package/dist/api/whisper.js.map +1 -0
  98. package/dist/constants/constants.d.ts +54 -2
  99. package/dist/constants/constants.js +48 -1
  100. package/dist/constants/constants.js.map +1 -1
  101. package/dist/constants/encoders.d.ts +2 -1
  102. package/dist/constants/encoders.js +4 -3
  103. package/dist/constants/encoders.js.map +1 -1
  104. package/dist/constants/hardware.d.ts +26 -0
  105. package/dist/constants/hardware.js +27 -0
  106. package/dist/constants/hardware.js.map +1 -0
  107. package/dist/constants/index.d.ts +1 -0
  108. package/dist/constants/index.js +1 -0
  109. package/dist/constants/index.js.map +1 -1
  110. package/dist/ffmpeg/index.d.ts +3 -3
  111. package/dist/ffmpeg/index.js +3 -3
  112. package/dist/ffmpeg/utils.d.ts +27 -0
  113. package/dist/ffmpeg/utils.js +28 -16
  114. package/dist/ffmpeg/utils.js.map +1 -1
  115. package/dist/lib/binding.d.ts +22 -11
  116. package/dist/lib/binding.js.map +1 -1
  117. package/dist/lib/codec-context.d.ts +87 -0
  118. package/dist/lib/codec-context.js +125 -4
  119. package/dist/lib/codec-context.js.map +1 -1
  120. package/dist/lib/codec-parameters.d.ts +229 -1
  121. package/dist/lib/codec-parameters.js +264 -0
  122. package/dist/lib/codec-parameters.js.map +1 -1
  123. package/dist/lib/codec-parser.d.ts +23 -0
  124. package/dist/lib/codec-parser.js +25 -0
  125. package/dist/lib/codec-parser.js.map +1 -1
  126. package/dist/lib/codec.d.ts +26 -4
  127. package/dist/lib/codec.js +35 -0
  128. package/dist/lib/codec.js.map +1 -1
  129. package/dist/lib/dictionary.js +1 -0
  130. package/dist/lib/dictionary.js.map +1 -1
  131. package/dist/lib/error.js +1 -1
  132. package/dist/lib/error.js.map +1 -1
  133. package/dist/lib/fifo.d.ts +416 -0
  134. package/dist/lib/fifo.js +453 -0
  135. package/dist/lib/fifo.js.map +1 -0
  136. package/dist/lib/filter-context.d.ts +52 -11
  137. package/dist/lib/filter-context.js +56 -12
  138. package/dist/lib/filter-context.js.map +1 -1
  139. package/dist/lib/filter-graph.d.ts +9 -0
  140. package/dist/lib/filter-graph.js +13 -0
  141. package/dist/lib/filter-graph.js.map +1 -1
  142. package/dist/lib/filter.d.ts +21 -0
  143. package/dist/lib/filter.js +28 -0
  144. package/dist/lib/filter.js.map +1 -1
  145. package/dist/lib/format-context.d.ts +48 -14
  146. package/dist/lib/format-context.js +76 -7
  147. package/dist/lib/format-context.js.map +1 -1
  148. package/dist/lib/frame.d.ts +264 -1
  149. package/dist/lib/frame.js +351 -1
  150. package/dist/lib/frame.js.map +1 -1
  151. package/dist/lib/hardware-device-context.d.ts +3 -2
  152. package/dist/lib/hardware-device-context.js.map +1 -1
  153. package/dist/lib/index.d.ts +2 -0
  154. package/dist/lib/index.js +4 -0
  155. package/dist/lib/index.js.map +1 -1
  156. package/dist/lib/input-format.d.ts +21 -0
  157. package/dist/lib/input-format.js +42 -2
  158. package/dist/lib/input-format.js.map +1 -1
  159. package/dist/lib/native-types.d.ts +76 -27
  160. package/dist/lib/option.d.ts +25 -13
  161. package/dist/lib/option.js +28 -0
  162. package/dist/lib/option.js.map +1 -1
  163. package/dist/lib/output-format.d.ts +22 -1
  164. package/dist/lib/output-format.js +28 -0
  165. package/dist/lib/output-format.js.map +1 -1
  166. package/dist/lib/packet.d.ts +35 -0
  167. package/dist/lib/packet.js +52 -2
  168. package/dist/lib/packet.js.map +1 -1
  169. package/dist/lib/rational.d.ts +18 -0
  170. package/dist/lib/rational.js +19 -0
  171. package/dist/lib/rational.js.map +1 -1
  172. package/dist/lib/stream.d.ts +126 -0
  173. package/dist/lib/stream.js +188 -5
  174. package/dist/lib/stream.js.map +1 -1
  175. package/dist/lib/sync-queue.d.ts +179 -0
  176. package/dist/lib/sync-queue.js +197 -0
  177. package/dist/lib/sync-queue.js.map +1 -0
  178. package/dist/lib/types.d.ts +49 -1
  179. package/dist/lib/utilities.d.ts +281 -53
  180. package/dist/lib/utilities.js +298 -55
  181. package/dist/lib/utilities.js.map +1 -1
  182. package/install/check.js +2 -2
  183. package/package.json +37 -26
  184. package/dist/api/fmp4.js +0 -710
  185. package/dist/api/fmp4.js.map +0 -1
  186. package/dist/api/media-input.js +0 -1075
  187. package/dist/api/media-input.js.map +0 -1
  188. package/dist/api/media-output.js +0 -1040
  189. package/dist/api/media-output.js.map +0 -1
  190. package/dist/api/webrtc.d.ts +0 -664
  191. package/dist/api/webrtc.js +0 -1132
  192. package/dist/api/webrtc.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"media-output.js","sourceRoot":"","sources":["../../src/api/media-output.ts"],"names":[],"mappings":"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"}
@@ -1,664 +0,0 @@
1
- import { RTCRtpCodecParameters, RtpPacket } from 'werift';
2
- import { MediaInput } from './media-input.js';
3
- import type { AVCodecID, AVHWDeviceType } from '../constants/constants.js';
4
- /**
5
- * Codec information for WebRTC streaming.
6
- *
7
- * Contains RTP codec parameters and FFmpeg codec IDs for video and audio streams.
8
- * Used for codec negotiation in WebRTC peer connections.
9
- */
10
- export interface WebRTCCodecInfo {
11
- /**
12
- * Video codec configuration.
13
- * Combines RTP parameters (mimeType, clockRate, etc.) with FFmpeg codec ID.
14
- */
15
- video: Partial<RTCRtpCodecParameters> & {
16
- codecId: AVCodecID;
17
- };
18
- /**
19
- * Optional audio codec configuration.
20
- * Combines RTP parameters (mimeType, clockRate, channels) with FFmpeg codec ID.
21
- */
22
- audio?: Partial<RTCRtpCodecParameters> & {
23
- codecId: AVCodecID;
24
- };
25
- }
26
- /**
27
- * Options for configuring WebRTC streaming.
28
- */
29
- export interface WebRTCStreamOptions {
30
- /**
31
- * Callback invoked for each video RTP packet.
32
- * Use this to send packets to your WebRTC implementation.
33
- *
34
- * @param packet - Serialized RTP packet ready for transmission
35
- */
36
- onVideoPacket?: (packet: RtpPacket) => void;
37
- /**
38
- * Callback invoked for each audio RTP packet.
39
- * Use this to send packets to your WebRTC implementation.
40
- *
41
- * @param packet - Serialized RTP packet ready for transmission
42
- */
43
- onAudioPacket?: (packet: RtpPacket) => void;
44
- /**
45
- * Maximum transmission unit (MTU) size in bytes.
46
- * RTP packets will be fragmented to fit within this size.
47
- *
48
- * @default 1200
49
- */
50
- mtu?: number;
51
- /**
52
- * Hardware acceleration configuration.
53
- *
54
- * - `'auto'` - Automatically detect and use available hardware acceleration
55
- * - Object with deviceType - Manually specify hardware acceleration type
56
- *
57
- * @default { deviceType: AV_HWDEVICE_TYPE_NONE }
58
- */
59
- hardware?: 'auto' | {
60
- deviceType: AVHWDeviceType;
61
- device?: string;
62
- options?: Record<string, string>;
63
- };
64
- /**
65
- * FFmpeg input options passed directly to the input.
66
- *
67
- * @default { flags: 'low_delay' }
68
- */
69
- inputOptions?: Record<string, string | number | boolean | null | undefined>;
70
- }
71
- /**
72
- * High-level WebRTC streaming with automatic codec detection and transcoding.
73
- *
74
- * Provides library-agnostic RTP streaming for WebRTC applications.
75
- * Automatically detects input codecs and transcodes non-WebRTC-compatible formats.
76
- * Handles video (H.264, H.265, VP8, VP9) and audio (Opus, PCMA, PCMU) codecs.
77
- * Supports hardware acceleration for video transcoding.
78
- * Essential component for building WebRTC streaming servers without direct WebRTC library coupling.
79
- *
80
- * @example
81
- * ```typescript
82
- * import { WebRTCStream } from 'node-av/api';
83
- *
84
- * // Create stream with RTP packet callbacks
85
- * const stream = await WebRTCStream.create('rtsp://camera.local/stream', {
86
- * mtu: 1200,
87
- * hardware: 'auto',
88
- * onVideoPacket: (rtp) => {
89
- * // Send RTP packet to WebRTC peer connection
90
- * videoTrack.writeRtp(rtp);
91
- * },
92
- * onAudioPacket: (rtp) => {
93
- * audioTrack.writeRtp(rtp);
94
- * }
95
- * });
96
- *
97
- * // Get detected codecs for SDP negotiation
98
- * const codecs = stream.getCodecs();
99
- * console.log('Video:', codecs.video.mimeType);
100
- * console.log('Audio:', codecs.audio?.mimeType);
101
- *
102
- * // Start streaming
103
- * await stream.start();
104
- * ```
105
- *
106
- * @example
107
- * ```typescript
108
- * // Stream with hardware acceleration
109
- * import { AV_HWDEVICE_TYPE_CUDA } from 'node-av/constants';
110
- *
111
- * const stream = await WebRTCStream.create('video.mp4', {
112
- * hardware: {
113
- * deviceType: AV_HWDEVICE_TYPE_CUDA,
114
- * device: '/dev/nvidia0'
115
- * },
116
- * onVideoPacket: (rtp) => sendToWebRTC(rtp)
117
- * });
118
- *
119
- * await stream.start();
120
- * stream.stop();
121
- * stream.dispose();
122
- * ```
123
- *
124
- * @see {@link WebRTCSession} For complete WebRTC session management with werift
125
- * @see {@link MediaInput} For input media handling
126
- * @see {@link HardwareContext} For GPU acceleration
127
- */
128
- export declare class WebRTCStream implements Disposable {
129
- readonly input: MediaInput;
130
- private codecInfo;
131
- private options;
132
- private videoOutput;
133
- private audioOutput;
134
- private hardwareContext;
135
- private videoDecoder;
136
- private videoEncoder;
137
- private audioDecoder;
138
- private audioFilter;
139
- private audioEncoder;
140
- private streamActive;
141
- private disposed;
142
- /**
143
- * @param input - Media input source
144
- *
145
- * @param options - Stream configuration options
146
- *
147
- * Use {@link create} factory method
148
- *
149
- * @internal
150
- */
151
- private constructor();
152
- /**
153
- * Create a WebRTC stream from a media source.
154
- *
155
- * Opens the input media, detects video and audio codecs, and prepares
156
- * transcoding pipelines for non-WebRTC-compatible formats.
157
- * Automatically configures H.264 encoding for unsupported video codecs
158
- * and Opus encoding for unsupported audio codecs.
159
- *
160
- * @param inputUrl - Media source URL (RTSP, file path, HTTP, etc.)
161
- *
162
- * @param options - Stream configuration options
163
- *
164
- * @returns Configured WebRTC stream instance
165
- *
166
- * @throws {Error} If no video stream found in input
167
- *
168
- * @throws {FFmpegError} If input cannot be opened
169
- *
170
- * @example
171
- * ```typescript
172
- * // Stream from RTSP camera
173
- * const stream = await WebRTCStream.create('rtsp://camera.local/stream', {
174
- * mtu: 1200,
175
- * onVideoPacket: (rtp) => videoTrack.writeRtp(rtp),
176
- * onAudioPacket: (rtp) => audioTrack.writeRtp(rtp)
177
- * });
178
- * ```
179
- *
180
- * @example
181
- * ```typescript
182
- * // Stream file with auto hardware acceleration
183
- * const stream = await WebRTCStream.create('video.mp4', {
184
- * hardware: 'auto'
185
- * });
186
- * ```
187
- */
188
- static create(inputUrl: string, options?: WebRTCStreamOptions): Promise<WebRTCStream>;
189
- /**
190
- * Check if the stream is active.
191
- *
192
- * @returns True if the stream is active, false otherwise
193
- */
194
- get isStreamActive(): boolean;
195
- /**
196
- * Get detected codec information for SDP negotiation.
197
- *
198
- * Returns RTP codec parameters and FFmpeg codec IDs for video and audio.
199
- * Use this information to configure WebRTC peer connections with matching codecs.
200
- *
201
- * @returns Codec configuration for video and audio streams
202
- *
203
- * @example
204
- * ```typescript
205
- * const stream = await WebRTCStream.create('input.mp4');
206
- * const codecs = stream.getCodecs();
207
- *
208
- * console.log('Video codec:', codecs.video.mimeType);
209
- * console.log('Audio codec:', codecs.audio?.mimeType);
210
- * ```
211
- */
212
- getCodecs(): WebRTCCodecInfo;
213
- /**
214
- * Start streaming media to RTP packets.
215
- *
216
- * Begins the media processing pipeline, reading packets from input,
217
- * transcoding if necessary, and invoking RTP packet callbacks.
218
- * Automatically handles video and audio streams in parallel.
219
- * Flushes all buffers at the end of stream.
220
- * This method blocks until streaming completes or {@link stop} is called.
221
- *
222
- * @returns Promise that resolves when streaming completes
223
- *
224
- * @throws {FFmpegError} If transcoding or muxing fails
225
- *
226
- * @example
227
- * ```typescript
228
- * const stream = await WebRTCStream.create('rtsp://camera.local/stream', {
229
- * onVideoPacket: (rtp) => sendRtp(rtp)
230
- * });
231
- *
232
- * // Start streaming (blocks until complete or stopped)
233
- * await stream.start();
234
- * ```
235
- *
236
- * @example
237
- * ```typescript
238
- * // Non-blocking start with background promise
239
- * const stream = await WebRTCStream.create('input.mp4');
240
- * const streamPromise = stream.start();
241
- *
242
- * // Later: stop streaming
243
- * stream.stop();
244
- * await streamPromise;
245
- * ```
246
- */
247
- start(): Promise<void>;
248
- /**
249
- * Stop streaming gracefully.
250
- *
251
- * Signals the streaming loop to exit after the current packet is processed.
252
- * Does not immediately close resources - use {@link dispose} for cleanup.
253
- * Safe to call multiple times.
254
- *
255
- * @example
256
- * ```typescript
257
- * const stream = await WebRTCStream.create('input.mp4');
258
- * const streamPromise = stream.start();
259
- *
260
- * // Stop after 10 seconds
261
- * setTimeout(() => stream.stop(), 10000);
262
- *
263
- * await streamPromise; // Resolves when stopped
264
- * stream.dispose();
265
- * ```
266
- */
267
- stop(): void;
268
- /**
269
- * Clean up all resources and close the stream.
270
- *
271
- * Stops streaming if active and releases all FFmpeg resources including
272
- * decoders, encoders, filters, outputs, and input. Should be called when
273
- * done with the stream to prevent memory leaks.
274
- * Safe to call multiple times.
275
- *
276
- * @example
277
- * ```typescript
278
- * const stream = await WebRTCStream.create('input.mp4');
279
- * await stream.start();
280
- * stream.dispose();
281
- * ```
282
- *
283
- * @example
284
- * ```typescript
285
- * // Using automatic cleanup
286
- * {
287
- * await using stream = await WebRTCStream.create('input.mp4');
288
- * await stream.start();
289
- * } // Automatically disposed
290
- * ```
291
- */
292
- dispose(): void;
293
- /**
294
- * Check if the given audio codec is compatible with WebRTC.
295
- *
296
- * @param codecId - The AVCodecID to check
297
- *
298
- * @returns True if the codec is WebRTC compatible, false otherwise
299
- *
300
- * @internal
301
- */
302
- private isAudioCodecSupported;
303
- /**
304
- * Check if the given video codec is compatible with WebRTC.
305
- *
306
- * @param codecId - The AVCodecID to check
307
- *
308
- * @returns True if the codec is WebRTC compatible, false otherwise
309
- *
310
- * @internal
311
- */
312
- private isVideoCodecSupported;
313
- /**
314
- * Get the audio codec configuration for WebRTC.
315
- *
316
- * @param codecId - The AVCodecID of the audio codec
317
- *
318
- * @returns An object containing MIME type, clock rate, and channels, or null if unsupported
319
- *
320
- * @internal
321
- */
322
- private getAudioCodecConfig;
323
- /**
324
- * Get the video codec configuration for WebRTC.
325
- *
326
- * @param codecId - The AVCodecID of the video codec
327
- *
328
- * @returns An object containing MIME type and clock rate, or null if unsupported
329
- *
330
- * @internal
331
- */
332
- private getVideoCodecConfig;
333
- /**
334
- * Flush video encoder pipeline.
335
- *
336
- * @param videoStreamIndex - Output video stream index
337
- *
338
- * @internal
339
- */
340
- private flushVideo;
341
- /**
342
- * Flush audio encoder pipeline.
343
- *
344
- * @param audioStreamIndex - Output audio stream index
345
- *
346
- * @param hasAudio - Whether audio stream exists
347
- *
348
- * @internal
349
- */
350
- private flushAudio;
351
- /**
352
- * Symbol.dispose implementation for automatic cleanup.
353
- *
354
- * @internal
355
- */
356
- [Symbol.dispose](): void;
357
- }
358
- /**
359
- * Options for configuring WebRTC session with werift integration.
360
- *
361
- * Extends WebRTCStreamOptions but excludes RTP packet callbacks since
362
- * they are automatically handled by the session's media tracks.
363
- */
364
- export interface WebRTCSessionOptions extends Omit<WebRTCStreamOptions, 'onVideoPacket' | 'onAudioPacket'> {
365
- /**
366
- * ICE servers for NAT traversal and STUN/TURN configuration.
367
- *
368
- * @default []
369
- *
370
- * @example
371
- * ```typescript
372
- * const session = await WebRTCSession.create('input.mp4', {
373
- * iceServers: [
374
- * { urls: 'stun:stun.l.google.com:19302' },
375
- * { urls: 'turn:turn.example.com:3478' }
376
- * ]
377
- * });
378
- * ```
379
- */
380
- iceServers?: {
381
- urls: string;
382
- }[];
383
- }
384
- /**
385
- * Complete WebRTC session management with werift integration.
386
- *
387
- * Provides end-to-end WebRTC streaming with automatic SDP negotiation,
388
- * ICE candidate handling, and peer connection management.
389
- * Built on top of {@link WebRTCStream} but handles all WebRTC protocol details.
390
- * Integrates with werift library for RTCPeerConnection and media track handling.
391
- * Ideal for building complete WebRTC streaming applications with minimal code.
392
- *
393
- * @example
394
- * ```typescript
395
- * import { WebRTCSession } from 'node-av/api';
396
- *
397
- * // Create session from media source
398
- * const session = await WebRTCSession.create('rtsp://camera.local/stream', {
399
- * mtu: 1200,
400
- * hardware: 'auto',
401
- * iceServers: [{ urls: 'stun:stun.l.google.com:19302' }]
402
- * });
403
- *
404
- * // Setup ICE candidate handler
405
- * session.onIceCandidate = (candidate) => {
406
- * sendToClient({ type: 'candidate', value: candidate });
407
- * };
408
- *
409
- * // Process SDP offer from client
410
- * const answer = await session.setOffer(clientOffer);
411
- * sendToClient({ type: 'answer', value: answer });
412
- *
413
- * // Start streaming
414
- * await session.start();
415
- * ```
416
- *
417
- * @example
418
- * ```typescript
419
- * // Complete WebSocket signaling server
420
- * import { WebSocket } from 'ws';
421
- *
422
- * ws.on('message', async (data) => {
423
- * const msg = JSON.parse(data);
424
- *
425
- * if (msg.type === 'offer') {
426
- * const session = await WebRTCSession.create(msg.url, {
427
- * hardware: 'auto'
428
- * });
429
- *
430
- * session.onIceCandidate = (candidate) => {
431
- * ws.send(JSON.stringify({ type: 'candidate', value: candidate }));
432
- * };
433
- *
434
- * const answer = await session.setOffer(msg.value);
435
- * ws.send(JSON.stringify({ type: 'answer', value: answer }));
436
- *
437
- * await session.start();
438
- * } else if (msg.type === 'candidate') {
439
- * session.addIceCandidate(msg.value);
440
- * }
441
- * });
442
- * ```
443
- *
444
- * @see {@link WebRTCStream} For library-agnostic RTP streaming
445
- * @see {@link MediaInput} For input media handling
446
- * @see {@link HardwareContext} For GPU acceleration
447
- */
448
- export declare class WebRTCSession implements Disposable {
449
- private stream;
450
- private pc;
451
- private videoTrack;
452
- private audioTrack;
453
- private options;
454
- /**
455
- * Callback invoked when a new ICE candidate is discovered.
456
- * Send this candidate to the remote peer via signaling channel.
457
- *
458
- * @param candidate - ICE candidate string to send to remote peer
459
- *
460
- * @example
461
- * ```typescript
462
- * session.onIceCandidate = (candidate) => {
463
- * ws.send(JSON.stringify({ type: 'candidate', value: candidate }));
464
- * };
465
- * ```
466
- */
467
- onIceCandidate: ((candidate: string) => void) | null;
468
- /**
469
- * @param options - Session configuration options
470
- *
471
- * Use {@link create} factory method
472
- *
473
- * @internal
474
- */
475
- private constructor();
476
- /**
477
- * Create a WebRTC session from a media source.
478
- *
479
- * Opens the input media, creates internal streaming components, and prepares
480
- * for WebRTC peer connection negotiation. Does not start streaming yet.
481
- * Call {@link setOffer} to negotiate SDP and {@link start} to begin streaming.
482
- *
483
- * @param inputUrl - Media source URL (RTSP, file path, HTTP, etc.)
484
- *
485
- * @param options - Session configuration options
486
- *
487
- * @returns Configured WebRTC session instance
488
- *
489
- * @throws {Error} If no video stream found in input
490
- *
491
- * @throws {FFmpegError} If input cannot be opened
492
- *
493
- * @example
494
- * ```typescript
495
- * const session = await WebRTCSession.create('rtsp://camera.local/stream', {
496
- * mtu: 1200,
497
- * hardware: 'auto',
498
- * iceServers: [{ urls: 'stun:stun.l.google.com:19302' }]
499
- * });
500
- * ```
501
- *
502
- * @example
503
- * ```typescript
504
- * // Session from file with hardware acceleration
505
- * const session = await WebRTCSession.create('video.mp4', {
506
- * hardware: {
507
- * deviceType: AV_HWDEVICE_TYPE_CUDA
508
- * }
509
- * });
510
- * ```
511
- */
512
- static create(inputUrl: string, options?: WebRTCSessionOptions): Promise<WebRTCSession>;
513
- /**
514
- * Get detected codec information.
515
- *
516
- * Returns RTP codec parameters and FFmpeg codec IDs for video and audio.
517
- * Useful for inspecting what codecs will be used in the WebRTC session.
518
- *
519
- * @returns Codec configuration for video and audio streams
520
- *
521
- * @example
522
- * ```typescript
523
- * const session = await WebRTCSession.create('input.mp4');
524
- * const codecs = session.getCodecs();
525
- *
526
- * console.log('Video:', codecs.video.mimeType);
527
- * console.log('Audio:', codecs.audio?.mimeType);
528
- * ```
529
- */
530
- getCodecs(): WebRTCCodecInfo;
531
- /**
532
- * Process SDP offer from remote peer and generate SDP answer.
533
- *
534
- * Creates RTCPeerConnection with detected codecs, sets up media tracks,
535
- * processes the remote SDP offer, and generates a local SDP answer.
536
- * Also configures ICE candidate handling via {@link onIceCandidate} callback.
537
- * Must be called before {@link start}.
538
- *
539
- * @param offerSdp - SDP offer string from remote WebRTC peer
540
- *
541
- * @returns SDP answer string to send back to remote peer
542
- *
543
- * @example
544
- * ```typescript
545
- * const session = await WebRTCSession.create('input.mp4');
546
- *
547
- * // Setup ICE candidate handler first
548
- * session.onIceCandidate = (candidate) => {
549
- * sendToRemote({ type: 'candidate', value: candidate });
550
- * };
551
- *
552
- * // Process offer and send answer
553
- * const answer = await session.setOffer(remoteOffer);
554
- * sendToRemote({ type: 'answer', value: answer });
555
- * ```
556
- */
557
- setOffer(offerSdp: string): Promise<string>;
558
- /**
559
- * Add ICE candidate from remote peer.
560
- *
561
- * Processes ICE candidates received from the remote peer via signaling channel.
562
- * Should be called whenever a new candidate message arrives from remote peer.
563
- * Can be called multiple times as candidates are discovered.
564
- *
565
- * @param candidate - ICE candidate string from remote peer
566
- *
567
- * @throws {Error} If peer connection not initialized (call {@link setOffer} first)
568
- *
569
- * @example
570
- * ```typescript
571
- * // In signaling message handler
572
- * if (msg.type === 'candidate') {
573
- * session.addIceCandidate(msg.value);
574
- * }
575
- * ```
576
- */
577
- addIceCandidate(candidate: string): void;
578
- /**
579
- * Start streaming media to WebRTC peer connection.
580
- *
581
- * Begins the media processing pipeline, reading packets from input,
582
- * transcoding if necessary, and sending RTP packets to media tracks.
583
- * Must call {@link setOffer} before starting.
584
- * This method blocks until streaming completes or {@link stop} is called.
585
- *
586
- * @returns Promise that resolves when streaming completes
587
- *
588
- * @throws {FFmpegError} If transcoding or muxing fails
589
- *
590
- * @example
591
- * ```typescript
592
- * const session = await WebRTCSession.create('input.mp4');
593
- * session.onIceCandidate = (c) => sendToRemote(c);
594
- *
595
- * const answer = await session.setOffer(remoteOffer);
596
- * sendToRemote(answer);
597
- *
598
- * // Start streaming (blocks until complete)
599
- * await session.start();
600
- * ```
601
- *
602
- * @example
603
- * ```typescript
604
- * // Non-blocking start
605
- * const session = await WebRTCSession.create('input.mp4');
606
- * const streamPromise = session.start();
607
- *
608
- * // Later: stop streaming
609
- * session.stop();
610
- * await streamPromise;
611
- * ```
612
- */
613
- start(): Promise<void>;
614
- /**
615
- * Stop streaming gracefully.
616
- *
617
- * Signals the streaming loop to exit after the current packet is processed.
618
- * Does not immediately close resources - use {@link dispose} for cleanup.
619
- * Safe to call multiple times.
620
- *
621
- * @example
622
- * ```typescript
623
- * const session = await WebRTCSession.create('input.mp4');
624
- * const streamPromise = session.start();
625
- *
626
- * // Stop after 10 seconds
627
- * setTimeout(() => session.stop(), 10000);
628
- *
629
- * await streamPromise;
630
- * session.dispose();
631
- * ```
632
- */
633
- stop(): void;
634
- /**
635
- * Clean up all resources and close the session.
636
- *
637
- * Stops streaming if active, releases all FFmpeg resources, closes peer connection,
638
- * and cleans up media tracks. Should be called when done with the session to prevent
639
- * memory leaks. Safe to call multiple times.
640
- *
641
- * @example
642
- * ```typescript
643
- * const session = await WebRTCSession.create('input.mp4');
644
- * await session.start();
645
- * session.dispose();
646
- * ```
647
- *
648
- * @example
649
- * ```typescript
650
- * // Using automatic cleanup
651
- * {
652
- * await using session = await WebRTCSession.create('input.mp4');
653
- * await session.start();
654
- * } // Automatically disposed
655
- * ```
656
- */
657
- dispose(): void;
658
- /**
659
- * Symbol.dispose implementation for automatic cleanup.
660
- *
661
- * @internal
662
- */
663
- [Symbol.dispose](): void;
664
- }