Skip to main content

dev-ffmpeg

Configure and compile FFmpeg from source for any platform and architecture. Handles cross-compilation (Linux→Windows, x86_64→ARM), license compliance (LGPL/GPL/nonfree), codec dependencies, and Docker-based builds. Use when building FFmpeg binaries, creating CI/CD pipelines for FFmpeg compilation, debugging configure failures, or selecting codecs and features for custom builds.

Informations de source

Dépôt
pproenca/webcodecs-ffmpeg
Dernière activité de la source
9 janvier 2026 à 10:40
Langue détectée de SKILL.md
anglais
Étoiles
1
Forks
0

Options d'installation

Le prompt qui vérifie d'abord la source est sélectionné par défaut. Vous pouvez passer à une commande directe ou télécharger une copie locale.

Vérifiez les fichiers source

Lisez SKILL.md et les fichiers associés affichés par SkillsMP avant de décider de l'installer.

Explorateur de fichiers
10 fichiers

Affichage de SKILL.md

SKILL.md
Instructions source · Aperçu en lecture seule
name
dev-ffmpeg
description
Configure and compile FFmpeg from source for any platform and architecture. Handles cross-compilation (Linux→Windows, x86_64→ARM), license compliance (LGPL/GPL/nonfree), codec dependencies, and Docker-based builds. Use when building FFmpeg binaries, creating CI/CD pipelines for FFmpeg compilation, debugging configure failures, or selecting codecs and features for custom builds.
# FFmpeg Build Configuration Configure working FFmpeg compilation for any target platform. ## Quick Decision: Which Build Approach? | Scenario | Approach | Reference | |----------|----------|-----------| | Need binaries quickly | Pre-built from BtbN or gyan.dev | — | | Production deployment | Docker-based build | `references/docker-builds.md` | | Development/debugging | Native build on target | Platform reference | | Cross-compiling | Docker + toolchain | `references/cross-compile.md` | | Node.js native addon | Shared libs + pkg-config | `references/shared-libs.md` | ## Build Workflow 1. **Determine requirements** → License, codecs, platform, linking 2. **Install dependencies** → Platform toolchain + codec libraries 3. **Configure FFmpeg** → `./configure` with flags 4. **Build** → `make -j$(nproc) && make install` 5. **Verify** → `ffmpeg -version` and `-buildconf` ## Step 1: License Decision ``` Will you DISTRIBUTE the binary? ├─ NO → Any configuration including --enable-nonfree └─ YES → Need GPL codecs (x264, x265)? ├─ YES → --enable-gpl (GPL v2+) └─ NO → Default LGPL 2.1+ ``` **License flags:** - Default: LGPL 2.1+ (can link with proprietary code) - `--enable-gpl`: Enables GPL codecs (x264, x265, xvid) - `--enable-version3`: Upgrade to (L)GPL v3 (needed for some libs) - `--enable-nonfree`: Patent-encumbered codecs (NOT redistributable) ## Step 2: Linking Decision | Use Case | Linking | Flags | |----------|---------|-------| | Standalone binary | Static | `--enable-static --disable-shared` | | Native addon | Shared | `--enable-shared --disable-static --enable-pic` | | Both | Both | `--enable-static --enable-shared --enable-pic` | ## Step 3: Configure Patterns ### Minimal LGPL (redistributable) ```bash ./configure \ --prefix=/usr/local \ --enable-shared \ --enable-pic \ --disable-debug \ --disable-doc ``` ### Standard GPL (common codecs) ```bash ./configure \ --prefix=/usr/local \ --enable-gpl \ --enable-shared \ --enable-pic \ --enable-libx264 \ --enable-libx265 \ --enable-libvpx \ --enable-libopus \ --enable-libvorbis \ --disable-debug \ --disable-doc ``` ### Full Build (not redistributable) ```bash ./configure \ --prefix=/usr/local \ --enable-gpl \ --enable-nonfree \ --enable-version3 \ --enable-shared \ --enable-pic \ --enable-libx264 \ --enable-libx265 \ --enable-libvpx \ --enable-libaom \ --enable-libsvtav1 \ --enable-libdav1d \ --enable-libopus \ --enable-libvorbis \ --enable-libmp3lame \ --enable-libfdk-aac \ --disable-debug \ --disable-doc ``` ### For Native Addons (Node.js/Python bindings) ```bash ./configure \ --prefix=/usr/local \ --enable-shared \ --disable-static \ --enable-pic \ --enable-gpl \ --enable-libx264 \ --enable-libx265 \ --enable-libvpx # After install, verify: pkg-config --libs --cflags libavcodec libavformat libavutil ``` ## Codec Quick Reference | Codec | Flag | License | Ubuntu Package | |-------|------|---------|----------------| | H.264 | `--enable-libx264` | GPL | libx264-dev | | H.265 | `--enable-libx265` | GPL | libx265-dev | | VP8/VP9 | `--enable-libvpx` | BSD | libvpx-dev | | AV1 decode | `--enable-libdav1d` | BSD | libdav1d-dev | | AV1 encode | `--enable-libaom` | BSD | libaom-dev | | AV1 fast | `--enable-libsvtav1` | BSD | libsvtav1-dev | | AAC HQ | `--enable-libfdk-aac` | Nonfree | libfdk-aac-dev | | MP3 | `--enable-libmp3lame` | LGPL | libmp3lame-dev | | Opus | `--enable-libopus` | BSD | libopus-dev | | Vorbis | `--enable-libvorbis` | BSD | libvorbis-dev | See `references/codec-matrix.md` for full codec dependency details. ## Environment Variables Essential for custom prefix builds: ```bash export PREFIX=/usr/local export PATH="$PREFIX/bin:$PATH" export LD_LIBRARY_PATH="$PREFIX/lib:$LD_LIBRARY_PATH" export PKG_CONFIG_PATH="$PREFIX/lib/pkgconfig:$PKG_CONFIG_PATH" export CFLAGS="-I$PREFIX/include" export LDFLAGS="-L$PREFIX/lib" ``` ## Common Errors Quick Reference | Error | Fix | |-------|-----| | `ERROR: x264 not found` | `export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig` | | `libavcodec.so: cannot open` | `export LD_LIBRARY_PATH=/usr/local/lib` | | `nasm/yasm not found` | `apt install nasm` | | `make: *** No targets` | Check `ffbuild/config.log` for configure errors | | `undefined reference to` | Check link order in `--extra-ldflags` | See `references/troubleshooting.md` for detailed solutions. ## Platform References - **Linux** → `references/platform-linux.md` - **macOS** → `references/platform-macos.md` - **Windows** → `references/platform-windows.md` - **Cross-compile** → `references/cross-compile.md` - **Docker builds** → `references/docker-builds.md` - **vcpkg (Windows)** → `references/vcpkg.md`
Voir sur GitHub