Convert Figma logo to code with AI

BtbN logoFFmpeg-Builds

No description available

7,316
1,005
7,316
14

Top Related Projects

44,846

Mirror of https://git.ffmpeg.org/ffmpeg.git

1,403

Docker build for FFmpeg on Ubuntu / Alpine / Centos / Scratch / nvidia / vaapi

The FFmpeg build script provides an easy way to build a static FFmpeg on OSX and Linux with non-free codecs included.

Quick Overview

BtbN/FFmpeg-Builds is a GitHub repository that provides automated builds of FFmpeg for Windows, Linux, and macOS. It offers pre-compiled binaries of FFmpeg with various configurations, making it easier for users to access up-to-date versions of FFmpeg without having to compile it themselves.

Pros

  • Regularly updated builds of FFmpeg for multiple platforms
  • Various build configurations available (shared, static, GPL, LGPL)
  • Automated build process ensures consistency and reliability
  • Saves time and effort for users who don't want to compile FFmpeg from source

Cons

  • Limited control over specific build options compared to compiling from source
  • May not include all possible FFmpeg features or custom configurations
  • Dependency on third-party builds rather than official FFmpeg releases
  • Potential security concerns when using pre-compiled binaries from unofficial sources

Getting Started

To use the FFmpeg builds from this repository:

  1. Go to the Releases page of the repository.
  2. Download the appropriate build for your operating system and desired configuration.
  3. Extract the downloaded archive to a location on your system.
  4. Add the extracted folder containing the FFmpeg executables to your system's PATH.

For example, on Windows:

# Download the latest Windows build (replace URL with the actual release link)
Invoke-WebRequest -Uri "https://github.com/BtbN/FFmpeg-Builds/releases/download/latest/ffmpeg-master-latest-win64-gpl.zip" -OutFile "ffmpeg.zip"

# Extract the archive
Expand-Archive -Path "ffmpeg.zip" -DestinationPath "C:\FFmpeg"

# Add to PATH (for the current session)
$env:Path += ";C:\FFmpeg\bin"

# Verify installation
ffmpeg -version

Note: This is not a code library, so no code examples are provided. The repository offers pre-compiled binaries of FFmpeg, which is a command-line tool for handling multimedia files and streams.

Competitor Comparisons

44,846

Mirror of https://git.ffmpeg.org/ffmpeg.git

Pros of FFmpeg

  • Official source repository with the most up-to-date codebase
  • Extensive documentation and community support
  • Flexibility to build and customize for specific needs

Cons of FFmpeg

  • Requires manual compilation, which can be complex for some users
  • May lack optimized builds for specific platforms or use cases

Code Comparison

FFmpeg:

int main(int argc, char **argv) {
    av_register_all();
    avformat_network_init();
    // ... (main code implementation)
}

FFmpeg-Builds:

# No direct code comparison available
# FFmpeg-Builds provides pre-compiled binaries

Key Differences

  • FFmpeg is the core project, while FFmpeg-Builds offers pre-compiled versions
  • FFmpeg-Builds provides ready-to-use binaries for various platforms
  • FFmpeg allows for custom compilation and modifications
  • FFmpeg-Builds may include specific optimizations for certain use cases

Use Cases

FFmpeg:

  • Developers requiring specific features or customizations
  • Projects needing the latest FFmpeg capabilities

FFmpeg-Builds:

  • Users seeking quick, pre-compiled FFmpeg installations
  • Applications requiring optimized FFmpeg builds for specific platforms

Community and Support

FFmpeg:

  • Large, active community with extensive documentation
  • Direct interaction with core developers

FFmpeg-Builds:

  • Focused on providing convenient, pre-built packages
  • May have a smaller, more specialized community
1,403

Docker build for FFmpeg on Ubuntu / Alpine / Centos / Scratch / nvidia / vaapi

Pros of FFmpeg

  • Docker-based approach, making it easier to deploy and run in containerized environments
  • Regularly updated with the latest FFmpeg versions
  • Includes multiple variants (Alpine, Nvidia, Vaapi) for different use cases

Cons of FFmpeg

  • Less customization options for build configurations
  • Larger image size compared to static builds
  • May have fewer optimization options for specific architectures

Code Comparison

FFmpeg:

FROM alpine:3.18 as build

WORKDIR /tmp/workdir

RUN apk add --no-cache \
    coreutils \
    freetype-dev \
    libtool

FFmpeg-Builds:

$ffmpegBuildOptions = @(
    '--enable-gpl',
    '--enable-version3',
    '--enable-sdl2',
    '--enable-fontconfig'
)

