video

Arch Linux, like Gentoo, uses simplistic shell-like text files to jot down build instructions, via PKGBUILD. But Arch starts out with much more in their defaults in order to follow upstream; Gentoo wants you to build up to it yourself.

Suppose I want to do this: Start off with an Arch Linux-like USE flag roster, then subtract as I please.

I'll show you how it's done, that is, I'll compare:

Arch Linux PKGBUILD Gentoo ebuild
./configure call arguments myeconfargs declaration
makedepends/optdepends declarations

Sometimes ./configure is subtractive, so stuff is included by default if unspecified. Then a lib may be in makedepends/optdepends.

RDEPEND

USE flags will trigger new dependencies; we'll see which is needed to match.

to edit the USE flags of ffmpeg.

I'll also tell you what the hell these flags mean so you don't go ehrmagerdgentoo and disable subtle things for no good reason.

green  : local USE flag

yellow : global USE flag or enabled by profile

red    : I ignore it

Support for... Arch PKGBUILD Gentoo USE flag
X11 depends ⇗ on libxext X
32-bit (x86) libraries idk lol abi_x86_32
Add support for media-libs/alsa-lib (Advanced Linux Sound Architecture) makedepends ⇗ on alsa
Enable AMD's Advanced Media Framework support via media-video/amdgpu-pro-amf makedepends ⇗ on amf
Enable Adaptive Multi-Rate Audio support via media-libs/opencore-amr makedepends ⇗ on amr
Enable Adaptive Multi-Rate Audio encoding support via media-libs/vo-amrwbenc makedepends ⇗ on amrenc
Enable Blu-ray filesystems reading support via media-libs/libbluray makedepends ⇗ on bluray
Enable Bauer Stereo-to-Binaural filter support via media-libs/libbs2b makedepends ⇗ on bs2b
Enable bzip2 compression support makedepends ⇗ on bzip2
Enable audio CDs reading via dev-libs/libcdio-paranoia makedepends ⇗ on cdio
Enable audio fingerprinting support via media-libs/chromaprint makedepends ⇗ on chromaprint
Builds libffmpeg.so to enable media playback in Chromium-based browsers like Opera and Vivaldi. makedepends ⇗ on chromium
Enable codec2 low bit rate speech codec support via media-libs/codec2 makedepends ⇗ on codec2
Enable support for various GPU-accelerated filters using NVIDIA PTX compiled with llvm-core/clang makedepends ⇗ on cuda
Enable AV1 decoding support via media-libs/dav1d makedepends ⇗ on dav1d
Add extra documentation (API, Javadoc, etc). It is recommended to enable per package instead of globally makedepends ⇗ on doc
Enable use of x11-libs/libdrm for various hardware accelerated functions and Kernel Mode Setting screen capture makedepends ⇗ on drm
Add support for DVDs makedepends ⇗ on dvd
Enable AAC (Advanced Audio Coding) encoding support via media-libs/fdk-aac in addition to FFmpeg's own implementation (warning: if USE=gpl is enabled, this produces a makedepends ⇗ on fdk
) makedepends ⇗ on redistributable
Enable text-to-speech filter support via app-accessibility/flite makedepends ⇗ on flite
Support for configuring and customizing font access via media-libs/fontconfig makedepends ⇗ on fontconfig
Enable use of filters through media-plugins/frei0r-plugins makedepends ⇗ on frei0r
Enable Bidi support for the drawtext filter via dev-libs/fribidi makedepends ⇗ on fribidi
Enable using dev-libs/libgcrypt for rtmp(t)e support (not needed if using any of USE=gmp,librtmp,openssl), and for obtaining random bytes (not needed if USE=openssl) makedepends ⇗ on gcrypt
Enables various game music formats support via media-libs/game-music-emu makedepends ⇗ on gme
Add support for dev-libs/gmp (GNU MP library) makedepends ⇗ on gmp
Enable using net-libs/gnutls for TLS/HTTPS support and other minor functions (has no effect if USE=openssl is set) makedepends ⇗ on gnutls
Enable use of GPL licensed code, should be kept enabled unless LGPL binaries are needed makedepends ⇗ on gpl
Add support for the gsm lossy speech compression codec makedepends ⇗ on gsm
Enable FireWire DV/HDV input device support via media-libs/libiec61883 makedepends ⇗ on iec61883
Enable FireWire/iLink IEEE1394 support (dv, camera, ...) makedepends ⇗ on ieee1394
Add support for the JACK Audio Connection Kit makedepends ⇗ on jack
Support for JPEG 2000, a wavelet-based image compression format makedepends ⇗ on jpeg2k
Add JPEG XL image support makedepends ⇗ on jpegxl
Enable H.265/HEVC encoding support via media-libs/kvazaar makedepends ⇗ on kvazaar
Enable the ability to support ladspa plugins makedepends ⇗ on ladspa
Add support for MP3 encoding using LAME makedepends ⇗ on lame
Enable ICC profile support via media-libs/lcms makedepends ⇗ on lcms
Enable AV1 de/encoding via media-libs/libaom (warning: this is the reference implementation and is slower than the alternatives) makedepends ⇗ on libaom
Enable ARIB text and caption decoding via media-libs/aribb24 makedepends ⇗ on libaribb24
SRT/SSA/ASS (SubRip / SubStation Alpha) subtitle support makedepends ⇗ on libass
Add support for colored ASCII-art graphics makedepends ⇗ on libcaca
Enable internet Low Bitrate Codec de/encoding support via media-libs/libilbc makedepends ⇗ on libilbc
Enable Low Complexity Communication Codec de/encoding support via media-sound/liblc3 makedepends ⇗ on liblc3
Enable use of GPU-accelerated filters from media-libs/libplacebo makedepends ⇗ on libplacebo
Enable Real Time Messaging Protocol support via media-video/rtmpdump in addition to FFmpeg's own implementation makedepends ⇗ on librtmp
Enable use of the audio resampler from media-libs/soxr makedepends ⇗ on libsoxr
Enable Optical Character Recognition (OCR) filter support via app-text/tesseract makedepends ⇗ on libtesseract
Enable use of filters through media-libs/lv2 makedepends ⇗ on lv2
Support for LZMA compression algorithm makedepends ⇗ on lzma
Add libmodplug support for playing SoundTracker-style music files makedepends ⇗ on modplug
Add support for NVIDIA Encoder/Decoder (NVENC/NVDEC) API for hardware accelerated encoding and decoding on NVIDIA cards (requires x11-drivers/nvidia-drivers) makedepends ⇗ on nvenc
Add support for the Open Audio Library makedepends ⇗ on openal
Enable OpenCL support (computation on GPU) makedepends ⇗ on opencl
Add support for OpenGL (3D graphics) makedepends ⇗ on opengl
Enable H.264 encoding support via media-libs/openh264 makedepends ⇗ on openh264
Enable MPTM tracked music files decoding support via media-libs/libopenmpt makedepends ⇗ on openmpt
Enable using dev-libs/openssl for TLS/HTTPS support and other minor functions (USE=gnutls has no effect if set) makedepends ⇗ on openssl
Enable Opus audio codec support makedepends ⇗ on opus
Enable libpostproc video post processing library support (should not disable this unless need to disable USE=gpl) makedepends ⇗ on postproc
Add sound server support via media-libs/libpulse (may be PulseAudio or PipeWire) makedepends ⇗ on pulseaudio
Enable QR encode generation support via media-gfx/qrencode makedepends ⇗ on qrcode
Enable Intel Quick Sync Video support via media-libs/libvpl makedepends ⇗ on qsv
Enable QR decoding support via media-libs/quirc makedepends ⇗ on quirc
Enable AMQP stream support via net-libs/rabbitmq-c makedepends ⇗ on rabbitmq
Enable AV1 encoding support via media-video/rav1e makedepends ⇗ on rav1e
Enable time-stretching and pitch-shifting audio filter support via media-libs/rubberband makedepends ⇗ on rubberband
Add support for SAMBA (Windows File and Printer sharing) makedepends ⇗ on samba
Enable use of the Simple Direct Layer library (required for the ffplay command) makedepends ⇗ on sdl
Enable support for various GPU-accelerated filters using Vulkan compiled with media-libs/shaderc makedepends ⇗ on shaderc
Enable Snappy compression support via app-arch/snappy (required for Vidvox Hap encoder support) makedepends ⇗ on snappy
Enable audio output support via media-sound/sndio makedepends ⇗ on sndio
Apply additional patches for efficient playback on some SoCs (e.g. ARM, RISC-V) makedepends ⇗ on soc
Add support for the speex audio codec (used for speech) makedepends ⇗ on speex
Enable Secure Reliable Transport (SRT) support via net-libs/srt makedepends ⇗ on srt
Enable SSH/SFTP support via net-libs/libssh makedepends ⇗ on ssh
Add support for SVG (Scalable Vector Graphics) makedepends ⇗ on svg
: Enable AV1 encoding support via media-libs/svt-av1 makedepends ⇗ on svt
Add support for the Theora Video Compression Codec makedepends ⇗ on theora
Enable drawtext filter support via media-libs/freetype and media-libs/harfbuzz makedepends ⇗ on truetype
Enable MP2 encoding support via media-sound/twolame in addition to FFmpeg's own implementation makedepends ⇗ on twolame
Enable support for video4linux (using linux-headers or userspace libv4l libraries) makedepends ⇗ on v4l
Enable Video Acceleration API for hardware decoding makedepends ⇗ on vaapi
Enable the Video Decode and Presentation API for Unix acceleration interface makedepends ⇗ on vdpau
: Verify upstream signatures on distfiles makedepends ⇗ on verify
Enable video stabilization filter support via media-libs/vidstab makedepends ⇗ on vidstab
Enable Netflix's perceptual video quality assessment filter support via media-libs/libvmaf makedepends ⇗ on vmaf
Add support for the OggVorbis audio codec makedepends ⇗ on vorbis
Enable VP8 and VP9 de/encoding support via media-libs/libvpx in addition to FFmpeg's own implementation (for decoding only) makedepends ⇗ on vpx
Add support for 3D graphics and computing via the Vulkan cross-platform API makedepends ⇗ on vulkan
Add support for the WebP image format makedepends ⇗ on webp
Enable h264 encoding using x264 makedepends ⇗ on x264
Enable H.265/HEVC encoding support via media-libs/x265 makedepends ⇗ on x265
Enable Dynamic Adaptive Streaming over HTTP (DASH) stream support using dev-libs/libxml2 makedepends ⇗ on xml
Add support for xvid.org's open-source mpeg-4 codec makedepends ⇗ on xvid
Enable ZMQ command receiver filter and streaming support via net-libs/zeromq makedepends ⇗ on zeromq
Enable zscale filter support using media-libs/zimg makedepends ⇗ on zimg
Add support for zlib compression makedepends ⇗ on zlib
Enable teletext decoding support via media-libs/zvbi makedepends ⇗ on zvbi
/etc/portage/package.use/ffmpeg
media-video/ffmpeg cuda fontconfig gmp ladspa libaom libass bluray bs2b libdrm fribidi glslang gsm iec61883 jpegxl modplug mp3 opus libplacebo rav1e svg rubberband snappy soxr speex srt ssh svt-av1 theora libv4l v4l vorbis webp x264 x265 libxml2 xvid zimg nvdec nvenc opencl opengl vulkan sdl lame -bluray

I also do video editing

/etc/portage/package.use/kdenlive
media-libs/libsdl2 gles2
media-libs/mlt sdl frei0r ffmpeg qt6 xml
kde-frameworks/sonnet qml
dev-qt/qt5compat qml icu
media-libs/opencv contrib contribdnn qt6
dev-qt/qtbase libproxy icu #dafuq
kde-frameworks/kconfig qml
dev-qt/qtgui egl
sys-auth/polkit-qt qt6
kde-frameworks/prison qml

I rarely use OBS for screen recording, since it is heavy

/etc/portage/package.accept_keywords/screen-recording
media-video/obs-studio ~amd64
gui-apps/wf-recorder ~amd64

subtitles

/etc/portage/package.use/aegisub
dev-lang/luajit lua52compat
dev-libs/boost icu