{"id":50483290,"url":"https://github.com/prostopasta/videonorma","last_synced_at":"2026-06-01T19:30:50.073Z","repository":{"id":360641034,"uuid":"1251027094","full_name":"prostopasta/videonorma","owner":"prostopasta","description":"Fix quiet videos from Slack and macOS screen recordings on Linux — CLI + Nautilus right-click script","archived":false,"fork":false,"pushed_at":"2026-05-27T09:00:24.000Z","size":45,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-27T09:24:53.156Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/prostopasta.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-27T07:16:00.000Z","updated_at":"2026-05-27T09:00:29.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/prostopasta/videonorma","commit_stats":null,"previous_names":["prostopasta/videonorma"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/prostopasta/videonorma","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prostopasta%2Fvideonorma","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prostopasta%2Fvideonorma/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prostopasta%2Fvideonorma/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prostopasta%2Fvideonorma/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/prostopasta","download_url":"https://codeload.github.com/prostopasta/videonorma/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prostopasta%2Fvideonorma/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33790676,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-01T02:00:06.963Z","response_time":115,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-01T19:30:47.516Z","updated_at":"2026-06-01T19:30:50.068Z","avatar_url":"https://github.com/prostopasta.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/logo.svg\" width=\"100\" alt=\"videonorma logo\"/\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003evideonorma\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  Fix quiet macOS screen recordings and screencasts on Linux — one click or one command.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/github/v/release/prostopasta/videonorma?style=flat-square\u0026label=latest\u0026color=brightgreen\"/\u003e\n  \u003cimg src=\"https://img.shields.io/badge/platform-Linux-blue?logo=linux\u0026logoColor=white\u0026style=flat-square\"/\u003e\n  \u003cimg src=\"https://img.shields.io/badge/tested-Ubuntu%20%7C%20Fedora%20%7C%20Arch%20%7C%20openSUSE-informational?style=flat-square\"/\u003e\n  \u003cimg src=\"https://img.shields.io/badge/powered%20by-ffmpeg--normalize-green?style=flat-square\"/\u003e\n  \u003cimg src=\"https://img.shields.io/github/license/prostopasta/videonorma?style=flat-square\u0026color=lightgrey\"/\u003e\n\u003c/p\u003e\n\n---\n\n## Table of Contents\n\n- [The problem](#the-problem)\n- [What it does](#what-it-does)\n- [Before / After](#before--after)\n- [Compatibility](#compatibility)\n- [Requirements](#requirements)\n- [Installation](#installation)\n  - [Ubuntu / Debian — .deb](#ubuntu--debian--deb-package-recommended)\n  - [Arch Linux — AUR](#arch-linux--aur)\n  - [Fedora / RHEL — .rpm](#fedora--rhel--rpm-package)\n  - [Any distro — from source](#any-distro--from-source-archive)\n  - [From git (development)](#from-git-development)\n- [Usage](#usage)\n  - [CLI](#cli)\n  - [File manager](#file-manager-gnome-cinnamon-mate)\n  - [Daemon](#daemon-automatic-background)\n- [Supported formats](#supported-formats)\n- [Roadmap](#roadmap)\n- [How it works](#how-it-works)\n- [Contributing](#contributing)\n- [License](#license)\n\n---\n\n## The problem\n\n**macOS screen recordings arrive whisper-quiet on Linux.**\n\nQuickTime, Zoom, Loom, Teams, and other screen-recording tools on macOS capture audio at a very low input level — typically **−40 to −50 dB LUFS** average loudness. When you open these files on Linux there is no automatic loudness compensation, so the video is barely audible even at maximum system volume.\n\nCommon sources of the problem:\n\n| Recording tool | Typical loudness | Audible on Linux? |\n|---|---|---|\n| QuickTime screen recording | −44 dBFS | ❌ barely |\n| Zoom cloud / local recording | −38 to −46 dBFS | ❌ barely |\n| Loom screen recording | −40 to −48 dBFS | ❌ barely |\n| macOS Screenshot.app (⌘+Shift+5) | −42 to −50 dBFS | ❌ barely |\n| Slack video message | −40 to −50 dBFS | ❌ barely |\n| OBS (default settings) | −18 to −23 dBFS | ✅ fine |\n\nvideonorma fixes all of them.\n\n## What it does\n\n- Normalizes video/audio loudness to **EBU R128 −16 LUFS** (broadcast standard)\n- **Never modifies the original** — output is `\u003cname\u003e_normalized.\u003cext\u003e` alongside the source\n- Copies the video stream without re-encoding (fast, no quality loss)\n- Re-encodes audio to AAC 192 kbps with corrected loudness\n- Works as a **CLI tool**, a **file manager right-click script**, and a **background daemon** that watches `~/Downloads` and normalizes new videos automatically\n\n## Before / After\n\n| | Original (macOS screen recording) | Normalized |\n|--|--|--|\n| Mean loudness | −46.1 LUFS | −16.0 LUFS |\n| True peak | −21.0 dBTP | −1.5 dBTP |\n| Perceived | barely audible | broadcast-level |\n\n---\n\n## Compatibility\n\n### Distributions\n\n| Distro | CLI | File manager script | Package | Notes |\n|--------|:---:|:-------------------:|:-------:|-------|\n| Ubuntu 22.04+ | ✅ | ✅ | `.deb` | Fully tested |\n| Debian 12+ | ✅ | ✅ | `.deb` | |\n| Fedora 38+ | ✅ | ✅ | `.rpm` | ffmpeg needs [RPM Fusion](#fedora--rhel--rpm-package) |\n| Arch / Manjaro | ✅ | ✅ | AUR | |\n| openSUSE Tumbleweed | ✅ | ✅ | tarball | |\n| Other systemd distros | ✅ | ⚠️ | tarball | Manual file manager setup |\n\n### File managers\n\n| File manager | Desktop | Auto-install | How |\n|---|---|:---:|---|\n| Nautilus (Files) | GNOME | ✅ | `install.sh` puts script in `~/.local/share/nautilus/scripts/` |\n| Nemo | Cinnamon | ✅ | `~/.local/share/nemo/scripts/` |\n| Caja | MATE | ✅ | `~/.config/caja/scripts/` |\n| Dolphin | KDE | ⚠️ | Manual [service menu](https://develop.kde.org/docs/apps/dolphin/service-menus/) |\n| Thunar | XFCE | ⚠️ | Edit → Configure custom actions → Command: `normalize-audio %f` |\n| Any | — | — | CLI always works regardless of desktop |\n\n---\n\n## Requirements\n\n| Dependency | Required for | Installed by |\n|---|---|---|\n| `ffmpeg` ≥ 4.2 | core normalization | `install.sh` |\n| `pipx` | installing ffmpeg-normalize | `install.sh` |\n| `ffmpeg-normalize` | core normalization | `install.sh` |\n| `libnotify` (`notify-send`) | desktop notifications | `install.sh` (optional) |\n| `xdg-utils` (`xdg-open`) | opening result in player | `install.sh` (optional) |\n| `zenity` | error dialogs | `install.sh` (optional) |\n\nA video player (VLC, mpv, Totem, etc.) is needed to play the output — `xdg-open` uses your system default.\n\n---\n\n## Installation\n\n### Ubuntu / Debian — .deb package (recommended)\n\n```bash\n# Download the latest .deb from the releases page\nwget https://github.com/prostopasta/videonorma/releases/latest/download/videonorma_$(curl -s https://api.github.com/repos/prostopasta/videonorma/releases/latest | grep tag_name | cut -d'\"' -f4 | tr -d v)_all.deb\nsudo dpkg -i videonorma_*_all.deb\nsudo apt-get install -f   # install any missing system dependencies\n```\n\nThe package installs `normalize-audio` to `/usr/local/bin/` and runs `pipx install ffmpeg-normalize` automatically.\n\n### Arch Linux — AUR\n\nInstall via your AUR helper:\n\n```bash\nyay -S videonorma\n# or\nparu -S videonorma\n```\n\n**Manual install from PKGBUILD** (download the `PKGBUILD` from the [releases page](https://github.com/prostopasta/videonorma/releases/latest)):\n\n```bash\nmkdir videonorma \u0026\u0026 cd videonorma\ncurl -LO https://github.com/prostopasta/videonorma/releases/latest/download/PKGBUILD\nmakepkg -si\n```\n\nAfter install, enable `pipx` and install `ffmpeg-normalize`:\n\n```bash\npipx install ffmpeg-normalize\n```\n\n### Fedora / RHEL — .rpm package\n\nEnable [RPM Fusion](https://rpmfusion.org/) (required for `ffmpeg`), then install the `.rpm`:\n\n```bash\nsudo dnf install -y \\\n  https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm\n\nVER=$(curl -s https://api.github.com/repos/prostopasta/videonorma/releases/latest \\\n  | grep tag_name | cut -d'\"' -f4 | tr -d v)\nsudo dnf install -y \\\n  \"https://github.com/prostopasta/videonorma/releases/latest/download/videonorma-${VER}-1.noarch.rpm\"\n```\n\nAfter install, enable `pipx` and install `ffmpeg-normalize`:\n\n```bash\npipx install ffmpeg-normalize\n```\n\n### Any distro — from source archive\n\n```bash\n# Download and extract\nwget https://github.com/prostopasta/videonorma/releases/latest/download/videonorma-VERSION.tar.gz\ntar -xzf videonorma-VERSION.tar.gz\ncd videonorma-VERSION/\n\n# Run the installer (auto-detects apt / dnf / pacman / zypper)\nbash install.sh\n```\n\n**CLI only** (no file manager integration):\n\n```bash\nbash install.sh --cli-only\n```\n\n### From git (development)\n\n```bash\ngit clone https://github.com/prostopasta/videonorma.git\ncd videonorma\nbash install.sh\n```\n\n---\n\n## Usage\n\n### CLI\n\n```bash\n# Single file — macOS screen recording, Zoom export, Loom download, etc.\nnormalize-audio recording.mov\n\n# Multiple files at once\nnormalize-audio *.mp4\n\n# Output is created next to the original:\n# recording.mov  →  recording_normalized.mov\n```\n\n### File manager (GNOME, Cinnamon, MATE)\n\nRight-click any video file → **Scripts → ▶ Play normalized**\n\nThe script:\n1. Checks if `_normalized` version already exists (skips re-processing)\n2. Shows a desktop notification while normalizing in the background\n3. Opens the result in your default player when done\n4. Logs errors to `/tmp/videonorma_last.log`\n\n### Daemon (automatic, background)\n\nThe daemon watches `~/Downloads` and notifies you when a new video arrives:\n\n1. A desktop notification pops up: **Normalize / Skip / Dismiss**\n2. Click **Normalize** — it processes in the background and opens the result when done\n3. The tray icon lets you pause watching, toggle auto-normalize, and quit\n\n**The daemon starts automatically on login** (systemd user service). Control it manually:\n\n```bash\nsystemctl --user status videonorma    # check status\nsystemctl --user stop videonorma      # stop\nsystemctl --user start videonorma     # start\njournalctl --user -u videonorma -f    # live log\n```\n\n**Additional daemon dependencies** (installed automatically by `install.sh`):\n\n| Dependency | Purpose |\n|---|---|\n| `python3-watchdog` | file system events |\n| `gir1.2-ayatanaappindicator3-0.1` | system tray icon |\n| `python3-gi` | GTK/GLib Python bindings |\n\n---\n\n## Supported formats\n\nAny container supported by ffmpeg: `.mov`, `.mp4`, `.mkv`, `.webm`, `.avi`, `.m4v`, `.ts`, and more.\n\n---\n\n## Roadmap\n\n- [x] Phase 1 — CLI tool + file manager right-click script\n- [x] Phase 2 — **videonorma daemon**: watches `~/Downloads`, desktop notification with one-click \"Normalize\", system tray icon with dark/light theme support\n- [x] Phase 3.1 — PKGBUILD for **Arch Linux / AUR** and `.rpm` for **Fedora / RHEL** — both published as GitHub Release assets\n- [ ] Phase 3.2 — **AUR submission**: real checksums in PKGBUILD, `.SRCINFO`, auto-push to `aur.archlinux.org` on every release\n- [ ] Phase 3.3 — **Fedora COPR**: auto-publish `.rpm` to a COPR repository so users can `dnf install` with a one-time `dnf copr enable`\n- [ ] Phase 4 — **Flatpak / Flathub** (cross-distro, works on Ubuntu / Fedora / Arch / openSUSE); multi-directory watch; per-directory rules; GUI settings window\n\n\u003e Want to help? See [CONTRIBUTING.md](CONTRIBUTING.md) for guides on AUR submission, COPR setup, Flatpak packaging, and package testing.\n\n---\n\n## How it works\n\n`normalize-audio` calls [`ffmpeg-normalize`](https://github.com/slhck/ffmpeg-normalize) with EBU R128 two-pass loudness normalization:\n\n```\nTarget:     −16 LUFS\nTrue peak:  −1.5 dBTP\nLRA:        11 LU\nVideo:      stream copy (no re-encode)\nAudio:      AAC 192 kbps\n```\n\n---\n\n## Keywords\n\n\u003e macOS screen recording too quiet · QuickTime recording low volume · Zoom recording quiet Linux ·\n\u003e Loom video quiet · screencast audio normalization · video loudness fix Linux · EBU R128 normalization ·\n\u003e ffmpeg normalize audio · normalize video loudness · macOS screen capture audio boost ·\n\u003e fix quiet video Linux · audio normalization tool Linux · video audio too low ·\n\u003e normalize mp4 loudness · normalize mov file audio · ffmpeg-normalize GUI · screencast loudness ·\n\u003e macOS recording volume fix · low volume video fix · LUFS normalization Linux\n\n---\n\n## Contributing\n\nContributions are welcome! See **[CONTRIBUTING.md](CONTRIBUTING.md)** for:\n\n- How to submit videonorma to **AUR** (Arch User Repository)\n- How to publish to **Fedora COPR** so Fedora/RHEL users can `dnf install`\n- How to package for **Flatpak / Flathub**\n- How to **test packages** on each distro (Ubuntu, Fedora, Arch)\n\nIf you want to take ownership of the AUR or COPR package — open an issue or start a discussion, it's very welcome.\n\n---\n\n## License\n\nMIT — see [LICENSE](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprostopasta%2Fvideonorma","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprostopasta%2Fvideonorma","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprostopasta%2Fvideonorma/lists"}