Install
pconv runs on Linux (x86_64), Windows (x86_64) and macOS (Apple Silicon). It needs ffmpeg and ffprobe on the PATH. Each release carries a binary for all three, with a SHA256SUMS file.
Linux (x86_64)
Section titled “Linux (x86_64)”sudo apt install ffmpeg # or your distribution's ffmpeg packagev=$(basename "$(curl -fsSLo /dev/null -w '%{url_effective}' https://github.com/gmrdad82/pconv/releases/latest)")mkdir -p ~/.local/bin && curl -fsSL "https://github.com/gmrdad82/pconv/releases/download/$v/pconv-$v-linux-x86_64.tar.gz" | tar -xz -C ~/.local/bin pconvFor --profile fast, a VAAPI GPU at /dev/dri/renderD128 with an H.264 encoder (check with vainfo). Optionally setpriv (util-linux), so an ffmpeg step ends with pconv even when pconv is killed.
macOS (Apple Silicon)
Section titled “macOS (Apple Silicon)”brew install ffmpeg-full && export PATH="$(brew --prefix ffmpeg-full)/bin:$PATH"v=$(basename "$(curl -fsSLo /dev/null -w '%{url_effective}' https://github.com/gmrdad82/pconv/releases/latest)")mkdir -p ~/.local/bin && curl -fsSL "https://github.com/gmrdad82/pconv/releases/download/$v/pconv-$v-macos-arm64.tar.gz" | tar -xz -C ~/.local/bin pconvHomebrew’s plain ffmpeg has no zimg or libwebp, so pconv needs ffmpeg-full, which is keg-only: keep its bin on your PATH.
Windows (x86_64, PowerShell)
Section titled “Windows (x86_64, PowerShell)”winget install Gyan.FFmpeg$v = (Invoke-RestMethod https://api.github.com/repos/gmrdad82/pconv/releases/latest).tag_nameInvoke-WebRequest "https://github.com/gmrdad82/pconv/releases/download/$v/pconv-$v-windows-x86_64.zip" -OutFile "$env:TEMP\pconv.zip"Expand-Archive "$env:TEMP\pconv.zip" "$env:LOCALAPPDATA\pconv" -Force[Environment]::SetEnvironmentVariable('Path', [Environment]::GetEnvironmentVariable('Path', 'User') + ";$env:LOCALAPPDATA\pconv", 'User')choco install ffmpeg works too. Open a new terminal so it sees the new PATH.
From source
Section titled “From source”On any of the three, with Rust 1.97 or newer:
cargo install --locked --git https://github.com/gmrdad82/pconv --tag vX.Y.Z pconvReplace vX.Y.Z with a tag.
What ffmpeg needs
Section titled “What ffmpeg needs”ffmpeg and ffprobe built with libx264, libvpx, libwebp and zimg. Resizing a clip with alpha needs ffmpeg 9 or newer; everything else works with older ones. --profile fast encodes through VAAPI, so it is Linux only; on Windows and macOS pconv refuses it and balanced or best do the job.
Quick start
Section titled “Quick start”On Linux and macOS, ~/.local/bin needs to be on your PATH. Then:
$ pconv --versionpconv 1.0.1$ pconv talk.mp4 readme.gifreadme.gifpconv prints the file it wrote. That is a looping GIF, 800 px wide at 12 fps (or the source’s own width and rate where smaller). Next, deliver a video for the web or make a README GIF to your size.