https://github.com/victor141516/node-macos-system-audio-recorder
A Node.js library to record system audio on macOS using ScreenCaptureKit
https://github.com/victor141516/node-macos-system-audio-recorder
audio-record macos screen-capture-kit screencapturekit stereo-mix system-audio-record
Last synced: 3 months ago
JSON representation
A Node.js library to record system audio on macOS using ScreenCaptureKit
- Host: GitHub
- URL: https://github.com/victor141516/node-macos-system-audio-recorder
- Owner: victor141516
- Created: 2025-02-28T18:30:24.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2025-02-28T18:38:12.000Z (3 months ago)
- Last Synced: 2025-02-28T22:02:33.314Z (3 months ago)
- Topics: audio-record, macos, screen-capture-kit, screencapturekit, stereo-mix, system-audio-record
- Language: Swift
- Homepage:
- Size: 62.5 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 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
```bash
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
```typescript
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();
```## 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:
```typescript
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
}
```## 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
1. Clone the repository
2. Install dependencies: `npm install`
3. Build the Swift binary: `cd swift && ./build.sh`
4. Build TypeScript: `npm run build`
5. Run example: `npm run dev`## License
MIT
## Contributing
Contributions welcome! Please read the contributing guidelines before submitting PRs.
## Credits
Developed by Victor Fernandez (@victor141516)