node-av 5.2.0-beta.2 → 5.2.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 +120 -66
- package/build_mac_local.sh +69 -0
- package/dist/api/bitstream-filter.d.ts +20 -1
- package/dist/api/bitstream-filter.js +11 -1
- package/dist/api/bitstream-filter.js.map +1 -1
- package/dist/api/decoder.d.ts +98 -2
- package/dist/api/decoder.js +17 -2
- package/dist/api/decoder.js.map +1 -1
- package/dist/api/demuxer.d.ts +233 -4
- package/dist/api/demuxer.js +184 -21
- package/dist/api/demuxer.js.map +1 -1
- package/dist/api/device.d.ts +586 -0
- package/dist/api/device.js +961 -0
- package/dist/api/device.js.map +1 -0
- package/dist/api/encoder.d.ts +101 -2
- package/dist/api/encoder.js +17 -2
- package/dist/api/encoder.js.map +1 -1
- package/dist/api/filter-complex.d.ts +54 -2
- package/dist/api/filter-complex.js +1 -1
- package/dist/api/filter-complex.js.map +1 -1
- package/dist/api/filter.d.ts +95 -1
- package/dist/api/filter.js +12 -2
- package/dist/api/filter.js.map +1 -1
- package/dist/api/fmp4-stream.d.ts +5 -4
- package/dist/api/fmp4-stream.js +19 -7
- package/dist/api/fmp4-stream.js.map +1 -1
- package/dist/api/hardware.d.ts +17 -1
- package/dist/api/hardware.js +3 -4
- package/dist/api/hardware.js.map +1 -1
- package/dist/api/index.d.ts +12 -12
- package/dist/api/index.js +2 -0
- package/dist/api/index.js.map +1 -1
- package/dist/api/io-stream.d.ts +188 -6
- package/dist/api/io-stream.js +167 -16
- package/dist/api/io-stream.js.map +1 -1
- package/dist/api/muxer.d.ts +184 -26
- package/dist/api/muxer.js +79 -15
- package/dist/api/muxer.js.map +1 -1
- package/dist/api/pipeline.d.ts +75 -21
- package/dist/api/pipeline.js +40 -12
- package/dist/api/pipeline.js.map +1 -1
- package/dist/api/rtp-stream.d.ts +15 -4
- package/dist/api/rtp-stream.js +29 -7
- package/dist/api/rtp-stream.js.map +1 -1
- package/dist/api/utilities/index.d.ts +2 -2
- package/dist/api/utilities/index.js +2 -2
- package/dist/api/utilities/index.js.map +1 -1
- package/dist/api/webrtc-stream.d.ts +9 -9
- package/dist/api/webrtc-stream.js +26 -12
- package/dist/api/webrtc-stream.js.map +1 -1
- package/dist/constants/channel-layouts.d.ts +2 -0
- package/dist/constants/channel-layouts.js +22 -20
- package/dist/constants/channel-layouts.js.map +1 -1
- package/dist/constants/constants.d.ts +10 -5
- package/dist/constants/constants.js +13 -8
- package/dist/constants/constants.js.map +1 -1
- package/dist/constants/decoders.d.ts +1 -0
- package/dist/constants/decoders.js +2 -1
- package/dist/constants/decoders.js.map +1 -1
- package/dist/constants/encoders.d.ts +4 -2
- package/dist/constants/encoders.js +6 -4
- package/dist/constants/encoders.js.map +1 -1
- package/dist/ffmpeg/index.js +3 -4
- package/dist/ffmpeg/index.js.map +1 -1
- package/dist/lib/binding.d.ts +2 -1
- package/dist/lib/binding.js +3 -4
- package/dist/lib/binding.js.map +1 -1
- package/dist/lib/codec.d.ts +10 -1
- package/dist/lib/codec.js.map +1 -1
- package/dist/lib/device.d.ts +291 -0
- package/dist/lib/device.js +324 -0
- package/dist/lib/device.js.map +1 -0
- package/dist/lib/filter.d.ts +8 -1
- package/dist/lib/filter.js.map +1 -1
- package/dist/lib/format-context.d.ts +17 -2
- package/dist/lib/format-context.js.map +1 -1
- package/dist/lib/frame-utils.d.ts +34 -1
- package/dist/lib/frame-utils.js.map +1 -1
- package/dist/lib/frame.d.ts +23 -1
- package/dist/lib/frame.js.map +1 -1
- package/dist/lib/index.d.ts +7 -6
- package/dist/lib/index.js +3 -1
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/io-context.d.ts +16 -1
- package/dist/lib/io-context.js +17 -0
- package/dist/lib/io-context.js.map +1 -1
- package/dist/lib/log.d.ts +6 -1
- package/dist/lib/log.js.map +1 -1
- package/dist/lib/native-types.d.ts +62 -11
- package/dist/lib/native-types.js +0 -9
- package/dist/lib/native-types.js.map +1 -1
- package/dist/lib/types.d.ts +2 -118
- package/dist/lib/types.js +0 -6
- package/dist/lib/types.js.map +1 -1
- package/dist/utils/electron.d.ts +49 -0
- package/dist/utils/electron.js +63 -0
- package/dist/utils/electron.js.map +1 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.js +5 -0
- package/dist/utils/index.js.map +1 -0
- package/package.json +14 -14
- package/BENCHMARK.md +0 -113
- package/dist/api/types.d.ts +0 -829
- package/dist/api/types.js +0 -2
- package/dist/api/types.js.map +0 -1
package/README.md
CHANGED
|
@@ -22,22 +22,23 @@ Native Node.js bindings for FFmpeg with full TypeScript support. Provides direct
|
|
|
22
22
|
- [Low-Level API](#low-level-api)
|
|
23
23
|
- [High-Level API](#high-level-api)
|
|
24
24
|
- [Pipeline API](#pipeline-api)
|
|
25
|
-
- [Key Features](#key-features)
|
|
26
25
|
- [Hardware Acceleration](#hardware-acceleration)
|
|
27
26
|
- [Auto-Detection](#auto-detection)
|
|
28
27
|
- [Specific Hardware](#specific-hardware)
|
|
29
|
-
- [Imports and Tree Shaking](#imports-and-tree-shaking)
|
|
30
28
|
- [Stream Processing](#stream-processing)
|
|
31
|
-
- [From Files](#from-files)
|
|
32
|
-
- [From Network](#from-network)
|
|
29
|
+
- [From Files or Network](#from-files-or-network)
|
|
33
30
|
- [From Buffers](#from-buffers)
|
|
34
31
|
- [Raw Media Processing](#raw-media-processing)
|
|
35
|
-
- [
|
|
32
|
+
- [Device Capture](#device-capture)
|
|
36
33
|
- [FFmpeg Binary Access](#ffmpeg-binary-access)
|
|
34
|
+
- [Resource Management](#resource-management)
|
|
35
|
+
- [Imports and Tree Shaking](#imports-and-tree-shaking)
|
|
36
|
+
- [Key Features](#key-features)
|
|
37
37
|
- [Performance](#performance)
|
|
38
38
|
- [Benchmarks](#benchmarks)
|
|
39
39
|
- [Sync vs Async Operations](#sync-vs-async-operations)
|
|
40
40
|
- [Memory Safety Considerations](#memory-safety-considerations)
|
|
41
|
+
- [Electron](#electron)
|
|
41
42
|
- [Examples](#examples)
|
|
42
43
|
- [Prebuilt Binaries](#prebuilt-binaries)
|
|
43
44
|
- [Troubleshooting](#troubleshooting)
|
|
@@ -221,24 +222,6 @@ const control = pipeline(input, decoder, encoder, output);
|
|
|
221
222
|
await control.completion;
|
|
222
223
|
```
|
|
223
224
|
|
|
224
|
-
## Key Features
|
|
225
|
-
|
|
226
|
-
Beyond basic transcoding, NodeAV provides advanced media processing capabilities:
|
|
227
|
-
|
|
228
|
-
**Speech Recognition with Whisper**
|
|
229
|
-
Integrate automatic speech-to-text transcription using OpenAI's Whisper model through the whisper.cpp implementation. The library handles automatic model downloading from HuggingFace, supports multiple model sizes (tiny, base, small, medium, large) for different accuracy/performance tradeoffs, and provides hardware-accelerated inference through Metal (macOS), Vulkan (cross-platform), or OpenCL backends. Transcription results include precise timestamps and can be processed in real-time from any audio source.
|
|
230
|
-
|
|
231
|
-
**Advanced Video Filtering with FilterComplexAPI**
|
|
232
|
-
Build sophisticated video processing pipelines using FFmpeg's complete filter ecosystem. The FilterComplexAPI provides direct access to complex filtergraphs with multiple inputs and outputs, enabling advanced operations like picture-in-picture overlays, multi-stream composition (side-by-side, grid layouts), real-time video effects, and custom processing chains. All filters support hardware acceleration where available, and filter configurations can be dynamically constructed based on runtime requirements.
|
|
233
|
-
|
|
234
|
-
**Browser Streaming**
|
|
235
|
-
Stream any media source directly to web browsers through fragmented MP4 (fMP4) or WebRTC protocols. The library can process inputs from RTSP cameras, local files, network streams, or custom sources and package them for browser consumption with minimal latency. Complete examples demonstrate both Media Source Extensions (MSE) based playback for on-demand content and WebRTC integration for real-time streaming scenarios.
|
|
236
|
-
|
|
237
|
-
**RTSP Backchannel / Talkback**
|
|
238
|
-
Implements bidirectional RTSP communication for IP camera integration. The library provides native support for RTSP backchannel streams, enabling audio transmission to camera devices. Transport is handled automatically with support for both TCP (interleaved mode) and UDP protocols, with proper RTP packet formatting and stream synchronization.
|
|
239
|
-
|
|
240
|
-
See the [Examples](#examples) section for complete implementations.
|
|
241
|
-
|
|
242
225
|
## Hardware Acceleration
|
|
243
226
|
|
|
244
227
|
The library supports all hardware acceleration methods available in FFmpeg. The specific hardware types available depend on your FFmpeg build and system configuration.
|
|
@@ -275,37 +258,16 @@ const cuda = HardwareContext.create(AV_HWDEVICE_TYPE_CUDA);
|
|
|
275
258
|
const vaapi = HardwareContext.create(AV_HWDEVICE_TYPE_VAAPI, '/dev/dri/renderD128');
|
|
276
259
|
```
|
|
277
260
|
|
|
278
|
-
## Imports and Tree Shaking
|
|
279
|
-
|
|
280
|
-
The library provides multiple entry points for optimal tree shaking:
|
|
281
|
-
|
|
282
|
-
```typescript
|
|
283
|
-
// High-Level API only - Recommended for most use cases
|
|
284
|
-
import { Muxer, Muxer, Decoder, Encoder } from 'node-av/api';
|
|
285
|
-
|
|
286
|
-
// Low-Level API only - Direct FFmpeg bindings
|
|
287
|
-
import { FormatContext, CodecContext, Frame, Packet } from 'node-av/lib';
|
|
288
|
-
|
|
289
|
-
// Constants only - When you just need FFmpeg constants
|
|
290
|
-
import { AV_PIX_FMT_YUV420P, AV_CODEC_ID_H264 } from 'node-av/constants';
|
|
291
|
-
|
|
292
|
-
// Channel layouts only - For audio channel configurations
|
|
293
|
-
import { AV_CHANNEL_LAYOUT_STEREO, AV_CHANNEL_LAYOUT_5POINT1 } from 'node-av/layouts';
|
|
294
|
-
|
|
295
|
-
// Default export - Includes everything
|
|
296
|
-
import * as ffmpeg from 'node-av';
|
|
297
|
-
```
|
|
298
|
-
|
|
299
261
|
## Stream Processing
|
|
300
262
|
|
|
301
263
|
### From Files or Network
|
|
302
264
|
|
|
303
265
|
```typescript
|
|
304
|
-
const media = await
|
|
266
|
+
const media = await Demuxer.open('input.mp4');
|
|
305
267
|
|
|
306
268
|
// or
|
|
307
269
|
|
|
308
|
-
const media = await
|
|
270
|
+
const media = await Demuxer.open('rtsp://example.com/stream');
|
|
309
271
|
```
|
|
310
272
|
|
|
311
273
|
### From Buffers
|
|
@@ -314,7 +276,7 @@ const media = await Muxer.open('rtsp://example.com/stream');
|
|
|
314
276
|
import { readFile } from 'fs/promises';
|
|
315
277
|
|
|
316
278
|
const buffer = await readFile('input.mp4');
|
|
317
|
-
const media = await
|
|
279
|
+
const media = await Demuxer.open(buffer);
|
|
318
280
|
```
|
|
319
281
|
|
|
320
282
|
### Custom I/O Callbacks
|
|
@@ -334,7 +296,7 @@ const inputCallbacks: IOInputCallbacks = {
|
|
|
334
296
|
}
|
|
335
297
|
};
|
|
336
298
|
|
|
337
|
-
await using input = await
|
|
299
|
+
await using input = await Demuxer.open(inputCallbacks, {
|
|
338
300
|
format: 'mp4'
|
|
339
301
|
});
|
|
340
302
|
```
|
|
@@ -343,7 +305,7 @@ await using input = await Muxer.open(inputCallbacks, {
|
|
|
343
305
|
|
|
344
306
|
```typescript
|
|
345
307
|
// Raw video input
|
|
346
|
-
const rawVideo = await
|
|
308
|
+
const rawVideo = await Demuxer.open({
|
|
347
309
|
type: 'video',
|
|
348
310
|
input: 'input.yuv',
|
|
349
311
|
width: 1280,
|
|
@@ -353,7 +315,7 @@ const rawVideo = await Muxer.open({
|
|
|
353
315
|
});
|
|
354
316
|
|
|
355
317
|
// Raw audio input
|
|
356
|
-
const rawAudio = await
|
|
318
|
+
const rawAudio = await Demuxer.open({
|
|
357
319
|
type: 'audio',
|
|
358
320
|
input: 'input.pcm',
|
|
359
321
|
sampleRate: 48000,
|
|
@@ -364,27 +326,42 @@ const rawAudio = await Muxer.open({
|
|
|
364
326
|
});
|
|
365
327
|
```
|
|
366
328
|
|
|
367
|
-
##
|
|
329
|
+
## Device Capture
|
|
368
330
|
|
|
369
|
-
|
|
331
|
+
Capture video, audio, and screen content directly from system devices. Platform-specific formats are handled automatically.
|
|
370
332
|
|
|
371
333
|
```typescript
|
|
372
|
-
|
|
373
|
-
{
|
|
374
|
-
await using media = await Muxer.open('input.mp4');
|
|
375
|
-
using decoder = await Decoder.create(media.video());
|
|
376
|
-
// Resources automatically cleaned up at end of scope
|
|
377
|
-
}
|
|
334
|
+
import { DeviceAPI } from 'node-av/api';
|
|
378
335
|
|
|
379
|
-
//
|
|
380
|
-
const
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
336
|
+
// List devices and query capabilities
|
|
337
|
+
const devices = await DeviceAPI.list();
|
|
338
|
+
const modes = await DeviceAPI.modes(devices.find(d => d.type === 'video')!.name);
|
|
339
|
+
|
|
340
|
+
// Camera
|
|
341
|
+
await using camera = await DeviceAPI.openCamera({ videoDevice: 0, width: 1280, height: 720, frameRate: 30 });
|
|
342
|
+
|
|
343
|
+
// Microphone
|
|
344
|
+
await using mic = await DeviceAPI.openMicrophone({ audioDevice: 0, sampleRate: 48000, channels: 2 });
|
|
345
|
+
|
|
346
|
+
// Combined video + audio (macOS/Windows)
|
|
347
|
+
await using device = await DeviceAPI.openDevice({ videoDevice: 0, audioDevice: 0, width: 1280, height: 720, frameRate: 30 });
|
|
348
|
+
|
|
349
|
+
// Screen capture
|
|
350
|
+
await using screen = await DeviceAPI.openScreen({ frameRate: 30, drawMouse: true });
|
|
351
|
+
|
|
352
|
+
// Screen capture with system audio (macOS 13.0+)
|
|
353
|
+
await using screen2 = await DeviceAPI.openScreen({
|
|
354
|
+
frameRate: 30,
|
|
355
|
+
avfoundation: { captureSystemAudio: true, audioSampleRate: 48000, audioChannels: 2 },
|
|
356
|
+
});
|
|
386
357
|
```
|
|
387
358
|
|
|
359
|
+
| Platform | Video | Audio | Screen |
|
|
360
|
+
|----------|-------|-------|--------|
|
|
361
|
+
| macOS | AVFoundation | AVFoundation | AVFoundation (ScreenCaptureKit) |
|
|
362
|
+
| Linux | V4L2 | ALSA | x11grab |
|
|
363
|
+
| Windows | DirectShow | DirectShow | GDIGrab |
|
|
364
|
+
|
|
388
365
|
## FFmpeg Binary Access
|
|
389
366
|
|
|
390
367
|
Need direct access to the FFmpeg binary? The library provides an easy way to get FFmpeg binaries that automatically downloads and manages platform-specific builds.
|
|
@@ -423,6 +400,66 @@ async function convertVideo(input: string, output: string) {
|
|
|
423
400
|
|
|
424
401
|
The FFmpeg binary is automatically downloaded during installation from GitHub releases and matches the same build used by the native bindings.
|
|
425
402
|
|
|
403
|
+
## Resource Management
|
|
404
|
+
|
|
405
|
+
The library supports automatic resource cleanup using the Disposable pattern:
|
|
406
|
+
|
|
407
|
+
```typescript
|
|
408
|
+
// Automatic cleanup with 'using'
|
|
409
|
+
{
|
|
410
|
+
await using media = await Demuxer.open('input.mp4');
|
|
411
|
+
using decoder = await Decoder.create(media.video());
|
|
412
|
+
// Resources automatically cleaned up at end of scope
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
// Manual cleanup
|
|
416
|
+
const media = await Demuxer.open('input.mp4');
|
|
417
|
+
try {
|
|
418
|
+
// Process media
|
|
419
|
+
} finally {
|
|
420
|
+
await media.close();
|
|
421
|
+
}
|
|
422
|
+
```
|
|
423
|
+
|
|
424
|
+
## Imports and Tree Shaking
|
|
425
|
+
|
|
426
|
+
The library provides multiple entry points for optimal tree shaking:
|
|
427
|
+
|
|
428
|
+
```typescript
|
|
429
|
+
// High-Level API only - Recommended for most use cases
|
|
430
|
+
import { Demuxer, Muxer, Decoder, Encoder } from 'node-av/api';
|
|
431
|
+
|
|
432
|
+
// Low-Level API only - Direct FFmpeg bindings
|
|
433
|
+
import { FormatContext, CodecContext, Frame, Packet } from 'node-av/lib';
|
|
434
|
+
|
|
435
|
+
// Constants only - When you just need FFmpeg constants
|
|
436
|
+
import { AV_PIX_FMT_YUV420P, AV_CODEC_ID_H264 } from 'node-av/constants';
|
|
437
|
+
|
|
438
|
+
// Channel layouts only - For audio channel configurations
|
|
439
|
+
import { AV_CHANNEL_LAYOUT_STEREO, AV_CHANNEL_LAYOUT_5POINT1 } from 'node-av/layouts';
|
|
440
|
+
|
|
441
|
+
// Default export - Includes everything
|
|
442
|
+
import * as ffmpeg from 'node-av';
|
|
443
|
+
```
|
|
444
|
+
|
|
445
|
+
## Key Features
|
|
446
|
+
|
|
447
|
+
Beyond basic transcoding, NodeAV provides advanced media processing capabilities:
|
|
448
|
+
|
|
449
|
+
**Speech Recognition with Whisper**
|
|
450
|
+
Integrate automatic speech-to-text transcription using OpenAI's Whisper model through the whisper.cpp implementation. The library handles automatic model downloading from HuggingFace, supports multiple model sizes (tiny, base, small, medium, large) for different accuracy/performance tradeoffs, and provides hardware-accelerated inference through Metal (macOS), Vulkan (cross-platform), or OpenCL backends. Transcription results include precise timestamps and can be processed in real-time from any audio source.
|
|
451
|
+
|
|
452
|
+
**Advanced Video Filtering with FilterComplexAPI**
|
|
453
|
+
Build sophisticated video processing pipelines using FFmpeg's complete filter ecosystem. The FilterComplexAPI provides direct access to complex filtergraphs with multiple inputs and outputs, enabling advanced operations like picture-in-picture overlays, multi-stream composition (side-by-side, grid layouts), real-time video effects, and custom processing chains. All filters support hardware acceleration where available, and filter configurations can be dynamically constructed based on runtime requirements.
|
|
454
|
+
|
|
455
|
+
**Browser Streaming**
|
|
456
|
+
Stream any media source directly to web browsers through fragmented MP4 (fMP4) or WebRTC protocols. The library can process inputs from RTSP cameras, local files, network streams, or custom sources and package them for browser consumption with minimal latency. Complete examples demonstrate both Media Source Extensions (MSE) based playback for on-demand content and WebRTC integration for real-time streaming scenarios.
|
|
457
|
+
|
|
458
|
+
**RTSP Backchannel / Talkback**
|
|
459
|
+
Implements bidirectional RTSP communication for IP camera integration. The library provides native support for RTSP backchannel streams, enabling audio transmission to camera devices. Transport is handled automatically with support for both TCP (interleaved mode) and UDP protocols, with proper RTP packet formatting and stream synchronization.
|
|
460
|
+
|
|
461
|
+
See the [Examples](#examples) section for complete implementations.
|
|
462
|
+
|
|
426
463
|
## Performance
|
|
427
464
|
|
|
428
465
|
NodeAV executes all media operations directly through FFmpeg's native C libraries. The Node.js bindings add minimal overhead - mostly just the JavaScript-to-C boundary crossings. During typical operations like transcoding or filtering, most processing time is spent in FFmpeg's optimized C code.
|
|
@@ -460,13 +497,31 @@ The key difference: Async methods don't block the Node.js event loop, allowing o
|
|
|
460
497
|
|
|
461
498
|
NodeAV provides direct bindings to FFmpeg's C APIs, which work with raw memory pointers. The high-level API adds safety abstractions and automatic resource management, but incorrect usage can still cause crashes. Common issues include mismatched video dimensions, incompatible pixel formats, or improper frame buffer handling. The library validates parameters where possible, but can't guarantee complete memory safety without limiting functionality. When using the low-level API, pay attention to parameter consistency, resource cleanup, and format compatibility. Following the documented patterns helps avoid memory-related issues.
|
|
462
499
|
|
|
500
|
+
## Electron
|
|
501
|
+
|
|
502
|
+
NodeAV fully supports Electron applications. The prebuilt binaries are ABI-compatible with Electron, so no native rebuild is required during packaging. Both the native bindings and the bundled FFmpeg CLI binaries work seamlessly within Electron's main process.
|
|
503
|
+
|
|
504
|
+
Two complete examples are available: one using [Electron Forge](https://github.com/seydx/node-av/tree/main/examples/electron/forge) and one using [Electron Builder](https://github.com/seydx/node-av/tree/main/examples/electron/builder).
|
|
505
|
+
|
|
506
|
+
If you encounter module resolution errors like `Cannot find module 'lib/binary-stream'`, add this override to your project's `package.json`:
|
|
507
|
+
|
|
508
|
+
```json
|
|
509
|
+
{
|
|
510
|
+
"overrides": {
|
|
511
|
+
"@shinyoshiaki/binary-data": "npm:@seydx/binary-data@0.6.2"
|
|
512
|
+
}
|
|
513
|
+
}
|
|
514
|
+
```
|
|
515
|
+
|
|
463
516
|
## Examples
|
|
464
517
|
|
|
465
518
|
| Example | FFmpeg | Low-Level API | High-Level API |
|
|
466
519
|
|---------|--------|---------------|----------------|
|
|
467
520
|
| `browser-fmp4` | | | [✓](https://github.com/seydx/node-av/tree/main/examples/browser/fmp4) |
|
|
468
521
|
| `browser-webrtc` | | | [✓](https://github.com/seydx/node-av/tree/main/examples/browser/webrtc) |
|
|
522
|
+
| `api-abort-signal` | | | [✓](https://github.com/seydx/node-av/tree/main/examples/api-abort-signal.ts) |
|
|
469
523
|
| `api-dash` | | | [✓](https://github.com/seydx/node-av/tree/main/examples/api-dash.ts) |
|
|
524
|
+
| `api-device-capture` | | | [✓](https://github.com/seydx/node-av/tree/main/examples/api-device-capture.ts) |
|
|
470
525
|
| `api-encode-decode` | | | [✓](https://github.com/seydx/node-av/tree/main/examples/api-encode-decode.ts) |
|
|
471
526
|
| `api-filter-complex` | | | [✓](https://github.com/seydx/node-av/tree/main/examples/api-filter-complex.ts) |
|
|
472
527
|
| `api-filter-complex-grid` | | | [✓](https://github.com/seydx/node-av/tree/main/examples/api-filter-complex-grid.ts) |
|
|
@@ -519,7 +574,6 @@ NodeAV provides direct bindings to FFmpeg's C APIs, which work with raw memory p
|
|
|
519
574
|
| `transcode-aac` | [✓](https://github.com/FFmpeg/FFmpeg/tree/master/doc/examples/transcode_aac.c) | [✓](https://github.com/seydx/node-av/tree/main/examples/transcode-aac.ts) | |
|
|
520
575
|
| `transcode` | [✓](https://github.com/FFmpeg/FFmpeg/tree/master/doc/examples/transcode.c) | [✓](https://github.com/seydx/node-av/tree/main/examples/transcode.ts) | |
|
|
521
576
|
|
|
522
|
-
|
|
523
577
|
## Prebuilt Binaries
|
|
524
578
|
|
|
525
579
|
Prebuilt binaries are available for multiple platforms:
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
set -e
|
|
3
|
+
|
|
4
|
+
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
5
|
+
BUILDER_DIR="$SCRIPT_DIR/externals/jellyfin-ffmpeg/builder"
|
|
6
|
+
BUILD_DIR="$BUILDER_DIR/build"
|
|
7
|
+
|
|
8
|
+
echo ""
|
|
9
|
+
echo "=== FFmpeg Local Build ==="
|
|
10
|
+
echo ""
|
|
11
|
+
echo " 1) Full build (clean + dependencies + FFmpeg)"
|
|
12
|
+
echo " 2) FFmpeg only (skip dependency builds)"
|
|
13
|
+
echo ""
|
|
14
|
+
read -rp "Choose [1/2]: " choice
|
|
15
|
+
|
|
16
|
+
case "$choice" in
|
|
17
|
+
1)
|
|
18
|
+
echo ""
|
|
19
|
+
echo "=> Full build selected. Cleaning build + prefix directories..."
|
|
20
|
+
rm -rf "$BUILD_DIR"
|
|
21
|
+
sudo rm -rf /opt/ffbuild/prefix
|
|
22
|
+
SKIP_BUILD=""
|
|
23
|
+
;;
|
|
24
|
+
2)
|
|
25
|
+
echo ""
|
|
26
|
+
echo "=> FFmpeg-only build selected. Skipping dependencies..."
|
|
27
|
+
SKIP_BUILD="--skip-build"
|
|
28
|
+
;;
|
|
29
|
+
*)
|
|
30
|
+
echo "Invalid choice."
|
|
31
|
+
exit 1
|
|
32
|
+
;;
|
|
33
|
+
esac
|
|
34
|
+
|
|
35
|
+
# Ensure submodules are initialized
|
|
36
|
+
if [ ! -f "$SCRIPT_DIR/externals/jellyfin-ffmpeg/configure" ]; then
|
|
37
|
+
echo "=> Initializing git submodules..."
|
|
38
|
+
git -C "$SCRIPT_DIR" submodule update --init --recursive
|
|
39
|
+
fi
|
|
40
|
+
|
|
41
|
+
# Log everything to terminal and file
|
|
42
|
+
LOG_FILE="$SCRIPT_DIR/ffmpeg_build.log"
|
|
43
|
+
exec > >(tee "$LOG_FILE") 2>&1
|
|
44
|
+
|
|
45
|
+
# Ensure /opt/ffbuild exists with correct permissions
|
|
46
|
+
sudo mkdir -p /opt/ffbuild/prefix
|
|
47
|
+
sudo chown -R "$(whoami):staff" /opt/ffbuild
|
|
48
|
+
sudo chmod -R 755 /opt/ffbuild
|
|
49
|
+
|
|
50
|
+
cd "$SCRIPT_DIR"
|
|
51
|
+
|
|
52
|
+
# Apply FFmpeg patches (skips if already applied)
|
|
53
|
+
node scripts/patch-ffmpeg.js
|
|
54
|
+
|
|
55
|
+
cd "$BUILDER_DIR"
|
|
56
|
+
|
|
57
|
+
# Run Jellyfin build script
|
|
58
|
+
./buildmac.sh arm64 $SKIP_BUILD
|
|
59
|
+
|
|
60
|
+
# The build script uses /ffbuild/prefix but we need /opt/ffbuild/prefix
|
|
61
|
+
cd ..
|
|
62
|
+
make install DESTDIR="" prefix="/opt/ffbuild/prefix"
|
|
63
|
+
|
|
64
|
+
# Fix permissions after install
|
|
65
|
+
sudo chown -R "$(whoami):staff" /opt/ffbuild
|
|
66
|
+
|
|
67
|
+
cd "$SCRIPT_DIR"
|
|
68
|
+
|
|
69
|
+
# npm run build:native
|
|
@@ -2,7 +2,25 @@ import { Packet } from '../lib/packet.js';
|
|
|
2
2
|
import { Muxer } from './muxer.js';
|
|
3
3
|
import { Scheduler, SchedulerControl } from './utilities/scheduler.js';
|
|
4
4
|
import type { Stream } from '../lib/stream.js';
|
|
5
|
-
|
|
5
|
+
/**
|
|
6
|
+
* Options for bitstream filter creation.
|
|
7
|
+
*/
|
|
8
|
+
export interface BitstreamFilterOptions {
|
|
9
|
+
/**
|
|
10
|
+
* Filter-specific options.
|
|
11
|
+
*
|
|
12
|
+
* Key-value pairs of FFmpeg bitstream filter options.
|
|
13
|
+
* These are passed directly to the filter via av_opt_set().
|
|
14
|
+
* Available options depend on the specific filter being used.
|
|
15
|
+
*/
|
|
16
|
+
options?: Record<string, string | number | boolean | bigint | undefined | null>;
|
|
17
|
+
/**
|
|
18
|
+
* AbortSignal for cancellation.
|
|
19
|
+
*
|
|
20
|
+
* When aborted, async generators stop yielding and async methods throw AbortError.
|
|
21
|
+
*/
|
|
22
|
+
signal?: AbortSignal;
|
|
23
|
+
}
|
|
6
24
|
/**
|
|
7
25
|
* High-level bitstream filter for packet processing.
|
|
8
26
|
*
|
|
@@ -53,6 +71,7 @@ export declare class BitStreamFilterAPI implements Disposable {
|
|
|
53
71
|
private workerPromise;
|
|
54
72
|
private nextComponent;
|
|
55
73
|
private pipeToPromise;
|
|
74
|
+
private signal?;
|
|
56
75
|
/**
|
|
57
76
|
* @param bsf - Bitstream filter
|
|
58
77
|
*
|
|
@@ -110,6 +110,7 @@ export class BitStreamFilterAPI {
|
|
|
110
110
|
workerPromise = null;
|
|
111
111
|
nextComponent = null;
|
|
112
112
|
pipeToPromise = null;
|
|
113
|
+
signal;
|
|
113
114
|
/**
|
|
114
115
|
* @param bsf - Bitstream filter
|
|
115
116
|
*
|
|
@@ -210,7 +211,12 @@ export class BitStreamFilterAPI {
|
|
|
210
211
|
// Initialize the filter
|
|
211
212
|
const initRet = ctx.init();
|
|
212
213
|
FFmpegError.throwIfError(initRet, 'Failed to initialize bitstream filter');
|
|
213
|
-
|
|
214
|
+
const bsfApi = new BitStreamFilterAPI(filter, ctx, stream);
|
|
215
|
+
if (filterOptions?.signal) {
|
|
216
|
+
filterOptions.signal.throwIfAborted();
|
|
217
|
+
bsfApi.signal = filterOptions.signal;
|
|
218
|
+
}
|
|
219
|
+
return bsfApi;
|
|
214
220
|
}
|
|
215
221
|
catch (error) {
|
|
216
222
|
// Clean up on error
|
|
@@ -324,6 +330,7 @@ export class BitStreamFilterAPI {
|
|
|
324
330
|
* @see {@link filterSync} For synchronous version
|
|
325
331
|
*/
|
|
326
332
|
async filter(packet) {
|
|
333
|
+
this.signal?.throwIfAborted();
|
|
327
334
|
if (this.isClosed) {
|
|
328
335
|
return;
|
|
329
336
|
}
|
|
@@ -437,6 +444,7 @@ export class BitStreamFilterAPI {
|
|
|
437
444
|
* @see {@link filterAllSync} For synchronous version
|
|
438
445
|
*/
|
|
439
446
|
async filterAll(packet) {
|
|
447
|
+
this.signal?.throwIfAborted();
|
|
440
448
|
await this.filter(packet);
|
|
441
449
|
// Receive all output packets
|
|
442
450
|
const outputPackets = [];
|
|
@@ -589,6 +597,7 @@ export class BitStreamFilterAPI {
|
|
|
589
597
|
const env_1 = { stack: [], error: void 0, hasError: false };
|
|
590
598
|
try {
|
|
591
599
|
const packet = __addDisposableResource(env_1, packet_1, false);
|
|
600
|
+
this.signal?.throwIfAborted();
|
|
592
601
|
if (packet === null) {
|
|
593
602
|
yield* finalize();
|
|
594
603
|
return;
|
|
@@ -738,6 +747,7 @@ export class BitStreamFilterAPI {
|
|
|
738
747
|
* @see {@link flushSync} For synchronous version
|
|
739
748
|
*/
|
|
740
749
|
async flush() {
|
|
750
|
+
this.signal?.throwIfAborted();
|
|
741
751
|
if (this.isClosed) {
|
|
742
752
|
return;
|
|
743
753
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bitstream-filter.js","sourceRoot":"","sources":["../../src/api/bitstream-filter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bitstream-filter.js","sourceRoot":"","sources":["../../src/api/bitstream-filter.ts"],"names":[],"mappings":"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"}
|
package/dist/api/decoder.d.ts
CHANGED
|
@@ -3,11 +3,106 @@ import { Codec } from '../lib/codec.js';
|
|
|
3
3
|
import { Frame } from '../lib/frame.js';
|
|
4
4
|
import { Packet } from '../lib/packet.js';
|
|
5
5
|
import { Scheduler } from './utilities/scheduler.js';
|
|
6
|
-
import type { AVCodecID, EOFSignal, FFDecoderCodec } from '../constants/index.js';
|
|
6
|
+
import type { AVCodecID, AVPixelFormat, AVThreadType, EOFSignal, FFDecoderCodec } from '../constants/index.js';
|
|
7
7
|
import type { Stream } from '../lib/stream.js';
|
|
8
|
+
import type { IRational } from '../lib/types.js';
|
|
8
9
|
import type { Encoder } from './encoder.js';
|
|
9
10
|
import type { FilterAPI } from './filter.js';
|
|
10
|
-
import type {
|
|
11
|
+
import type { HardwareContext } from './hardware.js';
|
|
12
|
+
/**
|
|
13
|
+
* Options for decoder creation.
|
|
14
|
+
*/
|
|
15
|
+
export interface DecoderOptions {
|
|
16
|
+
/**
|
|
17
|
+
* Exit immediately on first decode error.
|
|
18
|
+
*
|
|
19
|
+
* When enabled, the decoder will terminate on the first decode error.
|
|
20
|
+
* When disabled, errors are logged but decoding continues with next packet.
|
|
21
|
+
*
|
|
22
|
+
* @default true
|
|
23
|
+
*/
|
|
24
|
+
exitOnError?: boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Hardware acceleration context.
|
|
27
|
+
*
|
|
28
|
+
* Pass a HardwareContext instance to enable hardware-accelerated decoding.
|
|
29
|
+
* Set to null to disable hardware acceleration.
|
|
30
|
+
*/
|
|
31
|
+
hardware?: HardwareContext | null;
|
|
32
|
+
/**
|
|
33
|
+
* Number of extra hardware frames to allocate.
|
|
34
|
+
*
|
|
35
|
+
* Useful for hardware decoders requiring additional frame buffering.
|
|
36
|
+
* Some hardware decoders need extra frames for reference or look-ahead.
|
|
37
|
+
*/
|
|
38
|
+
extraHWFrames?: number;
|
|
39
|
+
/**
|
|
40
|
+
* Hardware frame output format.
|
|
41
|
+
*
|
|
42
|
+
* When set, hardware frames will be automatically transferred to this software pixel format.
|
|
43
|
+
* Useful when you need software frames for further processing but want to use hardware decoding.
|
|
44
|
+
*/
|
|
45
|
+
hwaccelOutputFormat?: AVPixelFormat;
|
|
46
|
+
/**
|
|
47
|
+
* Force constant framerate mode.
|
|
48
|
+
*
|
|
49
|
+
* When set, ignores all timestamps and generates frames at a constant rate.
|
|
50
|
+
* Sets frame PTS to AV_NOPTS_VALUE, duration to 1, and time_base to 1/framerate.
|
|
51
|
+
* Matches FFmpeg CLI's DECODER_FLAG_FRAMERATE_FORCED behavior.
|
|
52
|
+
*/
|
|
53
|
+
forcedFramerate?: IRational;
|
|
54
|
+
/**
|
|
55
|
+
* Override sample aspect ratio.
|
|
56
|
+
*
|
|
57
|
+
* When set, overrides the frame's sample_aspect_ratio with this value.
|
|
58
|
+
* Useful for fixing incorrect SAR in source material.
|
|
59
|
+
*/
|
|
60
|
+
sarOverride?: IRational;
|
|
61
|
+
/**
|
|
62
|
+
* Apply cropping from frame metadata.
|
|
63
|
+
*
|
|
64
|
+
* When true, automatically crops frames based on their crop metadata.
|
|
65
|
+
* Uses av_frame_apply_cropping() with AV_FRAME_CROP_UNALIGNED flag.
|
|
66
|
+
* Useful for streams with letterboxing/pillarboxing metadata.
|
|
67
|
+
*
|
|
68
|
+
* @default false
|
|
69
|
+
*/
|
|
70
|
+
applyCropping?: boolean;
|
|
71
|
+
/**
|
|
72
|
+
* Number of threads to use for decoding.
|
|
73
|
+
*
|
|
74
|
+
* Set to 0 to auto-detect based on CPU cores.
|
|
75
|
+
*
|
|
76
|
+
* @default 1
|
|
77
|
+
*/
|
|
78
|
+
threadCount?: number;
|
|
79
|
+
/**
|
|
80
|
+
* Type of threading to use for decoding.
|
|
81
|
+
*
|
|
82
|
+
* - `FF_THREAD_FRAME` (1): Decode multiple frames in parallel.
|
|
83
|
+
* Higher throughput but adds latency (1 frame delay per thread).
|
|
84
|
+
* Not recommended for live streaming where future frames are unavailable.
|
|
85
|
+
*
|
|
86
|
+
* - `FF_THREAD_SLICE` (2): Decode parts of a single frame in parallel.
|
|
87
|
+
* No additional latency, suitable for real-time/live streaming.
|
|
88
|
+
*
|
|
89
|
+
* @default FFmpeg default (both methods, codec chooses best)
|
|
90
|
+
*/
|
|
91
|
+
threadType?: AVThreadType;
|
|
92
|
+
/**
|
|
93
|
+
* Additional codec-specific options.
|
|
94
|
+
*
|
|
95
|
+
* Key-value pairs of FFmpeg AVCodecContext options.
|
|
96
|
+
* These are passed directly to the decoder.
|
|
97
|
+
*/
|
|
98
|
+
options?: Record<string, string | number | boolean | undefined | null>;
|
|
99
|
+
/**
|
|
100
|
+
* AbortSignal for cancellation.
|
|
101
|
+
*
|
|
102
|
+
* When aborted, async generators stop yielding and async methods throw AbortError.
|
|
103
|
+
*/
|
|
104
|
+
signal?: AbortSignal;
|
|
105
|
+
}
|
|
11
106
|
/**
|
|
12
107
|
* High-level decoder for audio and video streams.
|
|
13
108
|
*
|
|
@@ -68,6 +163,7 @@ export declare class Decoder implements Disposable {
|
|
|
68
163
|
private workerPromise;
|
|
69
164
|
private nextComponent;
|
|
70
165
|
private pipeToPromise;
|
|
166
|
+
private signal?;
|
|
71
167
|
/**
|
|
72
168
|
* @param codecContext - Configured codec context
|
|
73
169
|
*
|