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:
Build Dependencies:
- C++17 compatible compiler (GCC/Clang)
- FFmpeg (for video and audio processing)
- OpenCV 4+ (for image processing)
Runtime Dependencies (optional):
- LibRaw (for RAW image 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 dependencies required, contains the full program) - Windows: Download
fconvert-vX.X.X-windows-x86_64.zip(no dependencies required, contains the full program) - macOS: There is no official release of fconvert for macOS. Try building it manually following the build instructions below.
Clone the repo and use makepkg to install system-wide:
$ git clone https://github.com/Eraldo-Bako/fconvert
$ cd fconvert
$ makepkg -siNote: 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 use
fconvert. If you are running the binary locally from the build folder, use./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.3Simply 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 a valid usage.-i,-intr,-interactive: Explicitly start in CLI interactive mode.
# Build:
$ sudo pacman -Syyu base-devel cmake ffmpeg opencv
# Runtime:
$ sudo pacman -Syyu libraw 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 ffmpeg-free opencv-devel
# Runtime:
$ sudo dnf install LibRaw-devel ImageMagick ghostscript libheif-devel libde265-devel x265-devel
$ sudo dnf install pandoc weasyprintNOTE: 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 ffmpeg libopencv-dev
# Runtime:
$ sudo apt install libraw-dev 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 ffmpeg opencv4
# Runtime:
> vcpkg install libraw graphicsmagick libheif libde265 x265
> winget install JohnMacFarlane.Pandoc
> winget install Typst.TypstNOTE: 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 ffmpeg opencv
# Runtime:
$ brew install libraw imagemagick ghostscript libheif libde265 x265
$ brew install pandoc typstFor 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 ReleaseNote: 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 neededContributions 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.