fconvert is a fast, intentional, and hardware-agnostic C++ command-line utility. Designed for Arch Linux and other Unix-like systems, it provides a seamless way to convert images, videos, and audio files using a smart "Sandbox" directory logic.
- Smart Routing: Automatically detects intent. Extract audio from a video by running:
fconvert -f movie.mp4 -mp3. - Sandbox Workflow: Automatically monitors the
input_file/directory and outputs tooutput_file/directory to keep your system clean. - Conflict Resolution: Handles existing files gracefully (auto-renaming or prompt-to-overwrite).
- CLI & Interactive: Use rapid flags for automation or the guided menu for ease of use.
- Hardware Agnostic: Optimized for high-quality CPU encoding, ensuring portability across different environments.
| Type | Category | Extensions | Operation |
|---|---|---|---|
| IMAGES | STANDARD IMAGES | jpg, jpeg, png, webp, tiff, bmp |
OpenCV |
| CAMERA RAW | cr2, nef, arw, dng, crw |
LibRAW + OpenCV | |
| VECTOR/COMPOSITE | psd, svg, pdf, gif, ico, xcf, eps, ai |
ImageMagick + Ghostscript | |
| MODERN COMPRESSED | heic, heif |
ImageMagick + OpenCV | |
| AUDIO | UNCOMPRESSED | wav, aiff, pcm, dsd |
FFmpeg |
| LOSSLESS COMPRESSED | flac, alac, wavpack |
FFmpeg | |
| LOSSY COMPRESSED | mp3, ogg, aac, m4a, opus, wma |
FFmpeg | |
| VIDEO | COMPRESSED/DELIVERY | mp4, mkv, mov, m4v |
FFmpeg |
| WEB OPTIMIZED | webm, ogg |
FFmpeg | |
| EDITING/INTERMEDIATE | prores, dnxhr, dnxhd |
FFmpeg | |
| HARDWARE/ACQUISITION | avchd, mpeg2 |
FFmpeg | |
| LEGACY | avi, wmv, flv, f4v, 3gp, 3g2 |
FFmpeg | |
| eBOOK | DOCUMENTS | pdf, epub, html, txt, docx |
Pandoc |
Note: Inputting a video file with an audio target extension (e.g.:
.mp4to-mp3) will automatically trigger a high-quality audio extraction.
Ensure you have the following installed on your system:
- C++17 compatible compiler (GCC/Clang)
- OpenCV 4+ (for image processing)
Optional: LibRaw (for RAW image processing)
- FFmpeg (for video and audio processing)
- ImageMagick (for vector/composite)
- Ghostscript (for vector/composite)
- Pandoc (for experimental document processing)
- Typst, Weasyprint, or Xelatex (as a PDF engine)
Download the latest release in the Releases Page of the repository.
- Linux: Download
fconvert-vX.X.X-x86_64.AppImage(no build dependencies required, needs the runtime dependencies) - Windows: Download
fconvert-vX.X.X-windows-x86_64.zip(no build dependencies required, needs the runtime dependencies) - macOS: There is no official release of fconvert for macOS. Try building it manually following the CMake build instructions.
Clone the repo and use makepkg to install system-wide:
$ git clone https://github.com/Eraldo-Bako/fconvert
$ cd fconvert
$ makepkg -si
Note: You could use a package helper like
yayorparusince the package is in the AUR:yay -S fconvertorparu -S fconvert
Note: If you installed the package system-wide, you can simply run
fconvert. If you are executing the binary locally from the build folder, run./fconvert.
Convert a file instantly without entering the menu:
fconvert -f image.png -webp
fconvert -f music.wav -flac
fconvert -f video.mp4 -mov
fconvert -f video.mp4 -mp3 # Automatically extracts high-quality audio
fconvert -f video.mp4 .mp3 # Valid form, added in version 2.0.3
Simply run fconvert in your terminal or the executable to enter the guided interface:
$ fconvert
__ _
/ _| | |
| |_ ___ ___ _ ____ _____ _ __| |_
| _/ __/ _ \| '_ \ \ / / _ \ '__| __|
| || (_| (_) | | | \ V / __/ | | |_
|_| \___\___/|_| |_|\_/ \___|_| \__|
---------------------------- File Converter ----------------------------
----- A fast CLI converter for Images, Videos, Audios, and Ebooks! -----
------------------------------------------------------------------------
Convert [I]mage / [V]ideo / [A]udio / [E]book / [Q]uit:
- Place your files in the
input_file/folder. - Run
fconvert. - Find your processed files in the
output_file/folder.
-v,--version: Show package version and licensing information.-h,--help: Show the help message and supported formats.-l,--list: Show a list of the supported formats.-d,--debug: Enable debug mode for detailed path-resolution logging.-cc,--clear-cache: Clear the saved cache and log files of fconvert-f <file> -<ext>: Execute a quick conversion.-f <file> .<ext>: Alternatively, using.<ext>is valid.-i,-intr,-interactive: Explicitly start in CLI interactive mode.
# Build:
$ sudo pacman -Syyu base-devel cmake opencv libraw
# Runtime:
$ sudo pacman -Syyu ffmpeg imagemagick ghostscript libheif libde265 x265
$ sudo pacman -Syyu pandoc typst
NOTE: For Arch-based distributions typst is recommended, but you can use:
Weasyprint:
$ sudo pacman -S python-weasyprintXelatex:
$ sudo pacman -S texlive-xetex
# Build:
$ sudo dnf check-update && sudo dnf upgrade
$ sudo dnf install @development-tools && sudo dnf install cmake opencv-devel LibRaw-devel
# Runtime:
$ sudo dnf install ffmpeg-free ImageMagick ghostscript libheif-devel libde265-devel x265-devel
$ sudo dnf install pandoc weasyprint
NOTE: If you want to use typst as the PDF engine, for Fedora-based distributions, use copr:
Enable the community Copr repository:
$ sudo dnf copr enable -y claaj/typstInstall via DNF normally:
$ sudo dnf install typst
# Build:
$ sudo apt update && sudo apt install build-essential cmake libopencv-dev libraw-dev
# Runtime:
$ sudo apt install ffmpeg imagemagick ghostscript libheif-dev libde265-dev libx265-dev
$ sudo apt install pandoc weasyprint
# Build:
> winget install Microsoft.VisualStudio.2022.BuildTools --override "--add Microsoft.VisualStudio.Workload.VCTools"
> winget install Kitware.CMake
> vcpkg install opencv4 libraw
# Runtime:
> vcpkg install ffmpeg graphicsmagick libheif libde265 x265
> winget install JohnMacFarlane.Pandoc
> winget install Typst.Typst
NOTE: If you installed the optional packages(graphicsmagick/imagemagick), get and install ghostscript for Windows: gs00000w64.exe
# Build (Requires Xcode Command Line Tools installed):
$ xcode-select --install
$ brew install cmake opencv libraw
# Runtime:
$ brew install ffmpeg imagemagick ghostscript libheif libde265 x265
$ brew install pandoc typst
For universal compatibility use CMake:
$ cd fconvert
$ cmake -B build -S . -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DWITH_LIBRAW=ON
# set -DWITH_LIBRAW=OFF if not needed
$ cmake --build build --config Release
Note: If you built it locally using CMake, the executable will be inside the
build/directory (run with./build/fconverton Linux/macOS or.\build\Release\fconvert.exeon Windows).
Building with GCC - For the majority of up-to-date Linux distributions, use one of the following g++ commands:
$ cd fconvert
# Linux
$ g++ -std=c++17 -O3 -s main.cpp classes/*.cpp classes/program/*.cpp -o fconvert $(pkg-config --cflags --libs opencv4 libraw) $CXXFLAGS $LDFLAGS
# Arch Based
$ g++ -std=c++17 -O3 -s main.cpp classes/*.cpp classes/program/*.cpp -o fconvert $(pkg-config --cflags --libs opencv5 libraw) $CXXFLAGS $LDFLAGS
# omit libraw if not needed
Note: The official Arch Linux repos have moved to OpenCV5. If you have manually build/installed OpenCV4, it is recommended that you build fconvert with OpenCV4. OpenCV5 works fine, it is just more bloated with AI vision functionallity that fconvert doesn't really need.
Contributions are welcome! If you find a bug or have a feature request, please open an issue and then submit a pull request with your version of the fix/feature. Before contributing, you are expected to have read & understood and to follow our Guidelines and Code of Conduct.
- Code: Apache License, Version 2.0
- Branding/Logos: CC BY-NC-ND 4.0
- Read the Notice file: NOTICE
Please use this utility responsibly and comply with relevant copyright laws. The authors are not responsible for any misuse of this software.