meeting-record 0.2.0 → 0.2.1
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 +119 -97
- package/dist/index.d.ts +80 -57
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +96 -38
- package/dist/index.js.map +1 -1
- package/dist/mixed-audio.d.ts +5 -4
- package/dist/mixed-audio.d.ts.map +1 -1
- package/dist/mixed-audio.js.map +1 -1
- package/dist/pcm-mixer.d.ts.map +1 -1
- package/dist/pcm-mixer.js +1 -2
- package/dist/pcm-mixer.js.map +1 -1
- package/dist/typed-readable.d.ts +29 -0
- package/dist/typed-readable.d.ts.map +1 -0
- package/dist/typed-readable.js +2 -0
- package/dist/typed-readable.js.map +1 -0
- package/package.json +1 -1
- package/prebuilds/darwin-arm64/meeting-record.node +0 -0
- package/prebuilds/darwin-x64/meeting-record.node +0 -0
- package/prebuilds/win32-arm64/meeting-record.node +0 -0
- package/prebuilds/win32-x64/meeting-record.node +0 -0
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# meeting-record for Node.js
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
System-audio and microphone capture with meeting detection for macOS and Windows.
|
|
4
4
|
|
|
5
5
|
## Install
|
|
6
6
|
|
|
@@ -8,121 +8,143 @@
|
|
|
8
8
|
npm install meeting-record
|
|
9
9
|
```
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
- Requires Node.js 22.13+ (22.x) or 24+.
|
|
12
|
+
- See the [platform requirements and permissions](https://github.com/hoangvvo/meeting-record#requirements) for app configuration.
|
|
13
|
+
|
|
14
|
+
## Capture
|
|
12
15
|
|
|
13
16
|
```ts
|
|
14
|
-
import
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
await
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
//
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
//
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
}
|
|
33
|
-
MeetingRecord.meetings.watch();
|
|
34
|
-
|
|
35
|
-
// Or scan for active meetings at any time.
|
|
36
|
-
const meeting = (await MeetingRecord.meetings.scan()).find((item) => item.shouldRecord);
|
|
37
|
-
if (!meeting) throw new Error("no active meeting");
|
|
38
|
-
|
|
39
|
-
// Start recording the meeting process and its audio helpers.
|
|
40
|
-
// Use `{ type: "system" }` instead to record the whole system mix.
|
|
41
|
-
const recording = await MeetingRecord.capture.start(
|
|
42
|
-
{ type: "process", pid: meeting.pid },
|
|
43
|
-
{ microphone: "auto" },
|
|
44
|
-
);
|
|
17
|
+
import { setTimeout as delay } from "node:timers/promises";
|
|
18
|
+
import { capture, permissions, Permission } from "meeting-record";
|
|
19
|
+
|
|
20
|
+
await permissions.request(Permission.SystemAudio);
|
|
21
|
+
const recording = await capture.start({ type: "system" });
|
|
22
|
+
|
|
23
|
+
// Stop after ten seconds; keep reading until the stream ends.
|
|
24
|
+
const stopped = delay(10_000).then(() => recording.stopRecording());
|
|
25
|
+
for await (const chunk of recording.systemAudio) {
|
|
26
|
+
// Raw float32 PCM, with the format and capture time of this packet.
|
|
27
|
+
console.log(chunk.pcm, chunk.hostTimeNs, chunk.sampleRate, chunk.channels);
|
|
28
|
+
}
|
|
29
|
+
await stopped;
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
| Target | Value passed to `capture.start()` |
|
|
33
|
+
| ----------------------------- | --------------------------------- |
|
|
34
|
+
| System audio | `{ type: "system" }` |
|
|
35
|
+
| One app and its audio helpers | `{ type: "process", pid }` |
|
|
45
36
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
recording
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
// Stop watching for meetings when done.
|
|
68
|
-
MeetingRecord.meetings.unwatch();
|
|
37
|
+
- **App picker:** `meetings.audioApps()` lists available apps. Use the selected entry's `pid`; no meeting scan is required.
|
|
38
|
+
- **Meeting capture:** a detected meeting's `pid` is also a process target.
|
|
39
|
+
- **Permissions:** `permissions.request()` returns a `PermissionStatus`; `permissions.status()` checks the current status without prompting.
|
|
40
|
+
- **Sessions:** one recording at a time per process.
|
|
41
|
+
|
|
42
|
+
### Add a microphone
|
|
43
|
+
|
|
44
|
+
Request microphone permission, then pass `microphone` in the capture options:
|
|
45
|
+
|
|
46
|
+
```ts
|
|
47
|
+
import { MicrophoneSource } from "meeting-record";
|
|
48
|
+
|
|
49
|
+
await permissions.request(Permission.Microphone);
|
|
50
|
+
const recording = await capture.start(
|
|
51
|
+
{ type: "system" },
|
|
52
|
+
{
|
|
53
|
+
mono: false, // Stereo system audio; defaults to mono. The mic stays mono.
|
|
54
|
+
microphone: MicrophoneSource.Default,
|
|
55
|
+
},
|
|
56
|
+
);
|
|
69
57
|
```
|
|
70
58
|
|
|
71
|
-
|
|
59
|
+
- `MicrophoneSource.Default` follows the OS input device.
|
|
60
|
+
- `MicrophoneSource.Auto` prefers the captured app's mic on Windows, then the communications default. On macOS, it uses the default input.
|
|
61
|
+
- Without `microphone`, only system audio is captured.
|
|
62
|
+
|
|
63
|
+
## Audio output
|
|
72
64
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
65
|
+
| Output | Access | Data |
|
|
66
|
+
| ------------ | ----------------------- | ---------------------------------------------------------------------------- |
|
|
67
|
+
| System audio | `recording.systemAudio` | Object-mode stream of `AudioChunk` packets |
|
|
68
|
+
| Microphone | `recording.microphone` | Same packet type; present when requested |
|
|
69
|
+
| Mixed audio | `recording.mixedAudio` | Byte stream of mono signed 16-bit little-endian PCM; present when configured |
|
|
77
70
|
|
|
78
|
-
|
|
71
|
+
- **Raw samples:** `chunk.pcm` contains interleaved float32 PCM.
|
|
72
|
+
- **Packet metadata:** `hostTimeNs`, `frameCount`, `sampleRate`, `channels`, and `droppedSamples`.
|
|
73
|
+
- **Reading:** use `data` listeners or `for await...of` on each raw track. Use each packet's format; it can change during capture.
|
|
74
|
+
- **Slow readers:** raw tracks report discarded samples through `drop` events and `droppedSamples`.
|
|
75
|
+
- See [capture formats and channels](https://github.com/hoangvvo/meeting-record#capture) for sample rates and platform behavior.
|
|
76
|
+
|
|
77
|
+
### Mixed audio
|
|
78
|
+
|
|
79
|
+
After requesting the audio and microphone permissions, start with `mix` to add a combined stream:
|
|
79
80
|
|
|
80
81
|
```ts
|
|
81
|
-
const recording = await
|
|
82
|
+
const recording = await capture.start(
|
|
82
83
|
{ type: "system" },
|
|
83
|
-
{
|
|
84
|
+
{
|
|
85
|
+
microphone: MicrophoneSource.Default,
|
|
86
|
+
mix: { sampleRate: 24_000 }, // Combined mono s16le at 24 kHz.
|
|
87
|
+
},
|
|
84
88
|
);
|
|
85
|
-
|
|
86
|
-
recording.mixedAudio.on("
|
|
87
|
-
recording.mixedAudio.setMicrophoneMuted(true);
|
|
89
|
+
|
|
90
|
+
recording.mixedAudio.on("data", (pcm) => console.log(pcm.byteLength));
|
|
91
|
+
recording.mixedAudio.setMicrophoneMuted(true); // Affects the mix only.
|
|
88
92
|
```
|
|
89
93
|
|
|
90
|
-
-
|
|
91
|
-
-
|
|
92
|
-
- After stopping, await `end` to consume the final tail.
|
|
93
|
-
- No echo cancellation.
|
|
94
|
-
- `AbortSignal` in `capture.start()` stops capture; in `permissions.request()` it cancels the wait.
|
|
95
|
-
- A lost source pauses only its own track in the mix.
|
|
94
|
+
- Mixed audio is a standard byte stream: it can also be piped to a writable.
|
|
95
|
+
- Raw tracks remain available alongside the mix.
|
|
96
96
|
|
|
97
|
-
##
|
|
97
|
+
## Controls and events
|
|
98
98
|
|
|
99
|
-
|
|
99
|
+
| Action | API |
|
|
100
|
+
| ------------------------- | -------------------------------------------------------------- |
|
|
101
|
+
| Pause / resume | `recording.pauseRecording()` / `recording.resumeRecording()` |
|
|
102
|
+
| Stop | `await recording.stopRecording()`; safe to call more than once |
|
|
103
|
+
| Check recording state | `recording.state` |
|
|
104
|
+
| Check source availability | `track.availability` |
|
|
105
|
+
| Cancel start or recording | Pass an `AbortSignal` as `CaptureOptions.signal` |
|
|
106
|
+
|
|
107
|
+
- **Pause:** affects the whole recording; paused time is omitted.
|
|
108
|
+
- **Stop:** keep reading each output until `end` to drain queued audio.
|
|
109
|
+
- **Source loss:** the session stays alive. Track availability is `live`, `degraded`, or `interrupted`.
|
|
110
|
+
- **App exit:** system audio stops when all captured apps exit; the microphone and session stay alive. Start a new session for a relaunched app.
|
|
111
|
+
|
|
112
|
+
Attach source-event listeners immediately after awaiting `capture.start()`:
|
|
113
|
+
|
|
114
|
+
```ts
|
|
115
|
+
recording.systemAudio.on("interrupted", (reason, message) => console.log(reason, message));
|
|
116
|
+
recording.systemAudio.on("degraded", (reason, message) => console.log(reason, message));
|
|
117
|
+
recording.systemAudio.on("resumed", () => console.log("System audio resumed"));
|
|
118
|
+
recording.microphone?.on("devicechange", (name) => console.log("Microphone:", name));
|
|
119
|
+
```
|
|
100
120
|
|
|
101
|
-
##
|
|
121
|
+
## Meetings
|
|
102
122
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
123
|
+
```ts
|
|
124
|
+
import { meetings } from "meeting-record";
|
|
125
|
+
|
|
126
|
+
const active = (await meetings.scan()).filter((meeting) => meeting.shouldRecord);
|
|
107
127
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
128
|
+
meetings.on("started", (meeting) => console.log("Started:", meeting));
|
|
129
|
+
meetings.on("updated", (meeting) => console.log("Updated:", meeting));
|
|
130
|
+
meetings.on("ended", (meeting) => console.log("Ended:", meeting));
|
|
131
|
+
meetings.watch();
|
|
132
|
+
|
|
133
|
+
// Later: meetings.unwatch();
|
|
134
|
+
```
|
|
111
135
|
|
|
112
|
-
`
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
pause/stop; after stop, it describes the last observed source state.
|
|
136
|
+
- Use `shouldRecord` to decide whether a meeting is ready to record.
|
|
137
|
+
- Request `Permission.Accessibility` on macOS for titles and URLs; relaunch after granting it.
|
|
138
|
+
- See [supported services and detection behavior](https://github.com/hoangvvo/meeting-record#detection).
|
|
116
139
|
|
|
117
|
-
|
|
118
|
-
microphone on Windows, then the communications default; on macOS it follows the
|
|
119
|
-
system default input. Both follow device changes. Requesting a microphone requires
|
|
120
|
-
one to be available at startup; subsequent loss recovers independently.
|
|
140
|
+
## Types and errors
|
|
121
141
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
142
|
+
- **Constants:** `Platform`, `Permission`, `PermissionStatus`, `MicrophoneSource`, `CaptureState`, `TrackAvailability`, and `TrackInterruptionReason` have matching union types.
|
|
143
|
+
- **Events:** names and callback arguments are checked by TypeScript, including chained `on`, `once`, and `off` calls.
|
|
144
|
+
- **Library failures:** capture, permissions, and enumeration use `MeetingRecordError` subclasses, with a numeric `code`.
|
|
145
|
+
- **Invalid arguments:** throw `TypeError`.
|
|
146
|
+
- **Cancellation:** aborting rejects pending work with the signal's reason and stops an active recording.
|
|
125
147
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
148
|
+
## License
|
|
149
|
+
|
|
150
|
+
[MIT](./LICENSE.md) © Hoang Vo
|
package/dist/index.d.ts
CHANGED
|
@@ -1,26 +1,38 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* meeting-record — system-audio and microphone capture with meeting detection.
|
|
3
|
-
*
|
|
4
|
-
* Wraps the native addon so callers never see helper-process pids, status codes,
|
|
5
|
-
* or the realtime callback. The addon itself is not re-exported.
|
|
6
|
-
*/
|
|
1
|
+
/** System-audio and microphone capture with meeting detection. */
|
|
7
2
|
import { EventEmitter } from "node:events";
|
|
8
|
-
import { Readable } from "node:stream";
|
|
9
3
|
import { type MixedAudio, type MixedAudioOptions } from "./mixed-audio.js";
|
|
10
|
-
|
|
11
|
-
export type
|
|
4
|
+
import type { EmitterEvents, ReadableEvents, TypedReadable } from "./typed-readable.js";
|
|
5
|
+
export type { MixedAudio, MixedAudioEvents, MixedAudioOptions } from "./mixed-audio.js";
|
|
6
|
+
export declare const Permission: {
|
|
7
|
+
readonly SystemAudio: "system-audio";
|
|
8
|
+
readonly Microphone: "microphone";
|
|
9
|
+
readonly Accessibility: "accessibility";
|
|
10
|
+
};
|
|
11
|
+
export type Permission = (typeof Permission)[keyof typeof Permission];
|
|
12
12
|
/**
|
|
13
13
|
* Windows has no prompts: system audio and accessibility are always granted, and
|
|
14
14
|
* the microphone follows its privacy settings.
|
|
15
15
|
*/
|
|
16
|
-
export
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
export type
|
|
22
|
-
/**
|
|
23
|
-
|
|
16
|
+
export declare const PermissionStatus: {
|
|
17
|
+
readonly Granted: "granted";
|
|
18
|
+
readonly Denied: "denied";
|
|
19
|
+
readonly Unknown: "unknown";
|
|
20
|
+
};
|
|
21
|
+
export type PermissionStatus = (typeof PermissionStatus)[keyof typeof PermissionStatus];
|
|
22
|
+
/** Stable platform identifier. */
|
|
23
|
+
export declare const Platform: {
|
|
24
|
+
readonly Zoom: "zoom";
|
|
25
|
+
readonly Teams: "teams";
|
|
26
|
+
readonly Meet: "meet";
|
|
27
|
+
readonly Webex: "webex";
|
|
28
|
+
readonly Slack: "slack";
|
|
29
|
+
readonly Discord: "discord";
|
|
30
|
+
/** A browser tab on a recognised call URL. */
|
|
31
|
+
readonly Browser: "browser";
|
|
32
|
+
readonly Unknown: "unknown";
|
|
33
|
+
};
|
|
34
|
+
export type Platform = (typeof Platform)[keyof typeof Platform];
|
|
35
|
+
export type MeetingEvent = "started" | "updated" | "ended";
|
|
24
36
|
export interface Meeting {
|
|
25
37
|
readonly platform: Platform;
|
|
26
38
|
/** The visible app. Use it in `CaptureTarget` when starting capture. */
|
|
@@ -51,13 +63,18 @@ export type CaptureTarget = {
|
|
|
51
63
|
type: "process";
|
|
52
64
|
pid: number;
|
|
53
65
|
} | {
|
|
54
|
-
/** All application output. */
|
|
66
|
+
/** All application output except the recorder's process tree. */
|
|
55
67
|
type: "system";
|
|
56
68
|
};
|
|
57
|
-
|
|
58
|
-
|
|
69
|
+
export declare const MicrophoneSource: {
|
|
70
|
+
/** Follow the OS default input device. */
|
|
71
|
+
readonly Default: "default";
|
|
72
|
+
/** Prefer the captured app's mic on Windows, then its communications default. Use the OS default on macOS. */
|
|
73
|
+
readonly Auto: "auto";
|
|
74
|
+
};
|
|
75
|
+
export type MicrophoneSource = (typeof MicrophoneSource)[keyof typeof MicrophoneSource];
|
|
59
76
|
export interface CaptureOptions {
|
|
60
|
-
/** Mono mixdown for system audio. Default true. */
|
|
77
|
+
/** Mono mixdown for system audio only; the microphone keeps its format. Default true. */
|
|
61
78
|
mono?: boolean;
|
|
62
79
|
/** Capture a microphone as a separate track. Default off. */
|
|
63
80
|
microphone?: MicrophoneSource;
|
|
@@ -93,12 +110,14 @@ export declare const permissions: {
|
|
|
93
110
|
signal?: AbortSignal;
|
|
94
111
|
}): Promise<PermissionStatus>;
|
|
95
112
|
};
|
|
96
|
-
export interface MeetingEvents {
|
|
113
|
+
export interface MeetingEvents extends EmitterEvents {
|
|
97
114
|
started: (meeting: Meeting) => void;
|
|
98
115
|
updated: (meeting: Meeting) => void;
|
|
99
116
|
ended: (meeting: Meeting) => void;
|
|
100
117
|
}
|
|
101
|
-
declare class Meetings extends EventEmitter
|
|
118
|
+
declare class Meetings extends EventEmitter<{
|
|
119
|
+
[Event in keyof MeetingEvents]: Parameters<MeetingEvents[Event]>;
|
|
120
|
+
}> {
|
|
102
121
|
/** Point-in-time scan, highest confidence first. */
|
|
103
122
|
scan(): Promise<Meeting[]>;
|
|
104
123
|
/** Begin emitting `started` / `updated` / `ended`. */
|
|
@@ -113,31 +132,28 @@ declare class Meetings extends EventEmitter {
|
|
|
113
132
|
*/
|
|
114
133
|
audioApps(): AudioProcess[];
|
|
115
134
|
}
|
|
116
|
-
export declare const meetings: Meetings
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
135
|
+
export declare const meetings: Meetings;
|
|
136
|
+
export declare const CaptureState: {
|
|
137
|
+
readonly Recording: "recording";
|
|
138
|
+
readonly Paused: "paused";
|
|
139
|
+
readonly Stopped: "stopped";
|
|
120
140
|
};
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
141
|
+
export type CaptureState = (typeof CaptureState)[keyof typeof CaptureState];
|
|
142
|
+
/** Reason for source loss. */
|
|
143
|
+
export declare const TrackInterruptionReason: {
|
|
144
|
+
readonly DeviceRemoved: "device-removed";
|
|
145
|
+
readonly DeviceChanged: "device-changed";
|
|
146
|
+
readonly FormatChanged: "format-changed";
|
|
147
|
+
readonly AppExited: "app-exited";
|
|
148
|
+
readonly ServiceReset: "service-reset";
|
|
149
|
+
readonly Unknown: "unknown";
|
|
150
|
+
};
|
|
151
|
+
export type TrackInterruptionReason = (typeof TrackInterruptionReason)[keyof typeof TrackInterruptionReason];
|
|
130
152
|
export interface AudioFormat {
|
|
131
153
|
readonly sampleRate: number;
|
|
132
154
|
readonly channels: number;
|
|
133
155
|
}
|
|
134
|
-
/**
|
|
135
|
-
* A PCM buffer with the capture time of its first frame.
|
|
136
|
-
*
|
|
137
|
-
* `hostTimeNs` is monotonic (not Unix time) and uses the same host clock for the
|
|
138
|
-
* system and microphone tracks, so callers can align or echo-cancel them without
|
|
139
|
-
* relying on callback arrival order.
|
|
140
|
-
*/
|
|
156
|
+
/** PCM packet timed on a monotonic clock shared by both tracks. */
|
|
141
157
|
export interface AudioChunk {
|
|
142
158
|
/** Interleaved float32 PCM. Packet boundaries and metadata survive iteration. */
|
|
143
159
|
readonly pcm: Buffer;
|
|
@@ -147,8 +163,26 @@ export interface AudioChunk {
|
|
|
147
163
|
readonly channels: number;
|
|
148
164
|
readonly droppedSamples: number;
|
|
149
165
|
}
|
|
150
|
-
export
|
|
151
|
-
|
|
166
|
+
export declare const TrackAvailability: {
|
|
167
|
+
readonly Live: "live";
|
|
168
|
+
readonly Degraded: "degraded";
|
|
169
|
+
readonly Interrupted: "interrupted";
|
|
170
|
+
};
|
|
171
|
+
export type TrackAvailability = (typeof TrackAvailability)[keyof typeof TrackAvailability];
|
|
172
|
+
export interface AudioTrackEvents extends ReadableEvents<AudioChunk> {
|
|
173
|
+
drop: (droppedSamples: number) => void;
|
|
174
|
+
/** Emitted before the first chunk in a newly negotiated device format. */
|
|
175
|
+
format: (format: AudioFormat) => void;
|
|
176
|
+
/** No source is available. Lost devices are retried; exited apps require a new target. */
|
|
177
|
+
interrupted: (reason: TrackInterruptionReason, message: string) => void;
|
|
178
|
+
resumed: () => void;
|
|
179
|
+
/** Some sources are lost; remaining sources continue delivering audio. */
|
|
180
|
+
degraded: (reason: TrackInterruptionReason, message: string) => void;
|
|
181
|
+
/** The microphone moved to another device. */
|
|
182
|
+
devicechange: (deviceName: string) => void;
|
|
183
|
+
}
|
|
184
|
+
/** Interleaved float32 PCM. Slow consumers lose samples, reported by `drop`. */
|
|
185
|
+
export interface AudioTrack extends TypedReadable<AudioTrackEvents> {
|
|
152
186
|
readonly availability: TrackAvailability;
|
|
153
187
|
[Symbol.asyncIterator](): NodeJS.AsyncIterator<AudioChunk>;
|
|
154
188
|
/** Current negotiated format; a `format` event announces changes. */
|
|
@@ -160,18 +194,6 @@ export interface AudioTrack extends Readable {
|
|
|
160
194
|
readonly interrupted: boolean;
|
|
161
195
|
/** The microphone in use; undefined for system audio. */
|
|
162
196
|
readonly deviceName?: string;
|
|
163
|
-
on(event: "data", listener: (chunk: AudioChunk) => void): this;
|
|
164
|
-
on(event: "drop", listener: (droppedSamples: number) => void): this;
|
|
165
|
-
/** Emitted before the first chunk in a newly negotiated device format. */
|
|
166
|
-
on(event: "format", listener: (format: AudioFormat) => void): this;
|
|
167
|
-
/** No source is available. Lost devices are retried; exited apps require a new target. */
|
|
168
|
-
on(event: "interrupted", listener: (reason: TrackInterruptionReason, message: string) => void): this;
|
|
169
|
-
on(event: "resumed", listener: () => void): this;
|
|
170
|
-
/** Some sources are lost; remaining sources continue delivering audio. */
|
|
171
|
-
on(event: "degraded", listener: (reason: TrackInterruptionReason, message: string) => void): this;
|
|
172
|
-
/** The microphone moved to another device. */
|
|
173
|
-
on(event: "devicechange", listener: (deviceName: string) => void): this;
|
|
174
|
-
on(event: string | symbol, listener: (...args: any[]) => void): this;
|
|
175
197
|
}
|
|
176
198
|
/** A lost source interrupts its track; the session records until stopped. */
|
|
177
199
|
export interface CaptureSession {
|
|
@@ -186,6 +208,7 @@ export interface CaptureSession {
|
|
|
186
208
|
export interface MixedCaptureSession extends CaptureSession {
|
|
187
209
|
readonly mixedAudio: MixedAudio;
|
|
188
210
|
}
|
|
211
|
+
/** Attach source-event listeners immediately after awaiting start; startup notifications are delivered on the next turn. */
|
|
189
212
|
declare function startCapture(target: CaptureTarget, options: CaptureOptions & {
|
|
190
213
|
mix: MixedAudioOptions;
|
|
191
214
|
}): Promise<MixedCaptureSession>;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,15 +1,42 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* meeting-record — system-audio and microphone capture with meeting detection.
|
|
3
|
-
*
|
|
4
|
-
* Wraps the native addon so callers never see helper-process pids, status codes,
|
|
5
|
-
* or the realtime callback. The addon itself is not re-exported.
|
|
6
|
-
*/
|
|
1
|
+
/** System-audio and microphone capture with meeting detection. */
|
|
7
2
|
import { EventEmitter } from "node:events";
|
|
8
3
|
import { Readable } from "node:stream";
|
|
9
4
|
import { setTimeout as delay } from "node:timers/promises";
|
|
10
5
|
import { createRequire } from "node:module";
|
|
11
6
|
import { fileURLToPath } from "node:url";
|
|
12
7
|
import { MixedAudioImpl } from "./mixed-audio.js";
|
|
8
|
+
export const Permission = {
|
|
9
|
+
SystemAudio: "system-audio",
|
|
10
|
+
Microphone: "microphone",
|
|
11
|
+
Accessibility: "accessibility",
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Windows has no prompts: system audio and accessibility are always granted, and
|
|
15
|
+
* the microphone follows its privacy settings.
|
|
16
|
+
*/
|
|
17
|
+
export const PermissionStatus = {
|
|
18
|
+
Granted: "granted",
|
|
19
|
+
Denied: "denied",
|
|
20
|
+
Unknown: "unknown",
|
|
21
|
+
};
|
|
22
|
+
/** Stable platform identifier. */
|
|
23
|
+
export const Platform = {
|
|
24
|
+
Zoom: "zoom",
|
|
25
|
+
Teams: "teams",
|
|
26
|
+
Meet: "meet",
|
|
27
|
+
Webex: "webex",
|
|
28
|
+
Slack: "slack",
|
|
29
|
+
Discord: "discord",
|
|
30
|
+
/** A browser tab on a recognised call URL. */
|
|
31
|
+
Browser: "browser",
|
|
32
|
+
Unknown: "unknown",
|
|
33
|
+
};
|
|
34
|
+
export const MicrophoneSource = {
|
|
35
|
+
/** Follow the OS default input device. */
|
|
36
|
+
Default: "default",
|
|
37
|
+
/** Prefer the captured app's mic on Windows, then its communications default. Use the OS default on macOS. */
|
|
38
|
+
Auto: "auto",
|
|
39
|
+
};
|
|
13
40
|
export class MeetingRecordError extends Error {
|
|
14
41
|
code;
|
|
15
42
|
constructor(message, code) {
|
|
@@ -69,15 +96,15 @@ function asLibraryError(error) {
|
|
|
69
96
|
}
|
|
70
97
|
export const permissions = {
|
|
71
98
|
status(permission) {
|
|
72
|
-
if (permission !==
|
|
73
|
-
permission !==
|
|
74
|
-
permission !==
|
|
99
|
+
if (permission !== Permission.SystemAudio &&
|
|
100
|
+
permission !== Permission.Microphone &&
|
|
101
|
+
permission !== Permission.Accessibility) {
|
|
75
102
|
throw new TypeError(`unknown permission: ${String(permission)}`);
|
|
76
103
|
}
|
|
77
104
|
const native = getNative();
|
|
78
|
-
if (permission ===
|
|
105
|
+
if (permission === Permission.Accessibility)
|
|
79
106
|
return native.accessibilityPermissionStatus();
|
|
80
|
-
if (permission ===
|
|
107
|
+
if (permission === Permission.Microphone)
|
|
81
108
|
return native.microphonePermissionStatus();
|
|
82
109
|
return native.audioPermissionStatus();
|
|
83
110
|
},
|
|
@@ -90,16 +117,16 @@ export const permissions = {
|
|
|
90
117
|
async request(permission, { timeoutMs = 120_000, signal } = {}) {
|
|
91
118
|
signal?.throwIfAborted();
|
|
92
119
|
const current = permissions.status(permission);
|
|
93
|
-
if (current ===
|
|
120
|
+
if (current === PermissionStatus.Granted)
|
|
94
121
|
return current;
|
|
95
122
|
const native = getNative();
|
|
96
|
-
if (permission ===
|
|
123
|
+
if (permission === Permission.Accessibility) {
|
|
97
124
|
const status = native.requestAccessibilityPermission();
|
|
98
125
|
if (status !== 0)
|
|
99
126
|
throw errorFromStatus("failed to request accessibility permission", status);
|
|
100
127
|
return permissions.status(permission);
|
|
101
128
|
}
|
|
102
|
-
const requestStatus = permission ===
|
|
129
|
+
const requestStatus = permission === Permission.Microphone
|
|
103
130
|
? native.requestMicrophonePermission()
|
|
104
131
|
: native.requestAudioPermission();
|
|
105
132
|
if (requestStatus !== 0) {
|
|
@@ -110,7 +137,7 @@ export const permissions = {
|
|
|
110
137
|
while (Date.now() < deadline) {
|
|
111
138
|
await delay(500, undefined, { signal });
|
|
112
139
|
const status = permissions.status(permission);
|
|
113
|
-
if (status ===
|
|
140
|
+
if (status === PermissionStatus.Granted || status === PermissionStatus.Denied)
|
|
114
141
|
return status;
|
|
115
142
|
}
|
|
116
143
|
return permissions.status(permission);
|
|
@@ -168,6 +195,25 @@ class Meetings extends EventEmitter {
|
|
|
168
195
|
}
|
|
169
196
|
}
|
|
170
197
|
export const meetings = new Meetings();
|
|
198
|
+
export const CaptureState = {
|
|
199
|
+
Recording: "recording",
|
|
200
|
+
Paused: "paused",
|
|
201
|
+
Stopped: "stopped",
|
|
202
|
+
};
|
|
203
|
+
/** Reason for source loss. */
|
|
204
|
+
export const TrackInterruptionReason = {
|
|
205
|
+
DeviceRemoved: "device-removed",
|
|
206
|
+
DeviceChanged: "device-changed",
|
|
207
|
+
FormatChanged: "format-changed",
|
|
208
|
+
AppExited: "app-exited",
|
|
209
|
+
ServiceReset: "service-reset",
|
|
210
|
+
Unknown: "unknown",
|
|
211
|
+
};
|
|
212
|
+
export const TrackAvailability = {
|
|
213
|
+
Live: "live",
|
|
214
|
+
Degraded: "degraded",
|
|
215
|
+
Interrupted: "interrupted",
|
|
216
|
+
};
|
|
171
217
|
class AudioTrackImpl extends Readable {
|
|
172
218
|
#sampleRate;
|
|
173
219
|
#channels;
|
|
@@ -177,7 +223,7 @@ class AudioTrackImpl extends Readable {
|
|
|
177
223
|
#mixReady = true;
|
|
178
224
|
#mixConsumer;
|
|
179
225
|
#finished = false;
|
|
180
|
-
#availability =
|
|
226
|
+
#availability = TrackAvailability.Live;
|
|
181
227
|
#deviceName;
|
|
182
228
|
constructor(sampleRate, channels, microphone, deviceName) {
|
|
183
229
|
super({ objectMode: true, highWaterMark: 32 });
|
|
@@ -217,7 +263,7 @@ class AudioTrackImpl extends Readable {
|
|
|
217
263
|
return super[Symbol.asyncIterator]();
|
|
218
264
|
}
|
|
219
265
|
get interrupted() {
|
|
220
|
-
return this.#availability ===
|
|
266
|
+
return this.#availability === TrackAvailability.Interrupted;
|
|
221
267
|
}
|
|
222
268
|
get deviceName() {
|
|
223
269
|
return this.#deviceName;
|
|
@@ -250,15 +296,15 @@ class AudioTrackImpl extends Readable {
|
|
|
250
296
|
if (this.#finished)
|
|
251
297
|
return;
|
|
252
298
|
if (event.type === "interrupted") {
|
|
253
|
-
this.#availability =
|
|
299
|
+
this.#availability = TrackAvailability.Interrupted;
|
|
254
300
|
this.emit("interrupted", event.reason, event.message);
|
|
255
301
|
}
|
|
256
302
|
else if (event.type === "resumed") {
|
|
257
|
-
this.#availability =
|
|
303
|
+
this.#availability = TrackAvailability.Live;
|
|
258
304
|
this.emit("resumed");
|
|
259
305
|
}
|
|
260
306
|
else if (event.type === "degraded") {
|
|
261
|
-
this.#availability =
|
|
307
|
+
this.#availability = TrackAvailability.Degraded;
|
|
262
308
|
this.emit("degraded", event.reason, event.message);
|
|
263
309
|
}
|
|
264
310
|
else {
|
|
@@ -274,7 +320,7 @@ class AudioTrackImpl extends Readable {
|
|
|
274
320
|
}
|
|
275
321
|
}
|
|
276
322
|
class CaptureSessionImpl {
|
|
277
|
-
#state =
|
|
323
|
+
#state = CaptureState.Recording;
|
|
278
324
|
#stopping;
|
|
279
325
|
#systemAudio;
|
|
280
326
|
#microphone;
|
|
@@ -300,27 +346,27 @@ class CaptureSessionImpl {
|
|
|
300
346
|
return this.#state;
|
|
301
347
|
}
|
|
302
348
|
pauseRecording() {
|
|
303
|
-
if (this.#state ===
|
|
349
|
+
if (this.#state === CaptureState.Stopped || this.#stopping)
|
|
304
350
|
return;
|
|
305
|
-
if (this.#state !==
|
|
351
|
+
if (this.#state !== CaptureState.Paused) {
|
|
306
352
|
getNative().capturePause();
|
|
307
|
-
this.#state =
|
|
353
|
+
this.#state = CaptureState.Paused;
|
|
308
354
|
this.mixedAudio?.pauseCapture();
|
|
309
355
|
}
|
|
310
356
|
}
|
|
311
357
|
resumeRecording() {
|
|
312
|
-
if (this.#state ===
|
|
358
|
+
if (this.#state === CaptureState.Stopped || this.#stopping)
|
|
313
359
|
return;
|
|
314
|
-
if (this.#state !==
|
|
360
|
+
if (this.#state !== CaptureState.Recording) {
|
|
315
361
|
this.mixedAudio?.resumeCapture();
|
|
316
362
|
getNative().captureResume();
|
|
317
|
-
this.#state =
|
|
363
|
+
this.#state = CaptureState.Recording;
|
|
318
364
|
}
|
|
319
365
|
}
|
|
320
366
|
stopRecording() {
|
|
321
367
|
if (this.#stopping)
|
|
322
368
|
return this.#stopping;
|
|
323
|
-
if (this.#state ===
|
|
369
|
+
if (this.#state === CaptureState.Stopped)
|
|
324
370
|
return Promise.resolve();
|
|
325
371
|
this.#stopping = this.#stop();
|
|
326
372
|
return this.#stopping;
|
|
@@ -330,7 +376,7 @@ class CaptureSessionImpl {
|
|
|
330
376
|
await getNative().captureStop();
|
|
331
377
|
}
|
|
332
378
|
finally {
|
|
333
|
-
this.#state =
|
|
379
|
+
this.#state = CaptureState.Stopped;
|
|
334
380
|
this.#signal?.removeEventListener("abort", this.#onAbort);
|
|
335
381
|
this.#systemAudio.finish();
|
|
336
382
|
this.#microphone?.finish();
|
|
@@ -358,8 +404,8 @@ async function startCapture(target, options = {}) {
|
|
|
358
404
|
throw new TypeError("mono must be a boolean");
|
|
359
405
|
}
|
|
360
406
|
if (options.microphone !== undefined &&
|
|
361
|
-
options.microphone !==
|
|
362
|
-
options.microphone !==
|
|
407
|
+
options.microphone !== MicrophoneSource.Default &&
|
|
408
|
+
options.microphone !== MicrophoneSource.Auto) {
|
|
363
409
|
throw new TypeError('microphone must be "default" or "auto"');
|
|
364
410
|
}
|
|
365
411
|
if (options.mix !== undefined &&
|
|
@@ -379,7 +425,7 @@ async function startCapture(target, options = {}) {
|
|
|
379
425
|
pending.push({ chunk, info });
|
|
380
426
|
return;
|
|
381
427
|
}
|
|
382
|
-
if (session.state !==
|
|
428
|
+
if (session.state !== CaptureState.Recording)
|
|
383
429
|
return;
|
|
384
430
|
session[track]?.pushAudio(chunk, info);
|
|
385
431
|
};
|
|
@@ -390,8 +436,9 @@ async function startCapture(target, options = {}) {
|
|
|
390
436
|
receive("microphone", pendingMicrophone, chunk, info);
|
|
391
437
|
};
|
|
392
438
|
const pendingEvents = [];
|
|
439
|
+
let eventsReady = false;
|
|
393
440
|
const onTrackEvent = (event) => {
|
|
394
|
-
if (!session) {
|
|
441
|
+
if (!session || !eventsReady) {
|
|
395
442
|
pendingEvents.push(event);
|
|
396
443
|
return;
|
|
397
444
|
}
|
|
@@ -401,7 +448,11 @@ async function startCapture(target, options = {}) {
|
|
|
401
448
|
const formats = await native.captureStart({
|
|
402
449
|
...nativeTarget,
|
|
403
450
|
mono: options.mono ?? true,
|
|
404
|
-
microphone: options.microphone ===
|
|
451
|
+
microphone: options.microphone === MicrophoneSource.Auto
|
|
452
|
+
? 2
|
|
453
|
+
: options.microphone === MicrophoneSource.Default
|
|
454
|
+
? 1
|
|
455
|
+
: 0,
|
|
405
456
|
}, onSystemAudio, onMicrophone, onTrackEvent);
|
|
406
457
|
if (options.signal?.aborted) {
|
|
407
458
|
await native.captureStop();
|
|
@@ -411,16 +462,23 @@ async function startCapture(target, options = {}) {
|
|
|
411
462
|
const microphone = formats.microphone
|
|
412
463
|
? new AudioTrackImpl(formats.microphone.sampleRate, formats.microphone.channels, true, formats.microphone.deviceName || undefined)
|
|
413
464
|
: undefined;
|
|
414
|
-
|
|
465
|
+
const recording = new CaptureSessionImpl(systemAudio, microphone, options.mix, options.signal);
|
|
466
|
+
session = recording;
|
|
415
467
|
for (const { chunk, info } of pendingSystemAudio) {
|
|
416
468
|
systemAudio.pushAudio(chunk, info);
|
|
417
469
|
}
|
|
418
470
|
for (const { chunk, info } of pendingMicrophone) {
|
|
419
471
|
microphone?.pushAudio(chunk, info);
|
|
420
472
|
}
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
473
|
+
pendingSystemAudio.length = 0;
|
|
474
|
+
pendingMicrophone.length = 0;
|
|
475
|
+
setImmediate(() => {
|
|
476
|
+
for (const event of pendingEvents)
|
|
477
|
+
recording[event.track]?.pushEvent(event);
|
|
478
|
+
pendingEvents.length = 0;
|
|
479
|
+
eventsReady = true;
|
|
480
|
+
});
|
|
481
|
+
return recording;
|
|
424
482
|
}
|
|
425
483
|
catch (error) {
|
|
426
484
|
if (options.signal?.aborted)
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/mixed-audio.d.ts
CHANGED
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
import { Readable } from "node:stream";
|
|
2
2
|
import type { AudioChunk } from "./index.js";
|
|
3
|
+
import type { ReadableEvents, TypedReadable } from "./typed-readable.js";
|
|
4
|
+
export interface MixedAudioEvents extends ReadableEvents<Buffer> {
|
|
5
|
+
level: (level: number) => void;
|
|
6
|
+
}
|
|
3
7
|
export interface MixedAudioOptions {
|
|
4
8
|
sampleRate: number;
|
|
5
9
|
}
|
|
6
10
|
/** Mono signed 16-bit little-endian PCM. Await `end` to consume the final tail. */
|
|
7
|
-
export interface MixedAudio extends
|
|
11
|
+
export interface MixedAudio extends TypedReadable<MixedAudioEvents> {
|
|
8
12
|
readonly sampleRate: number;
|
|
9
13
|
readonly channels: 1;
|
|
10
14
|
/** Affects the mixed output only; the raw microphone track stays available. */
|
|
11
15
|
setMicrophoneMuted(muted: boolean): void;
|
|
12
|
-
on(event: "level", listener: (level: number) => void): this;
|
|
13
|
-
on(event: "data", listener: (chunk: Buffer) => void): this;
|
|
14
|
-
on(event: string | symbol, listener: (...args: any[]) => void): this;
|
|
15
16
|
}
|
|
16
17
|
export interface MixSource {
|
|
17
18
|
setMixConsumer(consumer: ((chunk: AudioChunk) => void) | undefined): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mixed-audio.d.ts","sourceRoot":"","sources":["../src/mixed-audio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"mixed-audio.d.ts","sourceRoot":"","sources":["../src/mixed-audio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzE,MAAM,WAAW,gBAAiB,SAAQ,cAAc,CAAC,MAAM,CAAC;IAC9D,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,mFAAmF;AACnF,MAAM,WAAW,UAAW,SAAQ,aAAa,CAAC,gBAAgB,CAAC;IACjE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;IACrB,+EAA+E;IAC/E,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;CAC1C;AAED,MAAM,WAAW,SAAS;IACxB,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC;IAC1E,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IAClC,MAAM,IAAI,OAAO,CAAC;CACnB;AAED,qBAAa,cAAe,SAAQ,QAAS,YAAW,UAAU;;IAChE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,KAAK;gBAaV,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,SAAS;IAcrE,KAAK,IAAI,IAAI;IAQb,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI;IAWtF,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAIxC,YAAY,IAAI,IAAI;IAQpB,aAAa,IAAI,IAAI;IAOrB,aAAa,IAAI,IAAI;CAmEtB"}
|
package/dist/mixed-audio.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mixed-audio.js","sourceRoot":"","sources":["../src/mixed-audio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"mixed-audio.js","sourceRoot":"","sources":["../src/mixed-audio.ts"],"names":[],"mappings":"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"}
|
package/dist/pcm-mixer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pcm-mixer.d.ts","sourceRoot":"","sources":["../src/pcm-mixer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAS7C,iFAAiF;AACjF,qBAAa,QAAQ;;gBAYP,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,MAAM,EAAE;IAgB1D,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"pcm-mixer.d.ts","sourceRoot":"","sources":["../src/pcm-mixer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAS7C,iFAAiF;AACjF,qBAAa,QAAQ;;gBAYP,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,MAAM,EAAE;IAgB1D,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI;IAwC9C,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAI9C,uEAAuE;IACvE,aAAa,IAAI,IAAI;IAOrB,4EAA4E;IAC5E,OAAO,IAAI,IAAI;IASf,IAAI,IAAI,MAAM,GAAG,IAAI;CAoCtB;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAO5C"}
|
package/dist/pcm-mixer.js
CHANGED
|
@@ -29,8 +29,7 @@ export class PcmMixer {
|
|
|
29
29
|
this.#origin ??= chunk.hostTimeNs;
|
|
30
30
|
let position = this.#originFrame +
|
|
31
31
|
Math.round((Number(chunk.hostTimeNs - this.#origin) * this.#sampleRate) / 1e9);
|
|
32
|
-
//
|
|
33
|
-
// A live mix must not release minutes of backfilled silence on recovery.
|
|
32
|
+
// Skip gaps over a second when every source was absent.
|
|
34
33
|
if (position > this.#end + this.#sampleRate) {
|
|
35
34
|
this.finishSegment();
|
|
36
35
|
this.restart();
|
package/dist/pcm-mixer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pcm-mixer.js","sourceRoot":"","sources":["../src/pcm-mixer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAQpD,iFAAiF;AACjF,MAAM,OAAO,QAAQ;IACV,WAAW,CAAS;IACpB,YAAY,CAAS;IACrB,OAAO,CAA0B;IACjC,KAAK,CAAS;IACd,OAAO,GAAG,IAAI,GAAG,EAAwB,CAAC;IACnD,OAAO,GAAkB,IAAI,CAAC;IAC9B,YAAY,GAAG,CAAC,CAAC;IACjB,QAAQ,GAAG,CAAC,CAAC;IACb,IAAI,GAAG,CAAC,CAAC;IACT,UAAU,GAAG,CAAC,CAAC;IAEf,YAAY,UAAkB,EAAE,OAA0B;QACxD,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC,CAAC;QAC7D,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,CACpB,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;YACtB,MAAM;YACN;gBACE,SAAS,EAAE,IAAI,aAAa,CAAC,UAAU,CAAC;gBACxC,MAAM,EAAE,IAAI;gBACZ,KAAK,EAAE,KAAK;aACb;SACF,CAAC,CACH,CAAC;QACF,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,MAAc,EAAE,KAAiB;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAClC,IAAI,CAAC,OAAO,KAAK,KAAK,CAAC,UAAU,CAAC;QAClC,IAAI,QAAQ,GACV,IAAI,CAAC,YAAY;YACjB,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,CAAC,CAAC;QACjF,
|
|
1
|
+
{"version":3,"file":"pcm-mixer.js","sourceRoot":"","sources":["../src/pcm-mixer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { Readable } from "node:stream";
|
|
2
|
+
export interface EmitterEvents {
|
|
3
|
+
error: (error: Error) => void;
|
|
4
|
+
newListener: (event: string | symbol, listener: (...args: any[]) => void) => void;
|
|
5
|
+
removeListener: (event: string | symbol, listener: (...args: any[]) => void) => void;
|
|
6
|
+
}
|
|
7
|
+
export interface ReadableEvents<Chunk> extends EmitterEvents {
|
|
8
|
+
close: () => void;
|
|
9
|
+
data: (chunk: Chunk) => void;
|
|
10
|
+
end: () => void;
|
|
11
|
+
pause: () => void;
|
|
12
|
+
readable: () => void;
|
|
13
|
+
resume: () => void;
|
|
14
|
+
}
|
|
15
|
+
type Listener<Events, Event> = Event extends keyof Events ? Events[Event] : never;
|
|
16
|
+
/** Replace Readable's permissive listener overloads, including its aliases. */
|
|
17
|
+
export interface TypedReadable<Events extends {
|
|
18
|
+
[Event in keyof Events]: (...args: any[]) => void;
|
|
19
|
+
}> extends Readable {
|
|
20
|
+
on<Event extends string | symbol>(event: Event | keyof Events, listener: Listener<Events, Event>): this;
|
|
21
|
+
once<Event extends string | symbol>(event: Event | keyof Events, listener: Listener<Events, Event>): this;
|
|
22
|
+
off<Event extends string | symbol>(event: Event | keyof Events, listener: Listener<Events, Event>): this;
|
|
23
|
+
addListener<Event extends string | symbol>(event: Event | keyof Events, listener: Listener<Events, Event>): this;
|
|
24
|
+
removeListener<Event extends string | symbol>(event: Event | keyof Events, listener: Listener<Events, Event>): this;
|
|
25
|
+
prependListener<Event extends string | symbol>(event: Event | keyof Events, listener: Listener<Events, Event>): this;
|
|
26
|
+
prependOnceListener<Event extends string | symbol>(event: Event | keyof Events, listener: Listener<Events, Event>): this;
|
|
27
|
+
}
|
|
28
|
+
export {};
|
|
29
|
+
//# sourceMappingURL=typed-readable.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typed-readable.d.ts","sourceRoot":"","sources":["../src/typed-readable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAC9B,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC;IAClF,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC;CACtF;AAED,MAAM,WAAW,cAAc,CAAC,KAAK,CAAE,SAAQ,aAAa;IAC1D,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IAC7B,GAAG,EAAE,MAAM,IAAI,CAAC;IAChB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,KAAK,QAAQ,CAAC,MAAM,EAAE,KAAK,IAAI,KAAK,SAAS,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;AAElF,+EAA+E;AAC/E,MAAM,WAAW,aAAa,CAC5B,MAAM,SAAS;KAAG,KAAK,IAAI,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI;CAAE,CACpE,SAAQ,QAAQ;IAChB,EAAE,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM,EAC9B,KAAK,EAAE,KAAK,GAAG,MAAM,MAAM,EAC3B,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,GAChC,IAAI,CAAC;IACR,IAAI,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM,EAChC,KAAK,EAAE,KAAK,GAAG,MAAM,MAAM,EAC3B,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,GAChC,IAAI,CAAC;IACR,GAAG,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM,EAC/B,KAAK,EAAE,KAAK,GAAG,MAAM,MAAM,EAC3B,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,GAChC,IAAI,CAAC;IACR,WAAW,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM,EACvC,KAAK,EAAE,KAAK,GAAG,MAAM,MAAM,EAC3B,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,GAChC,IAAI,CAAC;IACR,cAAc,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM,EAC1C,KAAK,EAAE,KAAK,GAAG,MAAM,MAAM,EAC3B,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,GAChC,IAAI,CAAC;IACR,eAAe,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM,EAC3C,KAAK,EAAE,KAAK,GAAG,MAAM,MAAM,EAC3B,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,GAChC,IAAI,CAAC;IACR,mBAAmB,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM,EAC/C,KAAK,EAAE,KAAK,GAAG,MAAM,MAAM,EAC3B,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,GAChC,IAAI,CAAC;CACT"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typed-readable.js","sourceRoot":"","sources":["../src/typed-readable.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|