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.

معلومات المصدر

المستودع
pproenca/webcodecs-ffmpeg
آخر نشاط في المصدر
٩ يناير ٢٠٢٦ في ١٠:٤٠
لغة SKILL.md المكتشفة
الإنجليزية
النجوم
١
التفرعات
٠

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

مستكشف الملفات
10 ملفات

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
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`
عرض على GitHub