Building and installing vhs-decode from source using pipx
June 3, 2026 ยท View on GitHub
See build instructions in main README first, or go to the releases tab for self-contained binarys.
Building and installing vhs-decode from source using pipx
Install all dependencies required by LD-Decode and VHS-Decode:
Ubuntu/debian based (debian 12/Ubuntu 24.04 or newer base required):
sudo apt install git python3-dev pipx ffmpeg
For Arch Linux
pacman -S base-devel git qt5-base qwt fftw ffmpeg pv cmake sox python python-pipx
NixOS Linux has pre-made nur-packages for vhs-decode, cxadc and outer tools within the projects.
Install Rust Compiler (required for decode v0.3.5 onwards)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
Verify Rust Compiler
source "$HOME/.cargo/env" && echo "Rust version: $(rustc --version)" && echo "Cargo version: $(cargo --version)"
Set up pipx
pipx ensurepath
Install TBC-Video-Export
pipx install tbc-video-export
(There is also self-contained builds if install issues arise)
Optional dependencies for GPU (Nvidia Cards) FLAC compression support:
sudo apt install make ocl-icd-opencl-dev mono-runtime
Also Requires FlaLDF Download & Install via .deb for Linux
NOTES!!
HiFi-Decode preview function - the python library sounddevice requires portaudio (libportaudio2 on Ubuntu). This is not included in the self-contained binaries and has to be installed locally if not already installed. (Included with most desktop environments.)
Build and install VHS-Decode system-wide using pipx
The vhs-decode repository also has hifi-decode, cvbs-decode, ld-decode included.
Download VHS-Decode:
git clone https://github.com/oyvindln/vhs-decode.git vhs-decode
Install VHS-Decode:
cd vhs-decode
Build and install vhs-decode via pipx, using one of the below scripts.
Base installation
pipx install .
With hifi-decode gui
pipx install .[hifi_gui_qt6]
With Intel specific cpu optimizations
pipx install .[intel]
If updating or reinstalling, use the --force flag to overwrite/update the previous installation.
pipx install --force '.[intel,hifi_gui_qt6]'
Go back to the main directory with
cd ..
How to Update
From inside the vhs-decode directory:
git pull
pipx install --force '.[hifi_gui_qt6]'
If you use Intel-specific optimizations, run this instead:
pipx install --force '.[intel,hifi_gui_qt6]'
If pipx install --force fails with a permission error on one or more activation scripts in ~/.local/pipx/venvs/vhs-decode/bin/, fix permissions and reinstall:
chmod u+w ~/.local/pipx/venvs/vhs-decode/bin/activate ~/.local/pipx/venvs/vhs-decode/bin/activate.csh ~/.local/pipx/venvs/vhs-decode/bin/activate.fish ~/.local/pipx/venvs/vhs-decode/bin/Activate.ps1
pipx reinstall vhs_decode --python python3
Verify the installed package and commands:
pipx list | sed -n '/package vhs_decode/,+12p'
ld-decode --version
ld-ldf-reader-py --version
Usage
Note with WSL2 & Ubuntu, ./ in front of applications and scripts may be needed to run them or to run scripts within the folder.
Decode Launcher (Qt6)
For a basic click-to-open launcher that lets you select common tools and open them in a terminal (or start native GUI tools), use:
decode-launcher
or from source checkout:
./decode-launcher
You can drag and drop RF input files onto the launcher window or input field, and drop .json files to auto-fill the params JSON field.
Current native GUI launch targets include:
hifi-decode --guifilter-tune
Use cd vhs-decode to enter into the directory to run commands, cd .. to go back a directory.
Use Ctrl+C to stop the current process.
You don't actually type < and > on your input & output files.
Build and install in a isolated python virtual environment
Install all dependencies required by LD-Decode and VHS-Decode:
Linux
Ubuntu/debian based (debian 12/Ubuntu 24.04 or newer base required):
sudo apt install git python3-dev pipx ffmpeg
For Arch Linux:
pacman -S base-devel git qt5-base qwt fftw ffmpeg pv cmake sox python python-pipx
Install Rust Compiler (required for decode v0.3.5 onwards)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
Verify Rust Compiler
source "$HOME/.cargo/env" && echo "Rust version: $(rustc --version)" && echo "Cargo version: $(cargo --version)"
Windows
- Install Python 3.13
- Download the python installer
- Make sure to check the box requesting Python be added to the PATH
- (NOTE: Due to the numba library that is used by vhs-decode taking some time to support the latest python version do not install a major version not supported by numba yet. Currently the latest supported version is 3.14. See the numba repository if unsure.)
- Install Rust
- Download the Rust installer follow the wizard to install Rust
- Install Visual Studio Build Tools
- Download the Visual Studio Installer
- In the installer, select
Visual Studio Build Tools 2022- If there are multiple versions, select the latest year
- Click on the
Desktop Development with C++and a list of default components will be selected - Click
Installto install them
Create a virtual python environment
open a termial where you want to put the source code
python -m venv vhs_decode_venv
Enter the virtual environment
windows (powershell)
.\vhs_decode_venv\Scripts\Activate.ps1
windows (cmd)
.\vhs_decode_venv\Scripts\activate.bat
linux/macos
source ./vhs_decode_venv/bin/activate
download source and build
git clone https://github.com/oyvindln/vhs-decode.git vhs-decode
python -m pip install .[hifi_gui_qt6]
You should now be able to run vhs-decode, decode, and decode-launcher , hifi-decode --gui etc
You have to re-enter the command under "enter the virtual environent" to enter the python virtual environment and be able to access vhs-decode when you start a new session.
Using nix, needs full testing (Nix)
This project is built with Nix. The flake provides a reproducible build and generates the version file automatically.
Requirements
- Nix โ a purely functional package manager that provides reproducible, declarative builds. Flakes must be enabled.
Build
- Build the default package:
nix build
The build produces ./result with the installed package and CLI tools.
Run
- Run the main tool:
nix run
- Or run a specific tool:
nix run .#ld-decodenix run .#ld-ldf-reader-py
Development shell
- Enter a dev shell with dependencies:
nix develop
Building tools (no longer hosted in this repo)
Please see tbc-tools or decode orc for ld-decode only users.