markdown
macOS System Audio Recorder
A Node.js library to record system audio on macOS using ScreenCaptureKit.
Features
- Record system audio on macOS
- Get audio stream as raw PCM data
- Configure audio format details (channels, sample rate, etc.)
- Built with Swift and Node.js
Installation
npm install macos-system-audio-recorder
Requirements
- macOS operating system
- Node.js v14.16.0 or later
- Screen Recording permission enabled in System Settings > Privacy & Security
Usage
import { SystemAudioRecorder } from "macos-system-audio-recorder";
const recorder = new SystemAudioRecorder();
recorder.start();
const audioDetails = await recorder.getAudioDetails();
console.log("Audio format:", audioDetails);
const stream = recorder.getStream();
stream.on("data", (data) => {
console.log("Received audio data:", data.length, "bytes");
});
recorder.stop();
API Reference
SystemAudioRecorder
Main class to handle system audio recording.
Methods
start(): Start recording system audio
stop(): Stop recording
getAudioDetails(): Get audio format details
getStream(): Get readable stream of raw PCM audio data
Audio Details
The getAudioDetails() method returns an object with:
interface AudioDetails {
channels: 1 | 2;
bytesPerFrame: 4 | 8;
bitsPerChannel: 16 | 32;
formatFlags: number;
sampleRate: 48000 | 44100 | 32000;
formatID: number;
}
Error Handling
The library throws these custom errors:
SystemAudioRecorderError: Base error class
SystemAudioRecorderNotStartedError: When trying to access recorder before starting
SystemAudioRecorderSubprocessError: When the Swift subprocess encounters an error
Development
- Clone the repository
- Install dependencies:
npm install
- Build the Swift binary:
cd swift && ./build.sh
- Build TypeScript:
npm run build
- Run example:
npm run dev
License
MIT
Contributing
Contributions welcome! Please read the contributing guidelines before submitting PRs.
Credits
Developed by Victor Fernandez (@victor141516)