Home
Softono
w

wulkano

Professional software vendor delivering innovative solutions on the Softono platform. Specialized in both open-source and proprietary software development.

Total Products
2

Software by wulkano

Kap
Open Source

Kap

<p align="center"> <img src="https://getkap.co/static/favicon/kap.svg" height="64"> <h3 align="center">Kap</h3> <p align="center">An open-source screen recorder built with web technology<p> <p align="center"><a href="https://circleci.com/gh/wulkano/kap"><img src="https://circleci.com/gh/wulkano/Kap.svg?style=shield" alt="Build Status"></a> <a href="https://github.com/sindresorhus/xo"><img src="https://img.shields.io/badge/code_style-XO-5ed9c7.svg" alt="XO code style"></a></p> </p> [![SWUbanner](https://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/main/banner2-direct.svg)](https://vshymanskyy.github.io/StandWithUkraine/) ## Get Kap Download the latest release: - [Apple silicon](https://getkap.co/api/download/arm64) - [Intel](https://getkap.co/api/download/x64) Or install with [Homebrew-Cask](https://caskroom.github.io): ```sh brew install --cask kap ``` ## How To Use Kap Click the menu bar icon to bring up the screen recorder. After selecting what portion of the screen you'd like to record, hit the record button to start recording. Click the menu bar icon again to stop the recording. > Tip: While recording, Option-click the menu bar icon to pause or right-click for more options. ## Contribute Read the [contribution guide](contributing.md). ## Plugins For more info on how to create plugins, read the [plugins docs](docs/plugins.md). ## Dev builds Download [`main`](https://kap-artifacts.now.sh/main) or builds for any other branch using: `https://kap-artifacts.now.sh/<branch>`. Note that these builds are unsupported and may have issues. ## Related Repositories - [Website](https://github.com/wulkano/kap-website) - [Aperture](https://github.com/wulkano/aperture) ## Newsletter [Subscribe](http://eepurl.com/ch90_1) ## Thanks - [▲ Vercel](https://vercel.com/) for fast deployments served from the edge, hosting our website, downloads, and updates. - [● CircleCI](https://circleci.com/) for supporting the open source community and making our builds fast and reliable. - [△ Sentry](https://sentry.io/) for letting us know when Kap isn't behaving and helping us eradicate said behaviour. - Our [contributors](https://github.com/wulkano/kap/contributors) who help maintain Kap and make screen recording and sharing easy.

Productivity Screen Recording & Cast
19.2K Github Stars
aperture-node
Open Source

aperture-node

# aperture-node > Record the screen on macOS from Node.js ## Install ```sh npm install aperture ``` *Requires macOS 10.13 or later.* ## Usage ```js import {setTimeout} from 'node:timers/promises'; import {recorder} from 'aperture'; const options = { fps: 30, cropArea: { x: 100, y: 100, width: 500, height: 500, }, }; await recorder.startRecording(options); await setTimeout(3000); console.log(await recorder.stopRecording()); //=> '/private/var/folders/3x/jf5977fn79jbglr7rk0tq4d00000gn/T/cdf4f7df426c97880f8c10a1600879f7.mp4' ``` See [`example.js`](example.js) if you want to quickly try it out. _(The example requires Node.js 18+)_ ## API #### screens() -> `Promise<Object[]>` Get a list of screens. The first screen is the primary screen. Example: ```js [ { id: 69732482, name: 'Color LCD', }, ]; ``` #### audioDevices() -> `Promise<Object[]>` Get a list of audio devices. Example: ```js [ { id: 'AppleHDAEngineInput:1B,0,1,0:1', name: 'Built-in Microphone', }, ]; ``` #### videoCodecs -> `Map` Get a list of available video codecs. The key is the `videoCodec` option name and the value is the codec name. It only returns `hevc` if your computer supports HEVC hardware encoding. Example: ```js Map { 'h264' => 'H264', 'hevc' => 'HEVC', 'proRes422' => 'Apple ProRes 422', 'proRes4444' => 'Apple ProRes 4444' } ``` #### recorder #### recorder.startRecording([options?](#options)) Returns a `Promise` that fullfills when the recording starts or rejects if the recording didn't start after 5 seconds. #### recorder.isFileReady `Promise` that fullfills with the path to the screen recording file when it's ready. This will never reject. Only available while a recording is happening, `undefined` otherwise. Usually, this resolves around 1 second before the recording starts, but that's not guaranteed. #### recorder.pause() Pauses the recording. To resume, call `recorder.resume()`. Returns a `Promise` that fullfills when the recording has been paused. #### recorder.resume() Resumes the recording if it's been paused. Returns a `Promise` that fullfills when the recording has been resumed. #### recorder.isPaused() Returns a `Promise` that resolves with a boolean indicating whether or not the recording is currently paused. #### recorder.stopRecording() Returns a `Promise` for the path to the screen recording file. ## Options Type: `object` #### fps Type: `number`\ Default: `30` Number of frames per seconds. #### cropArea Type: `object`\ Default: `undefined` Record only an area of the screen. Accepts an object with `x`, `y`, `width`, `height` properties. #### showCursor Type: `boolean`\ Default: `true` Show the cursor in the screen recording. #### highlightClicks Type: `boolean`\ Default: `false` Highlight cursor clicks in the screen recording. Enabling this will also enable the `showCursor` option. #### screenId Type: `number`\ Default: `aperture.screens()[0]` _(Primary screen)_ Screen to record. #### audioDeviceId Type: `string`\ Default: `undefined` Audio device to include in the screen recording. Should be one of the `id`'s from `aperture.audioDevices()`. #### videoCodec Type: `string`\ Default: `'h264'`\ Values: `'hevc' | 'h264' | 'proRes422' | 'proRes4444'` A computer with Intel 6th generation processor or newer is strongly recommended for the `hevc` codec, as otherwise it will use software encoding, which only produces 3 FPS fullscreen recording. The [`proRes422` and `proRes4444`](https://documentation.apple.com/en/finalcutpro/professionalformatsandworkflows/index.html#chapter=10%26section=2%26tasks=true) codecs are uncompressed data. They will create huge files. ## Why Aperture was built to fulfill the needs of [Kap](https://github.com/wulkano/kap), providing a JavaScript interface to the **best** available method for recording the screen. That's why it's currently a wrapper for a [Swift script](Sources/ApertureCLI/main.swift) that records the screen using the [AVFoundation framework](https://developer.apple.com/av-foundation/). #### But you can use `ffmpeg -f avfoundation...` Yes, we can, but the performance is terrible: ##### Recording the entire screen with `ffmpeg -f avfoundation -i 1 -y test.mp4`: ![ffmpeg](https://cloud.githubusercontent.com/assets/4721750/19214740/f823d4b6-8d60-11e6-8af3-4726146ef29a.jpg) ##### Recording the entire screen with Aperture: ![aperture](https://cloud.githubusercontent.com/assets/4721750/19214743/11f4aaaa-8d61-11e6-9822-4e83bcdfab24.jpg) ## Related - [Aperture](https://github.com/wulkano/Aperture) - The Swift framework used in this package

Developer Tools
352 Github Stars