Skip to content

cristiancmoises/turborec

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

37 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🎬 Turbo Recorder

State-of-the-art screen & audio recorder β€” Linux Β· macOS Β· Windows

Latest release License Platforms Made with FFmpeg

Turbo Recorder β€” dark, hardware-accelerated screen recorder GUI

πŸ“Ί Watch a sample recording Β Β·Β  πŸͺž also mirrored on Forgejo

Turbo Recorder captures your screen and audio at the best quality your hardware can deliver. It probes your machine and configures everything automatically β€” operating system, display server, CPU vendor, GPU, the best hardware video encoder, screen resolution, and your microphone + system-audio sources β€” then builds a real-time, correct-speed FFmpeg pipeline and records.

✨ Highlights

  • 🎯 Zero config β€” auto-detects OS, CPU, GPU, encoder, screen, mic & system audio
  • ⚑ Hardware accelerated β€” NVENC Β· Quick Sync Β· VAAPI Β· AMF Β· VideoToolbox, with automatic CPU fallback
  • 🎞️ Real-time, correct-speed capture β€” constant frame rate, so recordings never play back in slow motion
  • 🌊 Wayland and X11 β€” wlroots (sway/Hyprland/river) capture via wf-recorder, with perfectly A/V-synced mic+system audio
  • πŸ–₯️ OBS-style capture β€” full screen, a specific monitor, a window, or an exact region
  • 🎚️ You choose β€” CPU or GPU encoding Β· H.264 / H.265 / AV1 Β· lossless FLAC (or AAC/Opus) audio
  • πŸ–€ Beautiful dark GUI and a powerful CLI β€” packaged as .deb / .rpm / AppImage

Two front-ends, one engine:

Tool Platforms Interface
turborec Linux Β· macOS Β· Windows Cross-platform CLI + GUI (Python, no extra deps)
turborecorder Linux (X11) Fast, dependency-light Bash CLI

Documentation

  • πŸ“– Complete User Guide / Tutorial β€” install, GUI & CLI walkthroughs, capture modes, monitor/window capture, CPU vs GPU, audio, timed recording, a recipe cookbook, quality tips, troubleshooting and FAQ.
  • πŸ“ Changelog β€” what changed in each release.

New here? Start with the 60-second quick start.

Install

Packages (built automatically on each v* tag via GitHub Actions β€” see the Releases page):

# Debian / Ubuntu
sudo apt install ./turborec_3.0.0_all.deb

# Fedora / RHEL / openSUSE
sudo dnf install ./turborec-3.0.0-1.noarch.rpm

# Any Linux β€” portable, no install
chmod +x Turbo_Recorder-3.0.0-x86_64.AppImage
./Turbo_Recorder-3.0.0-x86_64.AppImage

Packages install turborec and turborecorder to /usr/bin, plus a desktop launcher and icon. Runtime needs: ffmpeg, python3 (β‰₯ 3.8), python3-tk (python3-tkinter on Fedora) for the GUI, and β€” on a Wayland session β€” wf-recorder for screen capture (sudo apt install wf-recorder Β· sudo dnf install wf-recorder Β· guix install wf-recorder).

From source (no packaging needed):

git clone https://github.com/cristiancmoises/turborec
cd turborec
python3 turborec.py gui      # or: detect / record / devices

Build the packages yourself β€” scripts live in packaging/:

packaging/build-deb.sh        # β†’ dist/turborec_3.0.0_all.deb  (works even without dpkg-deb)
packaging/build-rpm.sh        # β†’ dist/turborec-3.0.0-1.noarch.rpm
packaging/build-appimage.sh   # β†’ dist/Turbo_Recorder-3.0.0-x86_64.AppImage

The GUI

A focused dark interface (near-black background, cyan accents) that surfaces the auto-detected hardware up top and keeps every control one click away:

  • Segmented capture mode selector and a live FFmpeg command preview
  • Source picker (OBS-style): full screen, a specific monitor, or a window β€” with refresh
  • Encoder selector: Auto Β· GPU Β· CPU
  • Microphone / system-audio pickers with presence dots, and a re-probe button
  • A prominent Start / Stop with a live elapsed timer, pulsing REC indicator, and running output-file size
  • Output folder picker with a live filename preview

Launch it with turborec gui (or just turborec on a desktop session).

Automatic detection

