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.

Quellinformationen

Repository
pproenca/webcodecs-ffmpeg
Letzte Quellaktivität
9. Januar 2026 um 10:40
Erkannte Sprache von SKILL.md
Englisch
Sterne
1
Forks
0

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

Datei-Explorer
10 Dateien

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
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`
Auf GitHub ansehen