A Node.js library to record system audio on macOS using ScreenCaptureKit.
- 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
npm install macos-system-audio-recorder
- macOS operating system
- Node.js v14.16.0 or later
- Screen Recording permission enabled in System Settings > Privacy & Security
import { SystemAudioRecorder } from "macos-system-audio-recorder";
// Create recorder instance
const recorder = new SystemAudioRecorder();
// Start recording
recorder.start();
// Get audio format details
const audioDetails = await recorder.getAudioDetails();
console.log("Audio format:", audioDetails);
// Get audio stream
const stream = recorder.getStream();
stream.on("data", (data) => {
// Handle raw PCM audio data
console.log("Received audio data:", data.length, "bytes");
});
// Stop recording
recorder.stop();
Main class to handle system audio recording.
start()
: Start recording system audiostop()
: Stop recordinggetAudioDetails()
: Get audio format detailsgetStream()
: Get readable stream of raw PCM audio data
The getAudioDetails()
method returns an object with:
interface AudioDetails {
channels: 1 | 2; // Number of audio channels
bytesPerFrame: 4 | 8; // Bytes per audio frame
bitsPerChannel: 16 | 32; // Bits per channel
formatFlags: number; // Audio format flags
sampleRate: 48000 | 44100 | 32000; // Sample rate in Hz
formatID: number; // Audio format ID
}
The library throws these custom errors:
SystemAudioRecorderError
: Base error classSystemAudioRecorderNotStartedError
: When trying to access recorder before startingSystemAudioRecorderSubprocessError
: When the Swift subprocess encounters an error
- 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
MIT
Contributions welcome! Please read the contributing guidelines before submitting PRs.
Developed by Victor Fernandez (@victor141516)