Both front-ends auto-detect and configure:

  • Operating system & display server β€” X11 (x11grab), Wayland/wlroots (wf-recorder: sway, Hyprland, river), macOS Quartz, Windows GDI
  • CPU vendor β€” Intel / AMD / Apple Silicon
  • GPU & best hardware encoder, in priority order:
    • NVIDIA β†’ NVENC (h264_nvenc / hevc_nvenc / av1_nvenc)
    • Intel β†’ Quick Sync (*_qsv) or VAAPI on Linux
    • AMD β†’ AMF on Windows, VAAPI on Linux
    • Apple β†’ VideoToolbox
    • No GPU? β†’ high-quality software libx264 / libx265 automatically
  • Screen resolution β€” captured at native size (no upscaling)
  • Microphone and system-audio (loopback/monitor) sources

Quality

  • Quality presets (best/high/balanced/compact) mapped to real-time-capable parameters for each encoder (NVENC p4–p6 + constant-quality VBR + spatial AQ, QSV/VAAPI constant-quality, x264 veryfast/ultrafast + CRF).
  • BT.709 color metadata for faithful color reproduction.
  • Lossless FLAC audio by default (AAC 320k / Opus 256k optional), high-quality soxr resampler, automatic mic-channel detection, and clean mic + system mixing.
  • Real-time, correct-speed capture: presets are tuned to sustain live capture and the output is forced to constant frame rate, so recordings always play back at the right speed (no slow-motion) and stay smooth even at high resolution/fps.

Cross-platform CLI + GUI β€” turborec.py

Turbo Recorder CLI

Requirements: Python 3.8+ and FFmpeg on PATH. The GUI also needs Tk β€” bundled with the python.org installers on macOS/Windows; sudo apt install python3-tk on Debian/Ubuntu. On a Wayland session, screen capture uses wf-recorder (install it from your package manager).

# See exactly what was auto-detected on this machine
python3 turborec.py detect

# Launch the graphical interface
python3 turborec.py gui

# Record screen + microphone + system audio at best quality (default)
python3 turborec.py record

# Pick a mode / quality / fps / codec
python3 turborec.py record -m video_mic -q high -f 30 -c hevc

# Lossless audio-only (mic + system mixed)
python3 turborec.py record -m audio_both --audio-codec flac

# Record for a fixed time, then open the file when done
python3 turborec.py record -m video_both -t 60 --countdown 3 --open

# Choose the encoder backend: auto (default), GPU (hardware), or CPU (software)
python3 turborec.py record --gpu          # force hardware (NVENC/QSV/VAAPI/AMF/VideoToolbox)
python3 turborec.py record --cpu          # force software (libx264/x265)

# OBS-style: capture a specific monitor, a window, or an exact region
python3 turborec.py targets               # list screen / monitors / windows
python3 turborec.py record --monitor HDMI-0
python3 turborec.py record --window "My Browser"
python3 turborec.py record --region 1280x720+100+50

# List input devices / encoders; machine-readable detection
python3 turborec.py devices
python3 turborec.py encoders
python3 turborec.py detect --json

# Preview the FFmpeg command without recording
python3 turborec.py record --dry-run

Subcommands: detect (--json), record, gui, devices, encoders, targets. Modes: video_both, video_mic, video_system, video_only, audio_both, audio_mic, audio_system.

Stop a recording with q or Ctrl-C (the file is finalized cleanly), or use -t/--duration for a fixed length. Everything is overridable (--mic-device, --system-device, --region, --software, --open, --countdown, …) and defaults can be saved in a JSON config (--config, or $TURBOREC_CONFIG / ~/.config/turborec/config.json). Run python3 turborec.py record -h for the full list.


Linux Bash recorder β€” turborecorder

A fast, dependency-light path for X11 systems.

Requirements: FFmpeg (with VAAPI and/or NVENC), xrandr/xdpyinfo, PulseAudio or PipeWire (pactl).

Install

chmod +x turborecorder
sudo mv turborecorder /usr/local/bin/   # optional

Usage

./turborecorder                       # interactive menu
./turborecorder -m video_both -Q best # screen + mic + system audio, best quality
./turborecorder -m video_mic -C hevc -f 30
./turborecorder -S                    # force software encoding
./turborecorder -h                    # all options

Audio sources are auto-detected from your default sink/source; override with MONITOR_SOURCE= / MIC_SOURCE= environment variables if needed.

License

GPL-3.0 β€” see LICENSE.

About

Turbo Recorder - High Quality Record using FFMPEG

Topics

Resources

License

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors