node-av 2.0.0 → 2.4.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.
- package/README.md +18 -5
- package/binding.gyp +12 -0
- package/dist/api/bitstream-filter.d.ts +132 -0
- package/dist/api/bitstream-filter.js +198 -0
- package/dist/api/bitstream-filter.js.map +1 -1
- package/dist/api/decoder.d.ts +194 -0
- package/dist/api/decoder.js +313 -0
- package/dist/api/decoder.js.map +1 -1
- package/dist/api/encoder.d.ts +263 -0
- package/dist/api/encoder.js +427 -0
- package/dist/api/encoder.js.map +1 -1
- package/dist/api/filter-presets.d.ts +92 -0
- package/dist/api/filter-presets.js +92 -0
- package/dist/api/filter-presets.js.map +1 -1
- package/dist/api/filter.d.ts +234 -9
- package/dist/api/filter.js +372 -9
- package/dist/api/filter.js.map +1 -1
- package/dist/api/hardware.d.ts +17 -0
- package/dist/api/hardware.js +28 -17
- package/dist/api/hardware.js.map +1 -1
- package/dist/api/io-stream.d.ts +6 -0
- package/dist/api/io-stream.js +2 -0
- package/dist/api/io-stream.js.map +1 -1
- package/dist/api/media-input.d.ts +214 -1
- package/dist/api/media-input.js +341 -0
- package/dist/api/media-input.js.map +1 -1
- package/dist/api/media-output.d.ts +132 -1
- package/dist/api/media-output.js +339 -0
- package/dist/api/media-output.js.map +1 -1
- package/dist/api/pipeline.d.ts +73 -8
- package/dist/api/pipeline.js +61 -0
- package/dist/api/pipeline.js.map +1 -1
- package/dist/api/types.d.ts +7 -0
- package/dist/api/utils.js +2 -0
- package/dist/api/utils.js.map +1 -1
- package/dist/lib/audio-fifo.d.ts +103 -0
- package/dist/lib/audio-fifo.js +109 -0
- package/dist/lib/audio-fifo.js.map +1 -1
- package/dist/lib/binding.d.ts +1 -0
- package/dist/lib/binding.js +32 -7
- package/dist/lib/binding.js.map +1 -1
- package/dist/lib/bitstream-filter-context.d.ts +79 -0
- package/dist/lib/bitstream-filter-context.js +83 -0
- package/dist/lib/bitstream-filter-context.js.map +1 -1
- package/dist/lib/bitstream-filter.d.ts +2 -0
- package/dist/lib/bitstream-filter.js +2 -0
- package/dist/lib/bitstream-filter.js.map +1 -1
- package/dist/lib/codec-context.d.ts +168 -0
- package/dist/lib/codec-context.js +178 -0
- package/dist/lib/codec-context.js.map +1 -1
- package/dist/lib/codec-parameters.d.ts +3 -0
- package/dist/lib/codec-parameters.js +3 -0
- package/dist/lib/codec-parameters.js.map +1 -1
- package/dist/lib/codec-parser.d.ts +6 -0
- package/dist/lib/codec-parser.js +6 -0
- package/dist/lib/codec-parser.js.map +1 -1
- package/dist/lib/codec.d.ts +12 -0
- package/dist/lib/codec.js +12 -0
- package/dist/lib/codec.js.map +1 -1
- package/dist/lib/dictionary.d.ts +16 -0
- package/dist/lib/dictionary.js +16 -0
- package/dist/lib/dictionary.js.map +1 -1
- package/dist/lib/error.d.ts +8 -0
- package/dist/lib/error.js +9 -0
- package/dist/lib/error.js.map +1 -1
- package/dist/lib/filter-context.d.ts +100 -0
- package/dist/lib/filter-context.js +104 -0
- package/dist/lib/filter-context.js.map +1 -1
- package/dist/lib/filter-graph.d.ts +80 -0
- package/dist/lib/filter-graph.js +84 -0
- package/dist/lib/filter-graph.js.map +1 -1
- package/dist/lib/filter-inout.d.ts +1 -0
- package/dist/lib/filter-inout.js +1 -0
- package/dist/lib/filter-inout.js.map +1 -1
- package/dist/lib/filter.d.ts +2 -0
- package/dist/lib/filter.js +2 -0
- package/dist/lib/filter.js.map +1 -1
- package/dist/lib/format-context.d.ts +338 -2
- package/dist/lib/format-context.js +355 -3
- package/dist/lib/format-context.js.map +1 -1
- package/dist/lib/frame.d.ts +41 -0
- package/dist/lib/frame.js +43 -0
- package/dist/lib/frame.js.map +1 -1
- package/dist/lib/hardware-device-context.d.ts +8 -0
- package/dist/lib/hardware-device-context.js +8 -0
- package/dist/lib/hardware-device-context.js.map +1 -1
- package/dist/lib/hardware-frames-context.d.ts +55 -0
- package/dist/lib/hardware-frames-context.js +57 -0
- package/dist/lib/hardware-frames-context.js.map +1 -1
- package/dist/lib/input-format.d.ts +43 -3
- package/dist/lib/input-format.js +48 -0
- package/dist/lib/input-format.js.map +1 -1
- package/dist/lib/io-context.d.ts +218 -0
- package/dist/lib/io-context.js +234 -0
- package/dist/lib/io-context.js.map +1 -1
- package/dist/lib/log.d.ts +2 -0
- package/dist/lib/log.js +2 -0
- package/dist/lib/log.js.map +1 -1
- package/dist/lib/native-types.d.ts +39 -1
- package/dist/lib/option.d.ts +90 -0
- package/dist/lib/option.js +97 -0
- package/dist/lib/option.js.map +1 -1
- package/dist/lib/output-format.d.ts +4 -0
- package/dist/lib/output-format.js +4 -0
- package/dist/lib/output-format.js.map +1 -1
- package/dist/lib/packet.d.ts +7 -0
- package/dist/lib/packet.js +7 -0
- package/dist/lib/packet.js.map +1 -1
- package/dist/lib/rational.d.ts +1 -0
- package/dist/lib/rational.js +1 -0
- package/dist/lib/rational.js.map +1 -1
- package/dist/lib/software-resample-context.d.ts +64 -0
- package/dist/lib/software-resample-context.js +66 -0
- package/dist/lib/software-resample-context.js.map +1 -1
- package/dist/lib/software-scale-context.d.ts +98 -0
- package/dist/lib/software-scale-context.js +102 -0
- package/dist/lib/software-scale-context.js.map +1 -1
- package/dist/lib/stream.d.ts +1 -0
- package/dist/lib/stream.js +1 -0
- package/dist/lib/stream.js.map +1 -1
- package/dist/lib/utilities.d.ts +60 -0
- package/dist/lib/utilities.js +60 -0
- package/dist/lib/utilities.js.map +1 -1
- package/package.json +19 -17
package/dist/api/media-output.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { mkdirSync } from 'fs';
|
|
1
2
|
import { mkdir } from 'fs/promises';
|
|
2
3
|
import { dirname, resolve } from 'path';
|
|
3
4
|
import { AVFMT_FLAG_CUSTOM_IO, AVFMT_NOFILE, AVIO_FLAG_WRITE } from '../constants/constants.js';
|
|
@@ -75,7 +76,9 @@ export class MediaOutput {
|
|
|
75
76
|
* Direct mapping to avformat_alloc_output_context2() and avio_open2().
|
|
76
77
|
*
|
|
77
78
|
* @param target - File path, URL, or I/O callbacks
|
|
79
|
+
*
|
|
78
80
|
* @param options - Output configuration options
|
|
81
|
+
*
|
|
79
82
|
* @returns Opened media output instance
|
|
80
83
|
*
|
|
81
84
|
* @throws {Error} If format required for custom I/O
|
|
@@ -193,6 +196,116 @@ export class MediaOutput {
|
|
|
193
196
|
throw error;
|
|
194
197
|
}
|
|
195
198
|
}
|
|
199
|
+
/**
|
|
200
|
+
* Open media output for writing synchronously.
|
|
201
|
+
* Synchronous version of open.
|
|
202
|
+
*
|
|
203
|
+
* Creates and configures output context for muxing.
|
|
204
|
+
* Automatically creates directories for file output.
|
|
205
|
+
* Supports files, URLs, and custom I/O callbacks.
|
|
206
|
+
*
|
|
207
|
+
* Direct mapping to avformat_alloc_output_context2() and avio_open2().
|
|
208
|
+
*
|
|
209
|
+
* @param target - File path, URL, or I/O callbacks
|
|
210
|
+
*
|
|
211
|
+
* @param options - Output configuration options
|
|
212
|
+
*
|
|
213
|
+
* @returns Opened media output instance
|
|
214
|
+
*
|
|
215
|
+
* @throws {Error} If format required for custom I/O
|
|
216
|
+
*
|
|
217
|
+
* @throws {FFmpegError} If allocation or opening fails
|
|
218
|
+
*
|
|
219
|
+
* @example
|
|
220
|
+
* ```typescript
|
|
221
|
+
* // Create file output
|
|
222
|
+
* using output = MediaOutput.openSync('output.mp4');
|
|
223
|
+
* ```
|
|
224
|
+
*
|
|
225
|
+
* @example
|
|
226
|
+
* ```typescript
|
|
227
|
+
* // Create output with specific format
|
|
228
|
+
* using output = MediaOutput.openSync('output.ts', {
|
|
229
|
+
* format: 'mpegts'
|
|
230
|
+
* });
|
|
231
|
+
* ```
|
|
232
|
+
*
|
|
233
|
+
* @see {@link open} For async version
|
|
234
|
+
*/
|
|
235
|
+
static openSync(target, options) {
|
|
236
|
+
const output = new MediaOutput();
|
|
237
|
+
try {
|
|
238
|
+
if (typeof target === 'string') {
|
|
239
|
+
// File or stream URL - resolve relative paths and create directories
|
|
240
|
+
// Check if it's a URL (starts with protocol://) or a file path
|
|
241
|
+
const isUrl = /^[a-zA-Z][a-zA-Z0-9+.-]*:\/\//.test(target);
|
|
242
|
+
const resolvedTarget = isUrl ? target : resolve(target);
|
|
243
|
+
// Create directory structure for local files (not URLs)
|
|
244
|
+
if (!isUrl && target !== '') {
|
|
245
|
+
const dir = dirname(resolvedTarget);
|
|
246
|
+
mkdirSync(dir, { recursive: true });
|
|
247
|
+
}
|
|
248
|
+
// Allocate output context
|
|
249
|
+
const ret = output.formatContext.allocOutputContext2(null, options?.format ?? null, resolvedTarget === '' ? null : resolvedTarget);
|
|
250
|
+
FFmpegError.throwIfError(ret, 'Failed to allocate output context');
|
|
251
|
+
// Check if we need to open IO
|
|
252
|
+
const oformat = output.formatContext.oformat;
|
|
253
|
+
if (resolvedTarget && oformat && !(oformat.flags & AVFMT_NOFILE)) {
|
|
254
|
+
// For file-based formats, we need to open the file using avio_open2
|
|
255
|
+
// FFmpeg will manage the AVIOContext internally
|
|
256
|
+
output.ioContext = new IOContext();
|
|
257
|
+
const openRet = output.ioContext.open2Sync(resolvedTarget, AVIO_FLAG_WRITE);
|
|
258
|
+
FFmpegError.throwIfError(openRet, `Failed to open output file: ${resolvedTarget}`);
|
|
259
|
+
output.formatContext.pb = output.ioContext;
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
else {
|
|
263
|
+
// Custom IO with callbacks - format is required
|
|
264
|
+
if (!options?.format) {
|
|
265
|
+
throw new Error('Format must be specified for custom IO');
|
|
266
|
+
}
|
|
267
|
+
const ret = output.formatContext.allocOutputContext2(null, options.format, null);
|
|
268
|
+
FFmpegError.throwIfError(ret, 'Failed to allocate output context');
|
|
269
|
+
// Setup custom IO with callbacks
|
|
270
|
+
output.ioContext = new IOContext();
|
|
271
|
+
output.ioContext.allocContextWithCallbacks(options.bufferSize ?? 4096, 1, target.read, target.write, target.seek);
|
|
272
|
+
output.ioContext.maxPacketSize = options.bufferSize ?? 4096;
|
|
273
|
+
output.formatContext.pb = output.ioContext;
|
|
274
|
+
output.formatContext.flags = AVFMT_FLAG_CUSTOM_IO;
|
|
275
|
+
}
|
|
276
|
+
return output;
|
|
277
|
+
}
|
|
278
|
+
catch (error) {
|
|
279
|
+
// Cleanup on error
|
|
280
|
+
if (output.ioContext) {
|
|
281
|
+
try {
|
|
282
|
+
const isCustomIO = (output.formatContext.flags & AVFMT_FLAG_CUSTOM_IO) !== 0;
|
|
283
|
+
if (isCustomIO) {
|
|
284
|
+
// Clear the pb reference first
|
|
285
|
+
output.formatContext.pb = null;
|
|
286
|
+
// For custom IO with callbacks, free the context
|
|
287
|
+
output.ioContext.freeContext();
|
|
288
|
+
}
|
|
289
|
+
else {
|
|
290
|
+
// For file-based IO, close the file handle
|
|
291
|
+
output.ioContext.closepSync();
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
catch {
|
|
295
|
+
// Ignore errors
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
if (output.formatContext) {
|
|
299
|
+
try {
|
|
300
|
+
output.formatContext.freeContext();
|
|
301
|
+
}
|
|
302
|
+
catch {
|
|
303
|
+
// Ignore errors
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
throw error;
|
|
307
|
+
}
|
|
308
|
+
}
|
|
196
309
|
/**
|
|
197
310
|
* Add a stream to the output.
|
|
198
311
|
*
|
|
@@ -207,8 +320,11 @@ export class MediaOutput {
|
|
|
207
320
|
* Direct mapping to avformat_new_stream().
|
|
208
321
|
*
|
|
209
322
|
* @param source - Encoder or stream to add
|
|
323
|
+
*
|
|
210
324
|
* @param options - Stream configuration options
|
|
325
|
+
*
|
|
211
326
|
* @param options.timeBase - Optional custom timebase for the stream
|
|
327
|
+
*
|
|
212
328
|
* @returns Stream index for packet writing
|
|
213
329
|
*
|
|
214
330
|
* @throws {Error} If called after packets have been written or output closed
|
|
@@ -290,7 +406,9 @@ export class MediaOutput {
|
|
|
290
406
|
* Direct mapping to avformat_write_header() (on first packet) and av_interleaved_write_frame().
|
|
291
407
|
*
|
|
292
408
|
* @param packet - Packet to write
|
|
409
|
+
*
|
|
293
410
|
* @param streamIndex - Target stream index
|
|
411
|
+
*
|
|
294
412
|
* @throws {Error} If stream invalid or encoder not initialized
|
|
295
413
|
*
|
|
296
414
|
* @throws {FFmpegError} If write fails
|
|
@@ -399,6 +517,129 @@ export class MediaOutput {
|
|
|
399
517
|
// Write the current packet
|
|
400
518
|
await write(packet);
|
|
401
519
|
}
|
|
520
|
+
/**
|
|
521
|
+
* Write a packet to the output synchronously.
|
|
522
|
+
* Synchronous version of writePacket.
|
|
523
|
+
*
|
|
524
|
+
* Writes muxed packet to the specified stream.
|
|
525
|
+
* Automatically handles:
|
|
526
|
+
* - Stream initialization on first packet (lazy initialization)
|
|
527
|
+
* - Codec parameter configuration from encoder or input stream
|
|
528
|
+
* - Header writing on first packet
|
|
529
|
+
* - Timestamp rescaling between source and output timebases
|
|
530
|
+
*
|
|
531
|
+
* For encoder sources, the encoder must have processed at least one frame
|
|
532
|
+
* before packets can be written (encoder must be initialized).
|
|
533
|
+
*
|
|
534
|
+
* Direct mapping to avformat_write_header() (on first packet) and av_interleaved_write_frame().
|
|
535
|
+
*
|
|
536
|
+
* @param packet - Packet to write
|
|
537
|
+
*
|
|
538
|
+
* @param streamIndex - Target stream index
|
|
539
|
+
*
|
|
540
|
+
* @throws {Error} If stream invalid or encoder not initialized
|
|
541
|
+
*
|
|
542
|
+
* @throws {FFmpegError} If write fails
|
|
543
|
+
*
|
|
544
|
+
* @example
|
|
545
|
+
* ```typescript
|
|
546
|
+
* // Write encoded packet - header written automatically on first packet
|
|
547
|
+
* const packet = encoder.encodeSync(frame);
|
|
548
|
+
* if (packet) {
|
|
549
|
+
* output.writePacketSync(packet, videoIdx);
|
|
550
|
+
* packet.free();
|
|
551
|
+
* }
|
|
552
|
+
* ```
|
|
553
|
+
*
|
|
554
|
+
* @example
|
|
555
|
+
* ```typescript
|
|
556
|
+
* // Stream copy with packet processing
|
|
557
|
+
* for (const packet of input.packetsSync()) {
|
|
558
|
+
* if (packet.streamIndex === inputVideoIdx) {
|
|
559
|
+
* output.writePacketSync(packet, outputVideoIdx);
|
|
560
|
+
* }
|
|
561
|
+
* packet.free();
|
|
562
|
+
* }
|
|
563
|
+
* ```
|
|
564
|
+
*
|
|
565
|
+
* @see {@link writePacket} For async version
|
|
566
|
+
*/
|
|
567
|
+
writePacketSync(packet, streamIndex) {
|
|
568
|
+
if (this.isClosed) {
|
|
569
|
+
throw new Error('MediaOutput is closed');
|
|
570
|
+
}
|
|
571
|
+
if (this.trailerWritten) {
|
|
572
|
+
throw new Error('Cannot write packets after output is finalized');
|
|
573
|
+
}
|
|
574
|
+
if (!this.streams.get(streamIndex)) {
|
|
575
|
+
throw new Error(`Invalid stream index: ${streamIndex}`);
|
|
576
|
+
}
|
|
577
|
+
// Initialize any encoder streams that are ready
|
|
578
|
+
for (const streamInfo of this.streams.values()) {
|
|
579
|
+
if (!streamInfo.initialized && streamInfo.source instanceof Encoder) {
|
|
580
|
+
const encoder = streamInfo.source;
|
|
581
|
+
const codecContext = encoder.getCodecContext();
|
|
582
|
+
// Skip if encoder not ready yet
|
|
583
|
+
if (!encoder.isEncoderInitialized || !codecContext) {
|
|
584
|
+
continue;
|
|
585
|
+
}
|
|
586
|
+
// This encoder is ready, initialize it now
|
|
587
|
+
const ret = streamInfo.stream.codecpar.fromContext(codecContext);
|
|
588
|
+
FFmpegError.throwIfError(ret, 'Failed to copy codec parameters from encoder');
|
|
589
|
+
// Update the timebase from the encoder
|
|
590
|
+
streamInfo.sourceTimeBase = codecContext.timeBase;
|
|
591
|
+
// Output stream uses encoder's timebase (or custom if specified)
|
|
592
|
+
streamInfo.stream.timeBase = streamInfo.timeBase ? new Rational(streamInfo.timeBase.num, streamInfo.timeBase.den) : codecContext.timeBase;
|
|
593
|
+
// Mark as initialized
|
|
594
|
+
streamInfo.initialized = true;
|
|
595
|
+
}
|
|
596
|
+
}
|
|
597
|
+
const streamInfo = this.streams.get(streamIndex);
|
|
598
|
+
// Check if any streams are still uninitialized
|
|
599
|
+
const uninitialized = Array.from(this.streams.values()).some((s) => !s.initialized);
|
|
600
|
+
if (uninitialized) {
|
|
601
|
+
const clonedPacket = packet.clone();
|
|
602
|
+
packet.free();
|
|
603
|
+
if (clonedPacket) {
|
|
604
|
+
streamInfo.bufferedPackets.push(clonedPacket);
|
|
605
|
+
}
|
|
606
|
+
return;
|
|
607
|
+
}
|
|
608
|
+
// Automatically write header if not written yet
|
|
609
|
+
if (!this.headerWritten) {
|
|
610
|
+
const ret = this.formatContext.writeHeaderSync();
|
|
611
|
+
FFmpegError.throwIfError(ret, 'Failed to write header');
|
|
612
|
+
this.headerWritten = true;
|
|
613
|
+
}
|
|
614
|
+
// Set stream index
|
|
615
|
+
packet.streamIndex = streamIndex;
|
|
616
|
+
const write = (pkt) => {
|
|
617
|
+
// Rescale packet timestamps if source and output timebases differ
|
|
618
|
+
// Note: The stream's timebase may have been changed by writeHeader (e.g., MP4 uses 1/time_scale)
|
|
619
|
+
if (streamInfo.sourceTimeBase) {
|
|
620
|
+
const outputStream = this.formatContext.streams?.[streamIndex];
|
|
621
|
+
if (outputStream) {
|
|
622
|
+
// Only rescale if timebases actually differ
|
|
623
|
+
const srcTb = streamInfo.sourceTimeBase;
|
|
624
|
+
const dstTb = outputStream.timeBase;
|
|
625
|
+
if (srcTb.num !== dstTb.num || srcTb.den !== dstTb.den) {
|
|
626
|
+
pkt.rescaleTs(streamInfo.sourceTimeBase, outputStream.timeBase);
|
|
627
|
+
}
|
|
628
|
+
}
|
|
629
|
+
}
|
|
630
|
+
// Write the packet
|
|
631
|
+
const ret = this.formatContext.interleavedWriteFrameSync(pkt);
|
|
632
|
+
FFmpegError.throwIfError(ret, 'Failed to write packet');
|
|
633
|
+
};
|
|
634
|
+
// Write any buffered packets first
|
|
635
|
+
for (const bufferedPacket of streamInfo.bufferedPackets) {
|
|
636
|
+
write(bufferedPacket);
|
|
637
|
+
bufferedPacket.free();
|
|
638
|
+
}
|
|
639
|
+
streamInfo.bufferedPackets = [];
|
|
640
|
+
// Write the current packet
|
|
641
|
+
write(packet);
|
|
642
|
+
}
|
|
402
643
|
/**
|
|
403
644
|
* Close media output and free resources.
|
|
404
645
|
*
|
|
@@ -477,6 +718,85 @@ export class MediaOutput {
|
|
|
477
718
|
}
|
|
478
719
|
}
|
|
479
720
|
}
|
|
721
|
+
/**
|
|
722
|
+
* Close media output and free resources synchronously.
|
|
723
|
+
* Synchronous version of close.
|
|
724
|
+
*
|
|
725
|
+
* Automatically writes trailer if header was written.
|
|
726
|
+
* Closes the output file and releases all resources.
|
|
727
|
+
* Safe to call multiple times.
|
|
728
|
+
* Automatically called by Symbol.dispose.
|
|
729
|
+
*
|
|
730
|
+
* @example
|
|
731
|
+
* ```typescript
|
|
732
|
+
* const output = MediaOutput.openSync('output.mp4');
|
|
733
|
+
* try {
|
|
734
|
+
* // Use output - trailer written automatically on close
|
|
735
|
+
* } finally {
|
|
736
|
+
* output.closeSync();
|
|
737
|
+
* }
|
|
738
|
+
* ```
|
|
739
|
+
*
|
|
740
|
+
* @see {@link close} For async version
|
|
741
|
+
*/
|
|
742
|
+
closeSync() {
|
|
743
|
+
if (this.isClosed) {
|
|
744
|
+
return;
|
|
745
|
+
}
|
|
746
|
+
this.isClosed = true;
|
|
747
|
+
// Free any buffered packets
|
|
748
|
+
for (const streamInfo of this.streams.values()) {
|
|
749
|
+
// Free any buffered packets
|
|
750
|
+
for (const pkt of streamInfo.bufferedPackets) {
|
|
751
|
+
pkt.free();
|
|
752
|
+
}
|
|
753
|
+
streamInfo.bufferedPackets = [];
|
|
754
|
+
}
|
|
755
|
+
// Try to write trailer if header was written but trailer wasn't
|
|
756
|
+
try {
|
|
757
|
+
if (this.headerWritten && !this.trailerWritten) {
|
|
758
|
+
this.formatContext.writeTrailerSync();
|
|
759
|
+
this.trailerWritten = true;
|
|
760
|
+
}
|
|
761
|
+
}
|
|
762
|
+
catch {
|
|
763
|
+
// Ignore errors
|
|
764
|
+
}
|
|
765
|
+
// Clear pb reference first to prevent use-after-free
|
|
766
|
+
if (this.ioContext) {
|
|
767
|
+
this.formatContext.pb = null;
|
|
768
|
+
}
|
|
769
|
+
// Determine if this is custom IO before freeing format context
|
|
770
|
+
const isCustomIO = (this.formatContext.flags & AVFMT_FLAG_CUSTOM_IO) !== 0;
|
|
771
|
+
// For file-based IO, close the file handle via closep
|
|
772
|
+
// For custom IO, the context will be freed below
|
|
773
|
+
if (this.ioContext && !isCustomIO) {
|
|
774
|
+
try {
|
|
775
|
+
this.ioContext.closepSync();
|
|
776
|
+
}
|
|
777
|
+
catch {
|
|
778
|
+
// Ignore errors
|
|
779
|
+
}
|
|
780
|
+
}
|
|
781
|
+
// Free format context
|
|
782
|
+
if (this.formatContext) {
|
|
783
|
+
try {
|
|
784
|
+
this.formatContext.freeContext();
|
|
785
|
+
}
|
|
786
|
+
catch {
|
|
787
|
+
// Ignore errors
|
|
788
|
+
}
|
|
789
|
+
}
|
|
790
|
+
// Now free custom IO context if present
|
|
791
|
+
if (this.ioContext && isCustomIO) {
|
|
792
|
+
try {
|
|
793
|
+
this.ioContext.freeContext();
|
|
794
|
+
}
|
|
795
|
+
catch {
|
|
796
|
+
// Ignore errors
|
|
797
|
+
}
|
|
798
|
+
}
|
|
799
|
+
}
|
|
480
800
|
/**
|
|
481
801
|
* Get underlying format context.
|
|
482
802
|
*
|
|
@@ -508,5 +828,24 @@ export class MediaOutput {
|
|
|
508
828
|
async [Symbol.asyncDispose]() {
|
|
509
829
|
await this.close();
|
|
510
830
|
}
|
|
831
|
+
/**
|
|
832
|
+
* Dispose of media output synchronously.
|
|
833
|
+
*
|
|
834
|
+
* Implements Disposable interface for automatic cleanup.
|
|
835
|
+
* Equivalent to calling closeSync().
|
|
836
|
+
*
|
|
837
|
+
* @example
|
|
838
|
+
* ```typescript
|
|
839
|
+
* {
|
|
840
|
+
* using output = MediaOutput.openSync('output.mp4');
|
|
841
|
+
* // Use output...
|
|
842
|
+
* } // Automatically closed
|
|
843
|
+
* ```
|
|
844
|
+
*
|
|
845
|
+
* @see {@link closeSync} For manual cleanup
|
|
846
|
+
*/
|
|
847
|
+
[Symbol.dispose]() {
|
|
848
|
+
this.closeSync();
|
|
849
|
+
}
|
|
511
850
|
}
|
|
512
851
|
//# sourceMappingURL=media-output.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media-output.js","sourceRoot":"","sources":["../../src/api/media-output.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"media-output.js","sourceRoot":"","sources":["../../src/api/media-output.ts"],"names":[],"mappings":"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"}
|