The FFmpeg repository uses Dockerfiles for building and deploying FFmpeg, while FFmpeg-Builds uses PowerShell scripts for compiling FFmpeg with various build options.

FFmpeg-Builds offers more granular control over the compilation process and provides pre-built binaries for different platforms. It's better suited for users who need specific optimizations or custom builds. On the other hand, FFmpeg is more convenient for users who prefer a containerized solution and don't require extensive customization.

The FFmpeg build script provides an easy way to build a static FFmpeg on OSX and Linux with non-free codecs included.

Pros of ffmpeg-build-script

  • More customizable build options, allowing users to tailor FFmpeg to their specific needs
  • Supports building on a wider range of operating systems, including macOS and various Linux distributions
  • Provides a more interactive build process with user prompts and options

Cons of ffmpeg-build-script

  • Requires more manual intervention and configuration compared to FFmpeg-Builds
  • May have longer build times due to its comprehensive nature and additional options
  • Less frequent updates and maintenance compared to FFmpeg-Builds

Code Comparison

FFmpeg-Builds (build-ffmpeg.sh):

#!/bin/bash
set -e
source /opt/ffbuild/ffbuild_env.sh

ffmpeg-build-script (build-ffmpeg):

#!/usr/bin/env bash

set -e
set -u
set -o pipefail

Both scripts use similar shell settings, but ffmpeg-build-script includes additional options for stricter error handling. FFmpeg-Builds sources an external environment file, while ffmpeg-build-script defines variables within the main script.

FFmpeg-Builds focuses on providing pre-built binaries for specific platforms, while ffmpeg-build-script offers a more flexible, user-controlled build process. The choice between the two depends on the user's needs for customization, supported platforms, and desired level of control over the build process.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

FFmpeg Static Auto-Builds

Static Windows (x86_64) and Linux (x86_64) Builds of ffmpeg master and latest release branch.

Windows builds are targetting Windows 7 and newer, provided UCRT is installed. The minimum supported version is Windows 10 22H2, no guarantees on anything older.

Linux builds are targetting RHEL/CentOS 8 (glibc-2.28 + linux-4.18) and anything more recent.

Auto-Builds

Builds run daily at 12:00 UTC (or GitHubs idea of that time) and are automatically released on success.

Auto-Builds run ONLY for win64 and linux(arm)64. There are no win32/x86 auto-builds, though you can produce win32 builds yourself following the instructions below.

Release Retention Policy

  • The last build of each month is kept for two years.
  • The last 14 daily builds are kept.
  • The special "latest" build floats and provides consistent URLs always pointing to the latest build.

Package List

For a list of included dependencies check the scripts.d directory. Every file corresponds to its respective package.

How to make a build

Prerequisites

  • bash
  • docker

Build Image

  • ./makeimage.sh target variant [addin [addin] [addin] ...]

Build FFmpeg

  • ./build.sh target variant [addin [addin] [addin] ...]

On success, the resulting zip file will be in the artifacts subdir.

Targets, Variants and Addins

Available targets:

  • win64 (x86_64 Windows)
  • win32 (x86 Windows)
  • linux64 (x86_64 Linux, glibc>=2.28, linux>=4.18)
  • linuxarm64 (arm64 (aarch64) Linux, glibc>=2.28, linux>=4.18)

The linuxarm64 target will not build some dependencies due to lack of arm64 (aarch64) architecture support or cross-compiling restrictions.

  • davs2 and xavs2: aarch64 support is broken.
  • libmfx and libva: Library for Intel QSV, so there is no aarch64 support.

Available variants:

  • gpl Includes all dependencies, even those that require full GPL instead of just LGPL.
  • lgpl Lacking libraries that are GPL-only. Most prominently libx264 and libx265.
  • nonfree Includes fdk-aac in addition to all the dependencies of the gpl variant.
  • gpl-shared Same as gpl, but comes with the libav* family of shared libs instead of pure static executables.
  • lgpl-shared Same again, but with the lgpl set of dependencies.
  • nonfree-shared Same again, but with the nonfree set of dependencies.

All of those can be optionally combined with any combination of addins:

  • 4.4/5.0/5.1/6.0/6.1/7.0 to build from the respective release branch instead of master.
  • debug to not strip debug symbols from the binaries. This increases the output size by about 250MB.
  • lto build all dependencies and ffmpeg with -flto=auto (HIGHLY EXPERIMENTAL, broken for Windows, sometimes works for Linux)