diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 179da221..1359e706 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -10,10 +10,10 @@ on: jobs: build-linux: name: build in native linux - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 steps: - name: Checkout code - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: install libva-dev run: | @@ -37,15 +37,15 @@ jobs: build-macos: name: build in native macOS - runs-on: macos-10.15 + runs-on: macos-latest steps: - name: Checkout code - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: build ffmpeg run: | while sleep 300; do echo "=====[ $SECONDS seconds still running ]====="; done & - SKIPINSTALL=yes VERBOSE=yes ./build-ffmpeg --build --enable-gpl-and-non-free + SKIPINSTALL=yes VERBOSE=yes SKIPRAV1E=yes ./build-ffmpeg --build --enable-gpl-and-non-free kill %1 - name: check shared library run: | @@ -59,19 +59,19 @@ jobs: build-docker: name: build in docker - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 steps: - name: Checkout code - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: pull base image id: ubuntu_pull run: | - docker pull ubuntu:20.04 + docker pull ubuntu:22.04 - name: run if ubuntu_pull failed if: failure() && steps.ubuntu_pull.outcome == 'failure' run: | - docker pull ubuntu:20.04 + docker pull ubuntu:22.04 - name: build ffmpeg run: | docker build -t ffmpeg:ubuntu -f Dockerfile . @@ -81,21 +81,21 @@ jobs: build-cuda-ubuntu-docker: name: build in ubuntu docker with cuda - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 steps: - name: Checkout code - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: pull base image id: cuda_ubuntu_pull run: | - docker pull nvidia/cuda:11.4.2-devel-ubuntu20.04 - docker pull ubuntu:20.04 + docker pull nvidia/cuda:11.8.0-devel-ubuntu22.04 + docker pull ubuntu:22.04 - name: run if cuda_ubuntu_pull failed if: failure() && steps.cuda_ubuntu_pull.outcome == 'failure' run: | - docker pull nvidia/cuda:11.4.2-devel-ubuntu20.04 - docker pull ubuntu:20.04 + docker pull nvidia/cuda:11.8.0-devel-ubuntu22.04 + docker pull ubuntu:22.04 - name: build ffmpeg run: | docker build -t ffmpeg:cuda-ubuntu -f cuda-ubuntu.dockerfile . @@ -103,48 +103,24 @@ jobs: run: | docker run --rm ffmpeg:cuda-ubuntu -buildconf - build-cuda-centos-docker: - name: build in centos docker with cuda - runs-on: ubuntu-20.04 - steps: - - name: Checkout code - uses: actions/checkout@v2 - - - name: pull base image - id: cuda_centos_pull - run: | - docker pull nvidia/cuda:11.4.2-devel-centos8 - docker pull centos:8 - - name: run if cuda_centos_pull failed - if: failure() && steps.cuda_centos_pull.outcome == 'failure' - run: | - docker pull nvidia/cuda:11.4.2-devel-centos8 - docker pull centos:8 - - name: build ffmpeg - run: | - docker build -t ffmpeg:cuda-centos -f cuda-centos.dockerfile . - - name: test run ffmepg - run: | - docker run --rm ffmpeg:cuda-centos -buildconf - build-full-static: name: full static build in docker - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 steps: - name: Checkout code - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: pull base image id: cuda_ubuntu_pull run: | - docker pull nvidia/cuda:11.4.2-devel-ubuntu20.04 + docker pull nvidia/cuda:11.8.0-devel-ubuntu22.04 - name: run if cuda_ubuntu_pull failed if: failure() && steps.cuda_ubuntu_pull.outcome == 'failure' run: | - docker pull nvidia/cuda:11.4.2-devel-ubuntu20.04 + docker pull nvidia/cuda:11.8.0-devel-ubuntu22.04 - name: build ffmpeg run: | docker build -t ffmpeg:cuda-static -f full-static.dockerfile . - name: test run ffmepg run: | - docker run --rm ffmpeg:cuda-static -buildconf \ No newline at end of file + docker run --rm ffmpeg:cuda-static -buildconf diff --git a/.gitignore b/.gitignore index 4725dcff..06485f58 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ workspace .idea linux .artifacts +build diff --git a/Dockerfile b/Dockerfile index 96c67b6c..0523cab1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 AS build +FROM ubuntu:22.04 AS build ENV DEBIAN_FRONTEND noninteractive @@ -13,7 +13,7 @@ COPY ./build-ffmpeg /app/build-ffmpeg RUN SKIPINSTALL=yes /app/build-ffmpeg --build -FROM ubuntu:20.04 +FROM ubuntu:22.04 ENV DEBIAN_FRONTEND noninteractive diff --git a/README.md b/README.md index 5871b4d2..5f8864bc 100644 --- a/README.md +++ b/README.md @@ -20,16 +20,35 @@ These sources are out of control by the developers of this script. Also, this sc By downloading and using this script, you are fully aware of this. Use this script at your own risk. I maintain this script in my spare time. Please do not file bug reports for systems -other than Debian 10 and macOS 11.x, because I don't have the resources or time to maintain different systems. +other than Debian and macOS, because I don't have the resources or time to maintain different systems. -## Installation +## Requirements to build -### Quick install and run (macOS, Linux) +### macOS -Open your command line and run (curl needs to be installed): +* XCode 10.x or greater + +### Linux + +* Debian >= Buster, Ubuntu => Focal Fossa; other distributions might work too +* Rocky Linux 8 ```bash +# Debian and Ubuntu +$ sudo apt install build-essential curl + +# Fedora +$ sudo dnf install @development-tools curl +``` + +## Quick Script Installation + +Note: to enable hardware acceleration, see details below. +### Quick install and build (macOS, Linux) + +Open your command line and run (curl needs to be installed): +```bash # Without GPL and non-free codes, see https://ffmpeg.org/legal.html $ bash <(curl -s "https://raw.githubusercontent.com/markus-perl/ffmpeg-build-script/master/web-install.sh?v1") @@ -39,12 +58,15 @@ $ bash <(curl -s "https://raw.githubusercontent.com/markus-perl/ffmpeg-build-scr This command downloads the build script and automatically starts the build process. -### Common installation (macOS, Linux) +### Common install and build (macOS, Linux) ```bash $ git clone https://github.com/markus-perl/ffmpeg-build-script.git $ cd ffmpeg-build-script +# Without GPL and non-free codecs $ ./build-ffmpeg --build +# With GPL and non-free codecs +$ ./build-ffmpeg --enable-gpl-and-non-free --build ``` ## Supported Codecs @@ -54,7 +76,7 @@ $ ./build-ffmpeg --build * `libsvtav1`: SVT-AV1 Encoder and Decoder * `aom`: AV1 Video Codec (Experimental and very slow!) * `librav1e`: rust based AV1 encoder (only available if [`cargo` is installed](https://doc.rust-lang.org/cargo/getting-started/installation.html)) -* `libdav1d`: Fastest AV1 decoder developed by the VideoLAN and FFmpeg communities and sponsored by the AOMedia (only available if `meson` and `ninja` are installed) +* `libdav1d`: Fastest AV1 decoder developed by the VideoLAN and FFmpeg communities and sponsored by the AOMedia (only available if `meson` and `ninja` are available) * `fdk_aac`: Fraunhofer FDK AAC Codec * `xvidcore`: MPEG-4 video coding standard * `VP8/VP9/webm`: VP8 / VP9 Video Codec for the WebM video file format @@ -100,44 +122,115 @@ $ ./build-ffmpeg --build * H264 `h264_amf` -### Apple M1 (Apple Silicon) Support +## Build Script Usage -The script also builds FFmpeg on a new MacBook with an Apple Silicon M1 processor. +```bash +Usage: build-ffmpeg [OPTIONS] +Options: + -h, --help Display usage information + --version Display version information + -b, --build Starts the build process + --enable-gpl-and-non-free Enable non-free codecs - https://ffmpeg.org/legal.html + --latest Build latest version of dependencies if newer available + -c, --cleanup Remove all working dirs + --small Prioritize small size over speed and usability; don't build manpages. + --full-static Complete static build of ffmpeg (eg. glibc, pthreads etc...) **only Linux** + Note: Because of the NSS (Name Service Switch), glibc does not recommend static links. +``` -### LV2 Plugin Support +### Notes on static linking -If Python is available, the script will build a ffmpeg binary with lv2 plugin support. +- Because of the NSS (Name Service Switch), glibc does **not recommend** static links. See [more details here](https://sourceware.org/glibc/wiki/FAQ#Even_statically_linked_programs_need_some_shared_libraries_which_is_not_acceptable_for_me.__What_can_I_do.3F). -## Continuous Integration +- The libnpp in the CUDA SDK cannot be statically linked. +- Vaapi cannot be statically linked. -ffmpeg-build-script is very stable. Every commit runs against Linux and macOS -with https://github.com/markus-perl/ffmpeg-build-script/actions to make sure everything works as expected. -## Requirements +## Common full build (macOS, Linux) -### macOS +1) Install the [prerequisites](#requirements-to-build), above. +1) Install optional dependencies, as desired. + - If you have an NVIDIA GPU and want to enable CUDA acceleration, please refer to [these instructions](#Cuda-installation) to install the SDK. -* XCode 10.x or greater + - If you have an AMD GPU and want to enable AMF acceleration, please refer to [these instructions](#amf-installation) to install the drivers. -### Linux + - If you want to enable Vaapi acceleration (for most GPUs), please refer to [these instructions](#Vaapi-installation) to install the driver. + + - If you want the `librav1e` AV1 encoder, please install [rust](https://doc.rust-lang.org/cargo/getting-started/installation.html) to get `cargo` for the build process. Be sure to start a new shell before building, so that `cargo` is in the new path. If desired, it can be removed with `rustup self uninstall` after the build is complete. + + - If you want the `dav1d` AV1 decoder, please ensure that `python3` is installed. If using the system python installation, also ensure that `meson` and `ninja` are installed before running (otherwise the script will try to install them using `pip3`). + + - If you want the `Lv2` filter plugin, please ensure that `python3` is installed. + +1) Run the downoaded build script from the current directory, with your desired [options](#build-script-usage). + ```bash + $ ./build-ffmpeg [your parameters here] --build + ``` + - Packages will be under the `packages/` subdirectory. + - Build results will be under the `workspace/` subdirectory. + + Upon completion, build-ffmpeg will prompt you for whether to install. + +1) Once installed, if you are satisfied with your ffmpeg build, the ffmpeg-build-script directory can be removed completely. -* Debian >= Buster, Ubuntu => Focal Fossa, other Distributions might work too -* A development environment and curl is required +### CUDA installation + +CUDA is a parallel computing platform developed by NVIDIA. To be able to compile ffmpeg with CUDA support, you first +need a compatible NVIDIA GPU and the NVIDIA compiler nvcc from the CUDA toolkit. + +- Ubuntu: To install the CUDA toolkit on Ubuntu, run + ```bash + sudo apt install nvidia-cuda-toolkit + ``` + After compilation, you can run + ```bash + sudo apt install nvidia-cuda-dev && sudo apt remove nvidia-cuda-toolkit + ``` + This removes the compilers but leaves the needed shared library `libnpp`. + +- Other Linux distributions: Once you have the GPU and display driver installed, you can follow the + [official instructions](https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html) + or [this blog](https://www.pugetsystems.com/labs/hpc/How-To-Install-CUDA-10-1-on-Ubuntu-19-04-1405/) + to setup the CUDA toolkit. + +It is also beneficial to set the `CUDA_COMPUTE_CAPABILITY` environmental variable so the build is tailored to your hardware and its capabilities. There are many ways you can find your compute capability, for example by using [nvidia-smi](https://stackoverflow.com/questions/40695455/what-utility-binary-can-i-call-to-determine-an-nvidia-gpus-compute-capability). + +### Vaapi installation + +You will need the libva driver, so please install it below. ```bash # Debian and Ubuntu -$ sudo apt install build-essential curl +$ sudo apt install libva-dev vainfo -# Fedora -$ sudo dnf install @development-tools curl +# Fedora and CentOS +$ sudo dnf install libva-devel libva-intel-driver libva-utils ``` -### Build in Docker (Linux) +### AMF installation + +To use the AMF encoder, you will need to be using the AMD GPU Pro drivers with OpenCL support. +Download the drivers from https://www.amd.com/en/support and install the appropriate opencl versions. + +```bash +./amdgpu-pro-install -y --opencl=rocr,legacy +``` + +### LV2 Plugin Support + +If python 3 is available, the script will build a ffmpeg binary with [Lv2 filter](https://github.com/lv2/lv2/wiki) plugin support. + +### Apple M1 (Apple Silicon) Support + +The script also builds FFmpeg on a new MacBook with an Apple Silicon M1 processor. + + +## Build in Docker (Linux) With Docker, FFmpeg can be built reliably without altering the host system. Also, there is no need to have the CUDA SDK installed outside of the Docker image. -##### Default +#### Default If you're running an operating system other than the one above, a completely static build may work. To build a full statically linked binary inside Docker, just run the following command: @@ -146,17 +239,12 @@ statically linked binary inside Docker, just run the following command: $ docker build --tag=ffmpeg:default --output type=local,dest=build -f Dockerfile . ``` -##### CUDA +#### CUDA These builds are always built with the --enable-gpl-and-non-free switch, as CUDA is non-free. See https://ffmpeg.org/legal.html -```bash -export DOCKER_BUILDKIT=1 - -## Set the DIST (`ubuntu` or `centos`) and VER (ubuntu: `16.04` , `18.04`, `20.04` or centos: `7`, `8`) environment variables to select the preferred Docker base image. -$ export DIST=centos -$ export VER=8 +```bash ## Start the build -$ docker build --tag=ffmpeg:cuda-$DIST -f cuda-$DIST.dockerfile --build-arg VER=$VER . +$ docker build --tag=ffmpeg:cuda --output type=local,dest=build -f cuda-ubuntu.dockerfile . ``` Build an `export.dockerfile` that copies only what you need from the image you just built as follows. When running, @@ -165,7 +253,7 @@ matched the operating system and version, it should work well with dynamic links the `export.dockerfile` and copy the necessary libraries and try again. ```bash -$ docker build --output type=local,dest=build -f export.dockerfile --build-arg DIST=$DIST . +$ docker build --output type=local,dest=build -f export.dockerfile . $ ls build bin lib $ ls build/bin @@ -174,7 +262,21 @@ $ ls build/lib libnppc.so.11 libnppicc.so.11 libnppidei.so.11 libnppig.so.11 ``` -##### Full static version +--- + +By default, newer docker versions don't allow GPU access while building the image. **If you intend to build with docker on the same system you intend to run the built image on**, allowing this access is beneficial for detecting CUDA compute capability, and tailoring the build to your hardware. + +[some steps](https://stackoverflow.com/a/77348905/7764138) are required on the host machine to allow CUDA access during build: + +1. Install NVIDIA docker runtime and toolkit `sudo apt install nvidia-container-runtime nvidia-container-toolkit` +2. Modify `/etc/docker/daemon.json` and add the line `"default-runtime": "nvidia"` +3. Restart Docker: `sudo systemctl restart docker` +4. Disable buildkit with `export DOCKER_BUILDKIT=0` before building +5. If all this doesn't work, also remove buildx: `sudo apt remove docker-buildx-plugin` + +You should now see the message `CUDA env variable provided` during the docker build process. + +#### Full static version If you're running an operating system other than the one above, a completely static build may work. To build a full statically linked binary inside Docker, just run the following command: @@ -208,70 +310,6 @@ $ sudo docker build --tag=ffmpeg:cuda -f cuda-ubuntu.dockerfile . $ sudo docker run --gpus all ffmpeg-cuda -hwaccel cuvid -c:v h264_cuvid -i https://files.coconut.co.s3.amazonaws.com/test.mp4 -c:v hevc_nvenc -vf scale_npp=-1:1080 - > test.mp4 ``` -### Common build (macOS, Linux) - -If you want to enable CUDA, please refer to [these](#Cuda-installation) and install the SDK. - -If you want to enable Vaapi, please refer to [these](#Vaapi-installation) and install the driver. - -```bash -$ ./build-ffmpeg --build -``` - -## Cuda installation - -CUDA is a parallel computing platform developed by NVIDIA. To be able to compile ffmpeg with CUDA support, you first -need a compatible NVIDIA GPU. - -- Ubuntu: To install the CUDA toolkit on Ubuntu, run "sudo apt install nvidia-cuda-toolkit" -- Other Linux distributions: Once you have the GPU and display driver installed, you can follow the - [official instructions](https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html) - or [this blog](https://www.pugetsystems.com/labs/hpc/How-To-Install-CUDA-10-1-on-Ubuntu-19-04-1405/) - to setup the CUDA toolkit. - -## Vaapi installation - -You will need the libva driver, so please install it below. - -```bash -# Debian and Ubuntu -$ sudo apt install libva-dev vainfo - -# Fedora and CentOS -$ sudo dnf install libva-devel libva-intel-driver libva-utils -``` - -## AMF installation - -To use the AMF encoder, you will need to be using the AMD GPU Pro drivers with OpenCL support. -Download the drivers from https://www.amd.com/en/support and install the appropriate opencl versions. - -```bash -./amdgpu-pro-install -y --opencl=rocr,legacy -``` - -## Usage - -```bash -Usage: build-ffmpeg [OPTIONS] -Options: - -h, --help Display usage information - --version Display version information - -b, --build Starts the build process - --enable-gpl-and-non-free Enable non-free codecs - https://ffmpeg.org/legal.html - --latest Build latest version of dependencies if newer available - -c, --cleanup Remove all working dirs - --full-static Complete static build of ffmpeg (eg. glibc, pthreads etc...) **only Linux** - Note: Because of the NSS (Name Service Switch), glibc does not recommend static links. -``` - -## Notes of static link - -- Because of the NSS (Name Service Switch), glibc does **not recommend** static links. See detail - below: https://sourceware.org/glibc/wiki/FAQ#Even_statically_linked_programs_need_some_shared_libraries_which_is_not_acceptable_for_me.__What_can_I_do.3F - -- The libnpp in the CUDA SDK cannot be statically linked. -- Vaapi cannot be statically linked. Contact ------- @@ -285,226 +323,428 @@ Tested on * Debian 10 * Ubuntu 20.04 +## Continuous Integration + +ffmpeg-build-script is very stable. Every commit runs against Linux and macOS +with https://github.com/markus-perl/ffmpeg-build-script/actions to make sure everything works as expected. + + Example ------- ``` -./build-ffmpeg --build +CUDA_COMPUTE_CAPABILITY=75 SKIPINSTALL=yes ./build-ffmpeg --build --enable-gpl-and-non-free ffmpeg-build-script v1.xx ========================= Using 12 make jobs simultaneously. +With GPL and non-free codecs +cargo not installed. rav1e encoder will not be available. + +building giflib - version 5.2.1 +======================= +Downloading https://netcologne.dl.sourceforge.net/project/giflib/giflib-5.2.1.tar.gz as giflib-5.2.1.tar.gz +... Done +Extracted giflib-5.2.1.tar.gz +$ make +$ make PREFIX=/app/workspace install -building yasm +building pkg-config - version 0.29.2 +======================= +Downloading https://pkgconfig.freedesktop.org/releases/pkg-config-0.29.2.tar.gz as pkg-config-0.29.2.tar.gz +... Done +Extracted pkg-config-0.29.2.tar.gz +$ ./configure --silent --prefix=/app/workspace --with-pc-path=/app/workspace/lib/pkgconfig --with-internal-glib +$ make -j 12 +$ make install + +building yasm - version 1.3.0 ======================= Downloading https://github.com/yasm/yasm/releases/download/v1.3.0/yasm-1.3.0.tar.gz as yasm-1.3.0.tar.gz ... Done Extracted yasm-1.3.0.tar.gz -$ ./configure --prefix=/Volumes/Daten/dev/mac/ffmpeg-build-script/workspace +$ ./configure --prefix=/app/workspace $ make -j 12 $ make install -building nasm +building nasm - version 2.16.01 ======================= -Downloading https://www.nasm.us/pub/nasm/releasebuilds/2.15.05/nasm-2.15.05.tar.xz as nasm-2.15.05.tar.xz +Downloading https://www.nasm.us/pub/nasm/releasebuilds/2.16.01/nasm-2.16.01.tar.xz as nasm-2.16.01.tar.xz ... Done -Extracted nasm-2.15.05.tar.xz -$ ./configure --prefix=/Volumes/Daten/dev/mac/ffmpeg-build-script/workspace --disable-shared --enable-static +Extracted nasm-2.16.01.tar.xz +$ ./configure --prefix=/app/workspace --disable-shared --enable-static $ make -j 12 $ make install -building pkg-config +building zlib - version 1.2.13 ======================= -Downloading https://pkgconfig.freedesktop.org/releases/pkg-config-0.29.2.tar.gz as pkg-config-0.29.2.tar.gz +Downloading https://github.com/madler/zlib/releases/download/v1.2.13/zlib-1.2.13.tar.gz as zlib-1.2.13.tar.gz ... Done -Extracted pkg-config-0.29.2.tar.gz -$ ./configure --silent --prefix=/Volumes/Daten/dev/mac/ffmpeg-build-script/workspace --with-pc-path=/Volumes/Daten/dev/mac/ffmpeg-build-script/workspace/lib/pkgconfig --with-internal-glib +Extracted zlib-1.2.13.tar.gz +$ ./configure --static --prefix=/app/workspace $ make -j 12 $ make install -building zlib +building m4 - version 1.4.19 ======================= -Downloading https://www.zlib.net/zlib-1.2.11.tar.gz as zlib-1.2.11.tar.gz +Downloading https://ftp.gnu.org/gnu/m4/m4-1.4.19.tar.gz as m4-1.4.19.tar.gz ... Done -Extracted zlib-1.2.11.tar.gz -$ ./configure --static --prefix=/Volumes/Daten/dev/mac/ffmpeg-build-script/workspace +Extracted m4-1.4.19.tar.gz +$ ./configure --prefix=/app/workspace $ make -j 12 $ make install -building openssl +building autoconf - version 2.71 ======================= -Downloading https://www.openssl.org/source/openssl-1.1.1h.tar.gz as openssl-1.1.1h.tar.gz +Downloading https://ftp.gnu.org/gnu/autoconf/autoconf-2.71.tar.gz as autoconf-2.71.tar.gz ... Done -Extracted openssl-1.1.1h.tar.gz -$ ./config --prefix=/Volumes/Daten/dev/mac/ffmpeg-build-script/workspace --openssldir=/Volumes/Daten/dev/mac/ffmpeg-build-script/workspace --with-zlib-include=/Volumes/Daten/dev/mac/ffmpeg-build-script/workspace/include/ --with-zlib-lib=/Volumes/Daten/dev/mac/ffmpeg-build-script/workspace/lib no-shared zlib +Extracted autoconf-2.71.tar.gz +$ ./configure --prefix=/app/workspace $ make -j 12 $ make install -building cmake +building automake - version 1.16.5 ======================= -Downloading https://cmake.org/files/v3.18/cmake-3.18.4.tar.gz as cmake-3.18.4.tar.gz +Downloading https://ftp.gnu.org/gnu/automake/automake-1.16.5.tar.gz as automake-1.16.5.tar.gz ... Done -Extracted cmake-3.18.4.tar.gz -$ ./configure --prefix=/Volumes/Daten/dev/mac/ffmpeg-build-script/workspace --system-zlib +Extracted automake-1.16.5.tar.gz +$ ./configure --prefix=/app/workspace $ make -j 12 $ make install -building x264 +building libtool - version 2.4.7 ======================= -Downloading https://code.videolan.org/videolan/x264/-/archive/stable/x264-stable.tar.bz2 as x264-stable.tar.bz2 +Downloading https://ftpmirror.gnu.org/libtool/libtool-2.4.7.tar.gz as libtool-2.4.7.tar.gz ... Done -Extracted x264-stable.tar.bz2 -$ ./configure --prefix=/Volumes/Daten/dev/mac/ffmpeg-build-script/workspace --enable-static --enable-pic +Extracted libtool-2.4.7.tar.gz +$ ./configure --prefix=/app/workspace --enable-static --disable-shared +$ make -j 12 +$ make install + +building openssl - version 1.1.1w +======================= +Downloading https://www.openssl.org/source/openssl-1.1.1w.tar.gz as openssl-1.1.1w.tar.gz +... Done +Extracted openssl-1.1.1w.tar.gz +$ ./config --prefix=/app/workspace --openssldir=/app/workspace --with-zlib-include=/app/workspace/include/ --with-zlib-lib=/app/workspace/lib no-shared zlib +$ make -j 12 +$ make install_sw + +building cmake - version 3.27.7 +======================= +Downloading https://github.com/Kitware/CMake/releases/download/v3.27.7/cmake-3.27.7.tar.gz as cmake-3.27.7.tar.gz +... Done +Extracted cmake-3.27.7.tar.gz +$ ./configure --prefix=/app/workspace --parallel=12 -- -DCMAKE_USE_OPENSSL=OFF +$ make -j 12 +$ make install + +building dav1d - version 1.1.0 +======================= +Downloading https://code.videolan.org/videolan/dav1d/-/archive/1.1.0/dav1d-1.1.0.tar.gz as dav1d-1.1.0.tar.gz +... Done +Extracted dav1d-1.1.0.tar.gz +$ meson build --prefix=/app/workspace --buildtype=release --default-library=static --libdir=/app/workspace/lib +$ ninja -C build +$ ninja -C build install + +building svtav1 - version 1.7.0 +======================= +Downloading https://gitlab.com/AOMediaCodec/SVT-AV1/-/archive/v1.7.0/SVT-AV1-v1.7.0.tar.gz as svtav1-1.7.0.tar.gz +... Done +Extracted svtav1-1.7.0.tar.gz +$ cmake -DCMAKE_INSTALL_PREFIX=/app/workspace -DENABLE_SHARED=off -DBUILD_SHARED_LIBS=OFF ../.. -GUnix Makefiles -DCMAKE_BUILD_TYPE=Release +$ make -j 12 +$ make install +$ cp SvtAv1Enc.pc /app/workspace/lib/pkgconfig/ +$ cp SvtAv1Dec.pc /app/workspace/lib/pkgconfig/ + +building x264 - version 941cae6d +======================= +Downloading https://code.videolan.org/videolan/x264/-/archive/941cae6d/x264-941cae6d.tar.gz as x264-941cae6d.tar.gz +... Done +Extracted x264-941cae6d.tar.gz +$ ./configure --prefix=/app/workspace --enable-static --enable-pic CXXFLAGS=-fPIC $ make -j 12 $ make install $ make install-lib-static -building x265 +building x265 - version 3.5 ======================= Downloading https://github.com/videolan/x265/archive/Release_3.5.tar.gz as x265-3.5.tar.gz ... Done Extracted x265-3.5.tar.gz -$ cmake -DCMAKE_INSTALL_PREFIX=/Volumes/Daten/dev/mac/ffmpeg-build-script/workspace -DENABLE_SHARED=off -DBUILD_SHARED_LIBS=OFF ../../source +$ cmake ../../../source -DCMAKE_INSTALL_PREFIX=/app/workspace -DENABLE_SHARED=OFF -DBUILD_SHARED_LIBS=OFF -DHIGH_BIT_DEPTH=ON -DENABLE_HDR10_PLUS=ON -DEXPORT_C_API=OFF -DENABLE_CLI=OFF -DMAIN12=ON +$ make -j 12 +$ cmake ../../../source -DCMAKE_INSTALL_PREFIX=/app/workspace -DENABLE_SHARED=OFF -DBUILD_SHARED_LIBS=OFF -DHIGH_BIT_DEPTH=ON -DENABLE_HDR10_PLUS=ON -DEXPORT_C_API=OFF -DENABLE_CLI=OFF +$ make -j 12 +$ cmake ../../../source -DCMAKE_INSTALL_PREFIX=/app/workspace -DENABLE_SHARED=OFF -DBUILD_SHARED_LIBS=OFF -DEXTRA_LIB=x265_main10.a;x265_main12.a;-ldl -DEXTRA_LINK_FLAGS=-L. -DLINKED_10BIT=ON -DLINKED_12BIT=ON $ make -j 12 +$ ar -M $ make install -building libvpx +building libvpx - version 1.13.1 ======================= -Downloading https://github.com/webmproject/libvpx/archive/v1.9.0.tar.gz as libvpx-1.9.0.tar.gz +Downloading https://github.com/webmproject/libvpx/archive/refs/tags/v1.13.1.tar.gz as libvpx-1.13.1.tar.gz ... Done -Extracted libvpx-1.9.0.tar.gz -Applying Darwin patch -$ ./configure --prefix=/Volumes/Daten/dev/mac/ffmpeg-build-script/workspace --disable-unit-tests --disable-shared --as=yasm +Extracted libvpx-1.13.1.tar.gz +$ ./configure --prefix=/app/workspace --disable-unit-tests --disable-shared --disable-examples --as=yasm --enable-vp9-highbitdepth $ make -j 12 $ make install -building xvidcore +building xvidcore - version 1.3.7 ======================= Downloading https://downloads.xvid.com/downloads/xvidcore-1.3.7.tar.gz as xvidcore-1.3.7.tar.gz ... Done Extracted xvidcore-1.3.7.tar.gz -$ ./configure --prefix=/Volumes/Daten/dev/mac/ffmpeg-build-script/workspace --disable-shared --enable-static +$ ./configure --prefix=/app/workspace --disable-shared --enable-static $ make -j 12 $ make install -$ rm /Volumes/Daten/dev/mac/ffmpeg-build-script/workspace/lib/libxvidcore.4.dylib +$ rm /app/workspace/lib/libxvidcore.so /app/workspace/lib/libxvidcore.so.4 /app/workspace/lib/libxvidcore.so.4.3 -building vid_stab +building vid_stab - version 1.1.1 ======================= -Downloading https://github.com/georgmartius/vid.stab/archive/v1.1.0.tar.gz as vid.stab-1.1.0.tar.gz +Downloading https://github.com/georgmartius/vid.stab/archive/v1.1.1.tar.gz as vid.stab-1.1.1.tar.gz ... Done -Extracted vid.stab-1.1.0.tar.gz -$ cmake -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX=/Volumes/Daten/dev/mac/ffmpeg-build-script/workspace -DUSE_OMP=OFF -DENABLE_SHARED=off . +Extracted vid.stab-1.1.1.tar.gz +$ cmake -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX=/app/workspace -DUSE_OMP=OFF -DENABLE_SHARED=off . $ make $ make install -building av1 +building av1 - version 7b5f665 ======================= -Downloading https://aomedia.googlesource.com/aom/+archive/430d58446e1f71ec2283af0d6c1879bc7a3553dd.tar.gz as av1.tar.gz +Downloading https://aomedia.googlesource.com/aom/+archive/7b5f665.tar.gz as av1.tar.gz ... Done Extracted av1.tar.gz -$ cmake -DENABLE_TESTS=0 -DCMAKE_INSTALL_PREFIX=/Volumes/Daten/dev/mac/ffmpeg-build-script/workspace -DCMAKE_INSTALL_LIBDIR=lib /Volumes/Daten/dev/mac/ffmpeg-build-script/packages/av1 +$ cmake -DENABLE_TESTS=0 -DENABLE_EXAMPLES=0 -DCMAKE_INSTALL_PREFIX=/app/workspace -DCMAKE_INSTALL_LIBDIR=lib /app/packages/av1 $ make -j 12 $ make install -building opencore +building zimg - version 3.0.5 +======================= +Downloading https://github.com/sekrit-twc/zimg/archive/refs/tags/release-3.0.5.tar.gz as zimg-3.0.5.tar.gz +... Done +Extracted zimg-3.0.5.tar.gz +$ /app/workspace/bin/libtoolize -i -f -q +$ ./autogen.sh --prefix=/app/workspace +$ ./configure --prefix=/app/workspace --enable-static --disable-shared +$ make -j 12 +$ make install + +building lv2 - version 1.18.10 +======================= +Downloading https://lv2plug.in/spec/lv2-1.18.10.tar.xz as lv2-1.18.10.tar.xz +... Done +Extracted lv2-1.18.10.tar.xz +$ meson build --prefix=/app/workspace --buildtype=release --default-library=static --libdir=/app/workspace/lib +$ ninja -C build +$ ninja -C build install + +building waflib - version b600c92 +======================= +Downloading https://gitlab.com/drobilla/autowaf/-/archive/b600c92/autowaf-b600c92.tar.gz as autowaf.tar.gz +... Done +Extracted autowaf.tar.gz + +building serd - version 0.30.16 +======================= +Downloading https://gitlab.com/drobilla/serd/-/archive/v0.30.16/serd-v0.30.16.tar.gz as serd-v0.30.16.tar.gz +... Done +Extracted serd-v0.30.16.tar.gz +$ meson build --prefix=/app/workspace --buildtype=release --default-library=static --libdir=/app/workspace/lib +$ ninja -C build +$ ninja -C build install + +building pcre - version 8.45 +======================= +Downloading https://altushost-swe.dl.sourceforge.net/project/pcre/pcre/8.45/pcre-8.45.tar.gz as pcre-8.45.tar.gz +... Done +Extracted pcre-8.45.tar.gz +$ ./configure --prefix=/app/workspace --disable-shared --enable-static +$ make -j 12 +$ make install + +building sord - version 0.16.14 +======================= +Downloading https://gitlab.com/drobilla/sord/-/archive/v0.16.14/sord-v0.16.14.tar.gz as sord-v0.16.14.tar.gz +... Done +Extracted sord-v0.16.14.tar.gz +$ meson build --prefix=/app/workspace --buildtype=release --default-library=static --libdir=/app/workspace/lib +$ ninja -C build +$ ninja -C build install + +building sratom - version 0.6.14 +======================= +Downloading https://gitlab.com/lv2/sratom/-/archive/v0.6.14/sratom-v0.6.14.tar.gz as sratom-v0.6.14.tar.gz +... Done +Extracted sratom-v0.6.14.tar.gz +$ meson build --prefix=/app/workspace --buildtype=release --default-library=static --libdir=/app/workspace/lib +$ ninja -C build +$ ninja -C build install + +building lilv - version 0.24.20 ======================= -Downloading https://deac-riga.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-0.1.5.tar.gz as opencore-amr-0.1.5.tar.gz +Downloading https://gitlab.com/lv2/lilv/-/archive/v0.24.20/lilv-v0.24.20.tar.gz as lilv-v0.24.20.tar.gz ... Done -Extracted opencore-amr-0.1.5.tar.gz -$ ./configure --prefix=/Volumes/Daten/dev/mac/ffmpeg-build-script/workspace --disable-shared --enable-static +Extracted lilv-v0.24.20.tar.gz +$ meson build --prefix=/app/workspace --buildtype=release --default-library=static --libdir=/app/workspace/lib +$ ninja -C build +$ ninja -C build install + +building opencore - version 0.1.6 +======================= +Downloading https://deac-ams.dl.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-0.1.6.tar.gz as opencore-amr-0.1.6.tar.gz +... Done +Extracted opencore-amr-0.1.6.tar.gz +$ ./configure --prefix=/app/workspace --disable-shared --enable-static $ make -j 12 $ make install -building lame +building lame - version 3.100 ======================= -Downloading https://netcologne.dl.sourceforge.net/project/lame/lame/3.100/lame-3.100.tar.gz as lame-3.100.tar.gz +Downloading https://sourceforge.net/projects/lame/files/lame/3.100/lame-3.100.tar.gz/download?use_mirror=gigenet as lame-3.100.tar.gz ... Done Extracted lame-3.100.tar.gz -$ ./configure --prefix=/Volumes/Daten/dev/mac/ffmpeg-build-script/workspace --disable-shared --enable-static +$ ./configure --prefix=/app/workspace --disable-shared --enable-static $ make -j 12 $ make install -building opus +building opus - version 1.4 ======================= -Downloading https://archive.mozilla.org/pub/opus/opus-1.3.1.tar.gz as opus-1.3.1.tar.gz +Downloading https://downloads.xiph.org/releases/opus/opus-1.4.tar.gz as opus-1.4.tar.gz ... Done -Extracted opus-1.3.1.tar.gz -$ ./configure --prefix=/Volumes/Daten/dev/mac/ffmpeg-build-script/workspace --disable-shared --enable-static +Extracted opus-1.4.tar.gz +$ ./configure --prefix=/app/workspace --disable-shared --enable-static $ make -j 12 $ make install -building libogg +building libogg - version 1.3.5 ======================= -Downloading https://ftp.osuosl.org/pub/xiph/releases/ogg/libogg-1.3.3.tar.gz as libogg-1.3.3.tar.gz +Downloading https://ftp.osuosl.org/pub/xiph/releases/ogg/libogg-1.3.5.tar.xz as libogg-1.3.5.tar.xz ... Done -Extracted libogg-1.3.3.tar.gz -$ ./configure --prefix=/Volumes/Daten/dev/mac/ffmpeg-build-script/workspace --disable-shared --enable-static +Extracted libogg-1.3.5.tar.xz +$ ./configure --prefix=/app/workspace --disable-shared --enable-static $ make -j 12 $ make install -building libvorbis +building libvorbis - version 1.3.7 ======================= -Downloading https://ftp.osuosl.org/pub/xiph/releases/vorbis/libvorbis-1.3.6.tar.gz as libvorbis-1.3.6.tar.gz +Downloading https://ftp.osuosl.org/pub/xiph/releases/vorbis/libvorbis-1.3.7.tar.gz as libvorbis-1.3.7.tar.gz ... Done -Extracted libvorbis-1.3.6.tar.gz -$ ./configure --prefix=/Volumes/Daten/dev/mac/ffmpeg-build-script/workspace --with-ogg-libraries=/Volumes/Daten/dev/mac/ffmpeg-build-script/workspace/lib --with-ogg-includes=/Volumes/Daten/dev/mac/ffmpeg-build-script/workspace/include/ --enable-static --disable-shared --disable-oggtest +Extracted libvorbis-1.3.7.tar.gz +$ ./configure --prefix=/app/workspace --with-ogg-libraries=/app/workspace/lib --with-ogg-includes=/app/workspace/include/ --enable-static --disable-shared --disable-oggtest $ make -j 12 $ make install -building libtheora +building libtheora - version 1.1.1 ======================= Downloading https://ftp.osuosl.org/pub/xiph/releases/theora/libtheora-1.1.1.tar.gz as libtheora-1.1.1.tar.gz ... Done Extracted libtheora-1.1.1.tar.gz -$ ./configure --prefix=/Volumes/Daten/dev/mac/ffmpeg-build-script/workspace --with-ogg-libraries=/Volumes/Daten/dev/mac/ffmpeg-build-script/workspace/lib --with-ogg-includes=/Volumes/Daten/dev/mac/ffmpeg-build-script/workspace/include/ --with-vorbis-libraries=/Volumes/Daten/dev/mac/ffmpeg-build-script/workspace/lib --with-vorbis-includes=/Volumes/Daten/dev/mac/ffmpeg-build-script/workspace/include/ --enable-static --disable-shared --disable-oggtest --disable-vorbistest --disable-examples --disable-asm --disable-spec +$ ./configure --prefix=/app/workspace --with-ogg-libraries=/app/workspace/lib --with-ogg-includes=/app/workspace/include/ --with-vorbis-libraries=/app/workspace/lib --with-vorbis-includes=/app/workspace/include/ --enable-static --disable-shared --disable-oggtest --disable-vorbistest --disable-examples --disable-asm --disable-spec $ make -j 12 $ make install -building fdk_aac +building fdk_aac - version 2.0.2 ======================= -Downloading https://sourceforge.net/projects/opencore-amr/files/fdk-aac/fdk-aac-2.0.1.tar.gz/download?use_mirror=gigenet as fdk-aac-2.0.1.tar.gz +Downloading https://sourceforge.net/projects/opencore-amr/files/fdk-aac/fdk-aac-2.0.2.tar.gz/download?use_mirror=gigenet as fdk-aac-2.0.2.tar.gz ... Done -Extracted fdk-aac-2.0.1.tar.gz -$ ./configure --prefix=/Volumes/Daten/dev/mac/ffmpeg-build-script/workspace --disable-shared --enable-static +Extracted fdk-aac-2.0.2.tar.gz +$ ./configure --prefix=/app/workspace --disable-shared --enable-static --enable-pic $ make -j 12 $ make install -building libwebp +building libtiff - version 4.5.0 ======================= -Downloading https://github.com/webmproject/libwebp/archive/v1.1.0.tar.gz as libwebp-1.1.0.tar.gz +Downloading https://download.osgeo.org/libtiff/tiff-4.5.0.tar.xz as tiff-4.5.0.tar.xz ... Done -Extracted libwebp-1.1.0.tar.gz -$ cmake -DCMAKE_INSTALL_PREFIX=/Volumes/Daten/dev/mac/ffmpeg-build-script/workspace -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_INSTALL_BINDIR=bin -DCMAKE_INSTALL_INCLUDEDIR=include -DENABLE_SHARED=OFF -DENABLE_STATIC=ON ../ +Extracted tiff-4.5.0.tar.xz +$ ./configure --prefix=/app/workspace --disable-shared --enable-static --disable-dependency-tracking --disable-lzma --disable-webp --disable-zstd --without-x $ make -j 12 $ make install -building libsdl +building libpng - version 1.6.39 ======================= -Downloading https://www.libsdl.org/release/SDL2-2.0.12.tar.gz as SDL2-2.0.12.tar.gz +Downloading https://gigenet.dl.sourceforge.net/project/libpng/libpng16/1.6.39/libpng-1.6.39.tar.gz as libpng-1.6.39.tar.gz ... Done -Extracted SDL2-2.0.12.tar.gz -$ ./configure --prefix=/Volumes/Daten/dev/mac/ffmpeg-build-script/workspace --disable-shared --enable-static +Extracted libpng-1.6.39.tar.gz +$ ./configure --prefix=/app/workspace --disable-shared --enable-static $ make -j 12 $ make install -building srt +building libwebp - version 1.2.2 ======================= -Downloading https://github.com/Haivision/srt/archive/v1.4.1.tar.gz as srt-1.4.1.tar.gz +Downloading https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-1.2.2.tar.gz as libwebp-1.2.2.tar.gz ... Done -Extracted srt-1.4.1.tar.gz -$ cmake . -DCMAKE_INSTALL_PREFIX=/Volumes/Daten/dev/mac/ffmpeg-build-script/workspace -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_INSTALL_BINDIR=bin -DCMAKE_INSTALL_INCLUDEDIR=include -DENABLE_SHARED=OFF -DENABLE_STATIC=ON -DENABLE_APPS=OFF -DUSE_STATIC_LIBSTDCXX=ON +Extracted libwebp-1.2.2.tar.gz +$ ./configure --prefix=/app/workspace --disable-shared --enable-static --disable-dependency-tracking --disable-gl --with-zlib-include=/app/workspace/include/ --with-zlib-lib=/app/workspace/lib +$ cmake -DCMAKE_INSTALL_PREFIX=/app/workspace -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_INSTALL_BINDIR=bin -DCMAKE_INSTALL_INCLUDEDIR=include -DENABLE_SHARED=OFF -DENABLE_STATIC=ON ../ +$ make -j 12 $ make install -building ffmpeg +building libsdl - version 2.28.5 +======================= +Downloading https://github.com/libsdl-org/SDL/releases/download/release-2.28.5/SDL2-2.28.5.tar.gz as SDL2-2.28.5.tar.gz +... Done +Extracted SDL2-2.28.5.tar.gz +$ ./configure --prefix=/app/workspace --disable-shared --enable-static +$ make -j 12 +$ make install + +building FreeType2 - version 2.11.1 +======================= +Downloading https://downloads.sourceforge.net/freetype/freetype-2.11.1.tar.xz as freetype-2.11.1.tar.xz +... Done +Extracted freetype-2.11.1.tar.xz +$ ./configure --prefix=/app/workspace --disable-shared --enable-static +$ make -j 12 +$ make install + +building srt - version 1.5.3 +======================= +Downloading https://github.com/Haivision/srt/archive/v1.5.3.tar.gz as srt-1.5.3.tar.gz +... Done +Extracted srt-1.5.3.tar.gz +$ cmake . -DCMAKE_INSTALL_PREFIX=/app/workspace -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_INSTALL_BINDIR=bin -DCMAKE_INSTALL_INCLUDEDIR=include -DENABLE_SHARED=OFF -DENABLE_STATIC=ON -DENABLE_APPS=OFF -DUSE_STATIC_LIBSTDCXX=ON +$ make install + +building libzmq - version 4.3.5 +======================= +Downloading https://github.com/zeromq/libzmq/releases/download/v4.3.5/zeromq-4.3.5.tar.gz as zeromq-4.3.5.tar.gz +... Done +Extracted zeromq-4.3.5.tar.gz +$ ./autogen.sh +$ ./configure --prefix=/app/workspace --disable-shared --enable-static +$ make -j 12 +$ make install + +building nv-codec - version 11.1.5.3 +======================= +Downloading https://github.com/FFmpeg/nv-codec-headers/releases/download/n11.1.5.3/nv-codec-headers-11.1.5.3.tar.gz as nv-codec-headers-11.1.5.3.tar.gz +... Done +Extracted nv-codec-headers-11.1.5.3.tar.gz +$ make PREFIX=/app/workspace +$ make PREFIX=/app/workspace install + +building amf - version 1.4.30 +======================= +Downloading https://github.com/GPUOpen-LibrariesAndSDKs/AMF/archive/refs/tags/v1.4.30.tar.gz as AMF-1.4.30.tar.gz +... Done +Extracted AMF-1.4.30.tar.gz +$ rm -rf /app/workspace/include/AMF +$ mkdir -p /app/workspace/include/AMF +$ cp -r /app/packages/AMF-1.4.30/AMF-1.4.30/amf/public/include/components /app/packages/AMF-1.4.30/AMF-1.4.30/amf/public/include/core /app/workspace/include/AMF/ + +building ffmpeg - version 6.0 ======================= -Downloading https://ffmpeg.org/releases/ffmpeg-4.3.1.tar.bz2 as ffmpeg-4.3.1.tar.bz2 +Downloading https://github.com/FFmpeg/FFmpeg/archive/refs/heads/release/6.0.tar.gz as FFmpeg-release-6.0.tar.gz ... Done -Extracted ffmpeg-4.3.1.tar.bz2 -install prefix /Volumes/Daten/dev/mac/ffmpeg-build-script/workspace +Extracted FFmpeg-release-6.0.tar.gz +install prefix /app/workspace source path . C compiler gcc -C library +C library glibc ARCH x86 (generic) big-endian no runtime cpu detection yes @@ -520,6 +760,7 @@ AESNI enabled yes AVX enabled yes AVX2 enabled yes AVX-512 enabled yes +AVX-512ICL enabled yes XOP enabled yes FMA3 enabled yes FMA4 enabled yes @@ -529,7 +770,7 @@ EBX available yes EBP available yes debug symbols no strip symbols yes -optimize for size yes +optimize for size no optimizations yes static yes shared no @@ -540,210 +781,706 @@ safe bitstream reader yes texi2html enabled no perl enabled yes pod2man enabled yes -makeinfo enabled yes +makeinfo enabled no makeinfo supports HTML no +xmllint enabled no External libraries: -appkit coreimage libfdk_aac libopencore_amrwb libtheora libvpx libx265 sdl2 -avfoundation iconv libmp3lame libopus libvidstab libwebp libxvid zlib -bzlib libaom libopencore_amrnb libsrt libvorbis libx264 openssl +iconv libsrt libxvid +libaom libsvtav1 libzimg +libdav1d libtheora libzmq +libfdk_aac libvidstab lv2 +libfreetype libvorbis openssl +libmp3lame libvpx sdl2 +libopencore_amrnb libwebp zlib +libopencore_amrwb libx264 +libopus libx265 External libraries providing hardware acceleration: -audiotoolbox videotoolbox +amf cuvid nvenc +cuda ffnvcodec v4l2_m2m +cuda_llvm libnpp vaapi +cuda_nvcc nvdec Libraries: -avcodec avdevice avfilter avformat avutil postproc swresample swscale +avcodec avformat swresample +avdevice avutil swscale +avfilter postproc Programs: ffmpeg ffplay ffprobe Enabled decoders: -aac adpcm_ima_wav avrp dsicinvideo gsm libopus msmpeg4v3 pcm_s32be realtext targa_y216 vqa -aac_at adpcm_ima_ws avs dss_sp gsm_ms libvorbis msrle pcm_s32le rl2 tdsc wavpack -aac_fixed adpcm_ms avui dst gsm_ms_at libvpx_vp8 mss1 pcm_s32le_planar roq text wcmv -aac_latm adpcm_mtaf ayuv dvaudio h261 libvpx_vp9 mss2 pcm_s64be roq_dpcm theora webp -aasc adpcm_psx bethsoftvid dvbsub h263 loco msvideo1 pcm_s64le rpza thp webvtt -ac3 adpcm_sbpro_2 bfi dvdsub h263i lscr mszh pcm_s8 rscc tiertexseqvideo wmalossless -ac3_at adpcm_sbpro_3 bink dvvideo h263p m101 mts2 pcm_s8_planar rv10 tiff wmapro -ac3_fixed adpcm_sbpro_4 binkaudio_dct dxa h264 mace3 mv30 pcm_u16be rv20 tmv wmav1 -acelp_kelvin adpcm_swf binkaudio_rdft dxtory hap mace6 mvc1 pcm_u16le rv30 truehd wmav2 -adpcm_4xm adpcm_thp bintext dxv hca magicyuv mvc2 pcm_u24be rv40 truemotion1 wmavoice -adpcm_adx adpcm_thp_le bitpacked eac3 hcom mdec mvdv pcm_u24le s302m truemotion2 wmv1 -adpcm_afc adpcm_vima bmp eac3_at hevc metasound mvha pcm_u32be sami truemotion2rt wmv2 -adpcm_agm adpcm_xa bmv_audio eacmv hnm4_video microdvd mwsc pcm_u32le sanm truespeech wmv3 -adpcm_aica adpcm_yamaha bmv_video eamad hq_hqa mimic mxpeg pcm_u8 sbc tscc wmv3image -adpcm_argo adpcm_zork brender_pix eatgq hqx mjpeg nellymoser pcm_vidc scpr tscc2 wnv1 -adpcm_ct agm c93 eatgv huffyuv mjpegb notchlc pcx screenpresso tta wrapped_avframe -adpcm_dtk aic cavs eatqi hymt mlp nuv pfm sdx2_dpcm twinvq ws_snd1 -adpcm_ea alac ccaption eightbps iac mmvideo on2avc pgm sgi txd xan_dpcm -adpcm_ea_maxis_xa alac_at cdgraphics eightsvx_exp idcin motionpixels opus pgmyuv sgirle ulti xan_wc3 -adpcm_ea_r1 alias_pix cdtoons eightsvx_fib idf movtext paf_audio pgssub sheervideo utvideo xan_wc4 -adpcm_ea_r2 als cdxl escape124 iff_ilbm mp1 paf_video pictor shorten v210 xbin -adpcm_ea_r3 amr_nb_at cfhd escape130 ilbc mp1_at pam pixlet sipr v210x xbm -adpcm_ea_xas amrnb cinepak evrc ilbc_at mp1float pbm pjs siren v308 xface -adpcm_g722 amrwb clearvideo exr imc mp2 pcm_alaw png smackaud v408 xl -adpcm_g726 amv cljr ffv1 imm4 mp2_at pcm_alaw_at ppm smacker v410 xma1 -adpcm_g726le anm cllc ffvhuff imm5 mp2float pcm_bluray prores smc vb xma2 -adpcm_ima_alp ansi comfortnoise ffwavesynth indeo2 mp3 pcm_dvd prosumer smvjpeg vble xpm -adpcm_ima_amv ape cook fic indeo3 mp3_at pcm_f16le psd snow vc1 xsub -adpcm_ima_apc apng cpia fits indeo4 mp3adu pcm_f24le ptx sol_dpcm vc1image xwd -adpcm_ima_apm aptx cscd flac indeo5 mp3adufloat pcm_f32be qcelp sonic vcr1 y41p -adpcm_ima_cunning aptx_hd cyuv flashsv interplay_acm mp3float pcm_f32le qdm2 sp5x vmdaudio ylc -adpcm_ima_dat4 arbc dca flashsv2 interplay_dpcm mp3on4 pcm_f64be qdm2_at speedhq vmdvideo yop -adpcm_ima_dk3 ass dds flic interplay_video mp3on4float pcm_f64le qdmc srgc vmnc yuv4 -adpcm_ima_dk4 asv1 derf_dpcm flv jacosub mpc7 pcm_lxf qdmc_at srt vorbis zero12v -adpcm_ima_ea_eacs asv2 dfa fmvc jpeg2000 mpc8 pcm_mulaw qdraw ssa vp3 zerocodec -adpcm_ima_ea_sead atrac1 dirac fourxm jpegls mpeg1video pcm_mulaw_at qpeg stl vp4 zlib -adpcm_ima_iss atrac3 dnxhd fraps jv mpeg2video pcm_s16be qtrle subrip vp5 zmbv -adpcm_ima_mtf atrac3al dolby_e frwu kgv1 mpeg4 pcm_s16be_planar r10k subviewer vp6 -adpcm_ima_oki atrac3p dpx g2m kmvc mpegvideo pcm_s16le r210 subviewer1 vp6a -adpcm_ima_qt atrac3pal dsd_lsbf g723_1 lagarith mpl2 pcm_s16le_planar ra_144 sunrast vp6f -adpcm_ima_qt_at atrac9 dsd_lsbf_planar g729 libaom_av1 msa1 pcm_s24be ra_288 svq1 vp7 -adpcm_ima_rad aura dsd_msbf gdv libfdk_aac mscc pcm_s24daud ralf svq3 vp8 -adpcm_ima_smjpeg aura2 dsd_msbf_planar gif libopencore_amrnb msmpeg4v1 pcm_s24le rasc tak vp9 -adpcm_ima_ssi avrn dsicinaudio gremlin_dpcm libopencore_amrwb msmpeg4v2 pcm_s24le_planar rawvideo targa vplayer +aac fmvc pcx +aac_fixed fourxm pfm +aac_latm fraps pgm +aasc frwu pgmyuv +ac3 ftr pgssub +ac3_fixed g2m pgx +acelp_kelvin g723_1 phm +adpcm_4xm g729 photocd +adpcm_adx gdv pictor +adpcm_afc gem pixlet +adpcm_agm gif pjs +adpcm_aica gremlin_dpcm png +adpcm_argo gsm ppm +adpcm_ct gsm_ms prores +adpcm_dtk h261 prosumer +adpcm_ea h263 psd +adpcm_ea_maxis_xa h263_v4l2m2m ptx +adpcm_ea_r1 h263i qcelp +adpcm_ea_r2 h263p qdm2 +adpcm_ea_r3 h264 qdmc +adpcm_ea_xas h264_cuvid qdraw +adpcm_g722 h264_v4l2m2m qoi +adpcm_g726 hap qpeg +adpcm_g726le hca qtrle +adpcm_ima_acorn hcom r10k +adpcm_ima_alp hdr r210 +adpcm_ima_amv hevc ra_144 +adpcm_ima_apc hevc_cuvid ra_288 +adpcm_ima_apm hevc_v4l2m2m ralf +adpcm_ima_cunning hnm4_video rasc +adpcm_ima_dat4 hq_hqa rawvideo +adpcm_ima_dk3 hqx realtext +adpcm_ima_dk4 huffyuv rka +adpcm_ima_ea_eacs hymt rl2 +adpcm_ima_ea_sead iac roq +adpcm_ima_iss idcin roq_dpcm +adpcm_ima_moflex idf rpza +adpcm_ima_mtf iff_ilbm rscc +adpcm_ima_oki ilbc rv10 +adpcm_ima_qt imc rv20 +adpcm_ima_rad imm4 rv30 +adpcm_ima_smjpeg imm5 rv40 +adpcm_ima_ssi indeo2 s302m +adpcm_ima_wav indeo3 sami +adpcm_ima_ws indeo4 sanm +adpcm_ms indeo5 sbc +adpcm_mtaf interplay_acm scpr +adpcm_psx interplay_dpcm screenpresso +adpcm_sbpro_2 interplay_video sdx2_dpcm +adpcm_sbpro_3 ipu sga +adpcm_sbpro_4 jacosub sgi +adpcm_swf jpeg2000 sgirle +adpcm_thp jpegls sheervideo +adpcm_thp_le jv shorten +adpcm_vima kgv1 simbiosis_imx +adpcm_xa kmvc sipr +adpcm_xmd lagarith siren +adpcm_yamaha libaom_av1 smackaud +adpcm_zork libdav1d smacker +agm libfdk_aac smc +aic libopencore_amrnb smvjpeg +alac libopencore_amrwb snow +alias_pix libopus sol_dpcm +als libvorbis sonic +amrnb libvpx_vp8 sp5x +amrwb libvpx_vp9 speedhq +amv loco speex +anm lscr srgc +ansi m101 srt +anull mace3 ssa +apac mace6 stl +ape magicyuv subrip +apng mdec subviewer +aptx media100 subviewer1 +aptx_hd metasound sunrast +arbc microdvd svq1 +argo mimic svq3 +ass misc4 tak +asv1 mjpeg targa +asv2 mjpeg_cuvid targa_y216 +atrac1 mjpegb tdsc +atrac3 mlp text +atrac3al mmvideo theora +atrac3p mobiclip thp +atrac3pal motionpixels tiertexseqvideo +atrac9 movtext tiff +aura mp1 tmv +aura2 mp1float truehd +av1 mp2 truemotion1 +av1_cuvid mp2float truemotion2 +avrn mp3 truemotion2rt +avrp mp3adu truespeech +avs mp3adufloat tscc +avui mp3float tscc2 +ayuv mp3on4 tta +bethsoftvid mp3on4float twinvq +bfi mpc7 txd +bink mpc8 ulti +binkaudio_dct mpeg1_cuvid utvideo +binkaudio_rdft mpeg1_v4l2m2m v210 +bintext mpeg1video v210x +bitpacked mpeg2_cuvid v308 +bmp mpeg2_v4l2m2m v408 +bmv_audio mpeg2video v410 +bmv_video mpeg4 vb +bonk mpeg4_cuvid vble +brender_pix mpeg4_v4l2m2m vbn +c93 mpegvideo vc1 +cavs mpl2 vc1_cuvid +cbd2_dpcm msa1 vc1_v4l2m2m +ccaption mscc vc1image +cdgraphics msmpeg4v1 vcr1 +cdtoons msmpeg4v2 vmdaudio +cdxl msmpeg4v3 vmdvideo +cfhd msnsiren vmnc +cinepak msp2 vnull +clearvideo msrle vorbis +cljr mss1 vp3 +cllc mss2 vp4 +comfortnoise msvideo1 vp5 +cook mszh vp6 +cpia mts2 vp6a +cri mv30 vp6f +cscd mvc1 vp7 +cyuv mvc2 vp8 +dca mvdv vp8_cuvid +dds mvha vp8_v4l2m2m +derf_dpcm mwsc vp9 +dfa mxpeg vp9_cuvid +dfpwm nellymoser vp9_v4l2m2m +dirac notchlc vplayer +dnxhd nuv vqa +dolby_e on2avc vqc +dpx opus wady_dpcm +dsd_lsbf paf_audio wavarc +dsd_lsbf_planar paf_video wavpack +dsd_msbf pam wbmp +dsd_msbf_planar pbm wcmv +dsicinaudio pcm_alaw webp +dsicinvideo pcm_bluray webvtt +dss_sp pcm_dvd wmalossless +dst pcm_f16le wmapro +dvaudio pcm_f24le wmav1 +dvbsub pcm_f32be wmav2 +dvdsub pcm_f32le wmavoice +dvvideo pcm_f64be wmv1 +dxa pcm_f64le wmv2 +dxtory pcm_lxf wmv3 +dxv pcm_mulaw wmv3image +eac3 pcm_s16be wnv1 +eacmv pcm_s16be_planar wrapped_avframe +eamad pcm_s16le ws_snd1 +eatgq pcm_s16le_planar xan_dpcm +eatgv pcm_s24be xan_wc3 +eatqi pcm_s24daud xan_wc4 +eightbps pcm_s24le xbin +eightsvx_exp pcm_s24le_planar xbm +eightsvx_fib pcm_s32be xface +escape124 pcm_s32le xl +escape130 pcm_s32le_planar xma1 +evrc pcm_s64be xma2 +exr pcm_s64le xpm +fastaudio pcm_s8 xsub +ffv1 pcm_s8_planar xwd +ffvhuff pcm_sga y41p +ffwavesynth pcm_u16be ylc +fic pcm_u16le yop +fits pcm_u24be yuv4 +flac pcm_u24le zero12v +flashsv pcm_u32be zerocodec +flashsv2 pcm_u32le zlib +flic pcm_u8 zmbv +flv pcm_vidc Enabled encoders: -a64multi alac_at dnxhd h263p libwebp_anim msvideo1 pcm_s16le_planar pcm_u32le roq_dpcm truehd xface -a64multi5 alias_pix dpx h264_videotoolbox libx264 nellymoser pcm_s24be pcm_u8 rv10 tta xsub -aac amv dvbsub hevc_videotoolbox libx264rgb opus pcm_s24daud pcm_vidc rv20 utvideo xwd -aac_at apng dvdsub huffyuv libx265 pam pcm_s24le pcx s302m v210 y41p -ac3 aptx dvvideo ilbc_at libxvid pbm pcm_s24le_planar pgm sbc v308 yuv4 -ac3_fixed aptx_hd eac3 jpeg2000 ljpeg pcm_alaw pcm_s32be pgmyuv sgi v408 zlib -adpcm_adx ass ffv1 jpegls magicyuv pcm_alaw_at pcm_s32le png snow v410 zmbv -adpcm_g722 asv1 ffvhuff libaom_av1 mjpeg pcm_dvd pcm_s32le_planar ppm sonic vc2 -adpcm_g726 asv2 fits libfdk_aac mlp pcm_f32be pcm_s64be prores sonic_ls vorbis -adpcm_g726le avrp flac libmp3lame movtext pcm_f32le pcm_s64le prores_aw srt wavpack -adpcm_ima_qt avui flashsv libopencore_amrnb mp2 pcm_f64be pcm_s8 prores_ks ssa webvtt -adpcm_ima_ssi ayuv flashsv2 libopus mp2fixed pcm_f64le pcm_s8_planar qtrle subrip wmav1 -adpcm_ima_wav bmp flv libtheora mpeg1video pcm_mulaw pcm_u16be r10k sunrast wmav2 -adpcm_ms cinepak g723_1 libvorbis mpeg2video pcm_mulaw_at pcm_u16le r210 svq1 wmv1 -adpcm_swf cljr gif libvpx_vp8 mpeg4 pcm_s16be pcm_u24be ra_144 targa wmv2 -adpcm_yamaha comfortnoise h261 libvpx_vp9 msmpeg4v2 pcm_s16be_planar pcm_u24le rawvideo text wrapped_avframe -alac dca h263 libwebp msmpeg4v3 pcm_s16le pcm_u32be roq tiff xbm +a64multi hevc_vaapi pcm_vidc +a64multi5 huffyuv pcx +aac jpeg2000 pfm +ac3 jpegls pgm +ac3_fixed libaom_av1 pgmyuv +adpcm_adx libfdk_aac phm +adpcm_argo libmp3lame png +adpcm_g722 libopencore_amrnb ppm +adpcm_g726 libopus prores +adpcm_g726le libsvtav1 prores_aw +adpcm_ima_alp libtheora prores_ks +adpcm_ima_amv libvorbis qoi +adpcm_ima_apm libvpx_vp8 qtrle +adpcm_ima_qt libvpx_vp9 r10k +adpcm_ima_ssi libwebp r210 +adpcm_ima_wav libwebp_anim ra_144 +adpcm_ima_ws libx264 rawvideo +adpcm_ms libx264rgb roq +adpcm_swf libx265 roq_dpcm +adpcm_yamaha libxvid rpza +alac ljpeg rv10 +alias_pix magicyuv rv20 +amv mjpeg s302m +anull mjpeg_vaapi sbc +apng mlp sgi +aptx movtext smc +aptx_hd mp2 snow +ass mp2fixed sonic +asv1 mpeg1video sonic_ls +asv2 mpeg2_vaapi speedhq +av1_amf mpeg2video srt +avrp mpeg4 ssa +avui mpeg4_v4l2m2m subrip +ayuv msmpeg4v2 sunrast +bitpacked msmpeg4v3 svq1 +bmp msvideo1 targa +cfhd nellymoser text +cinepak opus tiff +cljr pam truehd +comfortnoise pbm tta +dca pcm_alaw ttml +dfpwm pcm_bluray utvideo +dnxhd pcm_dvd v210 +dpx pcm_f32be v308 +dvbsub pcm_f32le v408 +dvdsub pcm_f64be v410 +dvvideo pcm_f64le vbn +eac3 pcm_mulaw vc2 +exr pcm_s16be vnull +ffv1 pcm_s16be_planar vorbis +ffvhuff pcm_s16le vp8_v4l2m2m +fits pcm_s16le_planar vp8_vaapi +flac pcm_s24be vp9_vaapi +flashsv pcm_s24daud wavpack +flashsv2 pcm_s24le wbmp +flv pcm_s24le_planar webvtt +g723_1 pcm_s32be wmav1 +gif pcm_s32le wmav2 +h261 pcm_s32le_planar wmv1 +h263 pcm_s64be wmv2 +h263_v4l2m2m pcm_s64le wrapped_avframe +h263p pcm_s8 xbm +h264_amf pcm_s8_planar xface +h264_nvenc pcm_u16be xsub +h264_v4l2m2m pcm_u16le xwd +h264_vaapi pcm_u24be y41p +hdr pcm_u24le yuv4 +hevc_amf pcm_u32be zlib +hevc_nvenc pcm_u32le zmbv +hevc_v4l2m2m pcm_u8 Enabled hwaccels: -h263_videotoolbox h264_videotoolbox hevc_videotoolbox mpeg1_videotoolbox mpeg2_videotoolbox mpeg4_videotoolbox +av1_nvdec mjpeg_vaapi vp8_nvdec +av1_vaapi mpeg1_nvdec vp8_vaapi +h263_vaapi mpeg2_nvdec vp9_nvdec +h264_nvdec mpeg2_vaapi vp9_vaapi +h264_vaapi mpeg4_nvdec wmv3_nvdec +hevc_nvdec mpeg4_vaapi wmv3_vaapi +hevc_vaapi vc1_nvdec +mjpeg_nvdec vc1_vaapi Enabled parsers: -aac avs2 dirac dvd_nav gif hevc mpegaudio rv30 vc1 webp -aac_latm bmp dnxhd dvdsub gsm jpeg2000 mpegvideo rv40 vorbis xma -ac3 cavsvideo dpx flac h261 mjpeg opus sbc vp3 -adx cook dvaudio g723_1 h263 mlp png sipr vp8 -av1 dca dvbsub g729 h264 mpeg4video pnm tak vp9 +aac dvdsub opus +aac_latm flac png +ac3 ftr pnm +adx g723_1 qoi +amr g729 rv30 +av1 gif rv40 +avs2 gsm sbc +avs3 h261 sipr +bmp h263 tak +cavsvideo h264 vc1 +cook hdr vorbis +cri hevc vp3 +dca ipu vp8 +dirac jpeg2000 vp9 +dnxhd misc4 webp +dolby_e mjpeg xbm +dpx mlp xma +dvaudio mpeg4video xwd +dvbsub mpegaudio +dvd_nav mpegvideo Enabled demuxers: -aa ass dcstr fwse image2pipe ircam mpc8 pcm_f32le redspark sox vmd -aac ast derf g722 image_bmp_pipe iss mpegps pcm_f64be rl2 spdif vobsub -ac3 au dfa g723_1 image_dds_pipe iv8 mpegts pcm_f64le rm srt voc -acm av1 dhav g726 image_dpx_pipe ivf mpegtsraw pcm_mulaw roq stl vpk -act avi dirac g726le image_exr_pipe ivr mpegvideo pcm_s16be rpl str vplayer -adf avr dnxhd g729 image_gif_pipe jacosub mpjpeg pcm_s16le rsd subviewer vqf -adp avs dsf gdv image_j2k_pipe jv mpl2 pcm_s24be rso subviewer1 w64 -ads avs2 dsicin genh image_jpeg_pipe kux mpsub pcm_s24le rtp sup wav -adx bethsoftvid dss gif image_jpegls_pipe kvag msf pcm_s32be rtsp svag wc3 -aea bfi dts gsm image_pam_pipe live_flv msnwc_tcp pcm_s32le s337m swf webm_dash_manifest -afc bfstm dtshd gxf image_pbm_pipe lmlm4 mtaf pcm_s8 sami tak webvtt -aiff bink dv h261 image_pcx_pipe loas mtv pcm_u16be sap tedcaptions wsaud -aix bintext dvbsub h263 image_pgm_pipe lrc musx pcm_u16le sbc thp wsd -alp bit dvbtxt h264 image_pgmyuv_pipe lvf mv pcm_u24be sbg threedostr wsvqa -amr bmv dxa hca image_pictor_pipe lxf mvi pcm_u24le scc tiertexseq wtv -amrnb boa ea hcom image_png_pipe m4v mxf pcm_u32be sdp tmv wv -amrwb brstm ea_cdata hevc image_ppm_pipe matroska mxg pcm_u32le sdr2 truehd wve -anm c93 eac3 hls image_psd_pipe mgsts nc pcm_u8 sds tta xa -apc caf epaf hnm image_qdraw_pipe microdvd nistsphere pcm_vidc sdx tty xbin -ape cavsvideo ffmetadata ico image_sgi_pipe mjpeg nsp pjs segafilm txd xmv -apm cdg filmstrip idcin image_sunrast_pipe mjpeg_2000 nsv pmp ser ty xvag -apng cdxl fits idf image_svg_pipe mlp nut pp_bnk shorten v210 xwma -aptx cine flac iff image_tiff_pipe mlv nuv pva siff v210x yop -aptx_hd codec2 flic ifv image_webp_pipe mm ogg pvf sln vag yuv4mpegpipe -aqtitle codec2raw flv ilbc image_xpm_pipe mmf oma qcp smacker vc1 -argo_asf concat fourxm image2 image_xwd_pipe mov paf r3d smjpeg vc1t -asf data frm image2_alias_pix ingenient mp3 pcm_alaw rawvideo smush vividas -asf_o daud fsb image2_brender_pix ipmovie mpc pcm_f32be realtext sol vivo +aa idf pcm_s16be +aac iff pcm_s16le +aax ifv pcm_s24be +ac3 ilbc pcm_s24le +ace image2 pcm_s32be +acm image2_alias_pix pcm_s32le +act image2_brender_pix pcm_s8 +adf image2pipe pcm_u16be +adp image_bmp_pipe pcm_u16le +ads image_cri_pipe pcm_u24be +adx image_dds_pipe pcm_u24le +aea image_dpx_pipe pcm_u32be +afc image_exr_pipe pcm_u32le +aiff image_gem_pipe pcm_u8 +aix image_gif_pipe pcm_vidc +alp image_hdr_pipe pjs +amr image_j2k_pipe pmp +amrnb image_jpeg_pipe pp_bnk +amrwb image_jpegls_pipe pva +anm image_jpegxl_pipe pvf +apac image_pam_pipe qcp +apc image_pbm_pipe r3d +ape image_pcx_pipe rawvideo +apm image_pfm_pipe realtext +apng image_pgm_pipe redspark +aptx image_pgmyuv_pipe rka +aptx_hd image_pgx_pipe rl2 +aqtitle image_phm_pipe rm +argo_asf image_photocd_pipe roq +argo_brp image_pictor_pipe rpl +argo_cvg image_png_pipe rsd +asf image_ppm_pipe rso +asf_o image_psd_pipe rtp +ass image_qdraw_pipe rtsp +ast image_qoi_pipe s337m +au image_sgi_pipe sami +av1 image_sunrast_pipe sap +avi image_svg_pipe sbc +avr image_tiff_pipe sbg +avs image_vbn_pipe scc +avs2 image_webp_pipe scd +avs3 image_xbm_pipe sdns +bethsoftvid image_xpm_pipe sdp +bfi image_xwd_pipe sdr2 +bfstm ingenient sds +bink ipmovie sdx +binka ipu segafilm +bintext ircam ser +bit iss sga +bitpacked iv8 shorten +bmv ivf siff +boa ivr simbiosis_imx +bonk jacosub sln +brstm jv smacker +c93 kux smjpeg +caf kvag smush +cavsvideo laf sol +cdg live_flv sox +cdxl lmlm4 spdif +cine loas srt +codec2 lrc stl +codec2raw luodat str +concat lvf subviewer +data lxf subviewer1 +daud m4v sup +dcstr matroska svag +derf mca svs +dfa mcc swf +dfpwm mgsts tak +dhav microdvd tedcaptions +dirac mjpeg thp +dnxhd mjpeg_2000 threedostr +dsf mlp tiertexseq +dsicin mlv tmv +dss mm truehd +dts mmf tta +dtshd mods tty +dv moflex txd +dvbsub mov ty +dvbtxt mp3 v210 +dxa mpc v210x +ea mpc8 vag +ea_cdata mpegps vc1 +eac3 mpegts vc1t +epaf mpegtsraw vividas +ffmetadata mpegvideo vivo +filmstrip mpjpeg vmd +fits mpl2 vobsub +flac mpsub voc +flic msf vpk +flv msnwc_tcp vplayer +fourxm msp vqf +frm mtaf w64 +fsb mtv wady +fwse musx wav +g722 mv wavarc +g723_1 mvi wc3 +g726 mxf webm_dash_manifest +g726le mxg webvtt +g729 nc wsaud +gdv nistsphere wsd +genh nsp wsvqa +gif nsv wtv +gsm nut wv +gxf nuv wve +h261 obu xa +h263 ogg xbin +h264 oma xmd +hca paf xmv +hcom pcm_alaw xvag +hevc pcm_f32be xwma +hls pcm_f32le yop +hnm pcm_f64be yuv4mpegpipe +ico pcm_f64le +idcin pcm_mulaw Enabled muxers: -a64 avm2 eac3 g726le ipod mlp mxf pcm_mulaw pcm_vidc smjpeg uncodedframecrc -ac3 avs2 f4v gif ircam mmf mxf_d10 pcm_s16be psp smoothstreaming vc1 -adts bit ffmetadata gsm ismv mov mxf_opatom pcm_s16le rawvideo sox vc1t -adx caf fifo gxf ivf mp2 null pcm_s24be rm spdif voc -aiff cavsvideo fifo_test h261 jacosub mp3 nut pcm_s24le roq spx w64 -amr codec2 filmstrip h263 kvag mp4 oga pcm_s32be rso srt wav -apng codec2raw fits h264 latm mpeg1system ogg pcm_s32le rtp stream_segment webm -aptx crc flac hash lrc mpeg1vcd ogv pcm_s8 rtp_mpegts streamhash webm_chunk -aptx_hd dash flv hds m4v mpeg1video oma pcm_u16be rtsp sup webm_dash_manifest -asf data framecrc hevc matroska mpeg2dvd opus pcm_u16le sap swf webp -asf_stream daud framehash hls matroska_audio mpeg2svcd pcm_alaw pcm_u24be sbc tee webvtt -ass dirac framemd5 ico md5 mpeg2video pcm_f32be pcm_u24le scc tg2 wtv -ast dnxhd g722 ilbc microdvd mpeg2vob pcm_f32le pcm_u32be segafilm tgp wv -au dts g723_1 image2 mjpeg mpegts pcm_f64be pcm_u32le segment truehd yuv4mpegpipe -avi dv g726 image2pipe mkvtimestamp_v2 mpjpeg pcm_f64le pcm_u8 singlejpeg tta +a64 h263 pcm_s16le +ac3 h264 pcm_s24be +adts hash pcm_s24le +adx hds pcm_s32be +aiff hevc pcm_s32le +alp hls pcm_s8 +amr ico pcm_u16be +amv ilbc pcm_u16le +apm image2 pcm_u24be +apng image2pipe pcm_u24le +aptx ipod pcm_u32be +aptx_hd ircam pcm_u32le +argo_asf ismv pcm_u8 +argo_cvg ivf pcm_vidc +asf jacosub psp +asf_stream kvag rawvideo +ass latm rm +ast lrc roq +au m4v rso +avi matroska rtp +avif matroska_audio rtp_mpegts +avm2 md5 rtsp +avs2 microdvd sap +avs3 mjpeg sbc +bit mkvtimestamp_v2 scc +caf mlp segafilm +cavsvideo mmf segment +codec2 mov smjpeg +codec2raw mp2 smoothstreaming +crc mp3 sox +dash mp4 spdif +data mpeg1system spx +daud mpeg1vcd srt +dfpwm mpeg1video stream_segment +dirac mpeg2dvd streamhash +dnxhd mpeg2svcd sup +dts mpeg2video swf +dv mpeg2vob tee +eac3 mpegts tg2 +f4v mpjpeg tgp +ffmetadata mxf truehd +fifo mxf_d10 tta +fifo_test mxf_opatom ttml +filmstrip null uncodedframecrc +fits nut vc1 +flac obu vc1t +flv oga voc +framecrc ogg w64 +framehash ogv wav +framemd5 oma webm +g722 opus webm_chunk +g723_1 pcm_alaw webm_dash_manifest +g726 pcm_f32be webp +g726le pcm_f32le webvtt +gif pcm_f64be wsaud +gsm pcm_f64le wtv +gxf pcm_mulaw wv +h261 pcm_s16be yuv4mpegpipe Enabled protocols: -async data ftp httpproxy md5 prompeg rtmpt srtp tls -cache ffrtmpcrypt gopher https mmsh rtmp rtmpte subfile udp -concat ffrtmphttp hls icecast mmst rtmpe rtmpts tcp udplite -crypto file http libsrt pipe rtmps rtp tee unix +async http rtmpe +cache httpproxy rtmps +concat https rtmpt +concatf icecast rtmpte +crypto ipfs_gateway rtmpts +data ipns_gateway rtp +fd libsrt srtp +ffrtmpcrypt libzmq subfile +ffrtmphttp md5 tcp +file mmsh tee +ftp mmst tls +gopher pipe udp +gophers prompeg udplite +hls rtmp unix Enabled filters: -abench alphaextract atadenoise colorspace doubleweave gblur loudnorm nullsrc rotate sinc trim -abitscope alphamerge atempo compand drawbox geq lowpass oscilloscope sab sine unpremultiply -acompressor amerge atrim compensationdelay drawgraph gradfun lowshelf overlay scale smartblur unsharp -acontrast ametadata avectorscope concat drawgrid gradients lumakey owdenoise scale2ref smptebars untile -acopy amix avgblur convolution drmeter graphmonitor lut pad scdet smptehdbars uspp -acrossfade amovie axcorrelate convolve dynaudnorm greyedge lut1d pal100bars scroll sobel v360 -acrossover amplify bandpass copy earwax haas lut2 pal75bars select spectrumsynth vaguedenoiser -acrusher amultiply bandreject coreimage ebur128 haldclut lut3d palettegen selectivecolor split vectorscope -acue anequalizer bass coreimagesrc edgedetect haldclutsrc lutrgb paletteuse sendcmd spp vflip -addroi anlmdn bbox cover_rect elbg hdcd lutyuv pan separatefields sr vfrdet -adeclick anlms bench crop entropy headphone mandelbrot perms setdar ssim vibrance -adeclip anoisesrc bilateral cropdetect eq hflip maskedclamp perspective setfield stereo3d vibrato -adelay anull biquad crossfeed equalizer highpass maskedmax phase setparams stereotools vidstabdetect -aderivative anullsink bitplanenoise crystalizer erosion highshelf maskedmerge photosensitivity setpts stereowiden vidstabtransform -adrawgraph anullsrc blackdetect cue extractplanes hilbert maskedmin pixdesctest setrange streamselect vignette -aecho apad blackframe curves extrastereo histeq maskedthreshold pixscope setsar super2xsai vmafmotion -aemphasis aperms blend datascope fade histogram maskfun pp settb superequalizer volume -aeval aphasemeter bm3d dblur fftdnoiz hqdn3d mcdeint pp7 showcqt surround volumedetect -aevalsrc aphaser boxblur dcshift fftfilt hqx mcompand premultiply showfreqs swaprect vstack -afade apulsator bwdif dctdnoiz field hstack median prewitt showinfo swapuv w3fdif -afftdn arealtime cas deband fieldhint hue mergeplanes pseudocolor showpalette tblend waveform -afftfilt aresample cellauto deblock fieldmatch hwdownload mestimate psnr showspatial telecine weave -afifo areverse channelmap decimate fieldorder hwmap metadata pullup showspectrum testsrc xbr -afir arnndn channelsplit deconvolve fifo hwupload midequalizer qp showspectrumpic testsrc2 xfade -afirsrc aselect chorus dedot fillborders hysteresis minterpolate random showvolume thistogram xmedian -aformat asendcmd chromahold deesser find_rect idet mix readeia608 showwaves threshold xstack -agate asetnsamples chromakey deflate firequalizer il movie readvitc showwavespic thumbnail yadif -agraphmonitor asetpts chromashift deflicker flanger inflate mpdecimate realtime shuffleframes tile yaepblur -ahistogram asetrate ciescope dejudder floodfill interlace mptestsrc remap shuffleplanes tinterlace yuvtestsrc -aiir asettb codecview delogo format interleave negate removegrain sidechaincompress tlut2 zoompan -aintegral ashowinfo color derain fps join nlmeans removelogo sidechaingate tmedian -ainterleave asidedata colorbalance deshake framepack kerndeint nnedi repeatfields sidedata tmix -alimiter asoftclip colorchannelmixer despill framerate lagfun noformat replaygain sierpinski tonemap -allpass asplit colorhold detelecine framestep lenscorrection noise reverse signalstats tpad -allrgb astats colorkey dilation freezedetect life normalize rgbashift signature transpose -allyuv astreamselect colorlevels displace freezeframes limiter null rgbtestsrc silencedetect treble -aloop asubboost colormatrix dnn_processing fspp loop nullsink roberts silenceremove tremolo +a3dscope dblur palettegen +abench dcshift paletteuse +abitscope dctdnoiz pan +acompressor deband perms +acontrast deblock perspective +acopy decimate phase +acrossfade deconvolve photosensitivity +acrossover dedot pixdesctest +acrusher deesser pixelize +acue deflate pixscope +addroi deflicker pp +adeclick deinterlace_vaapi pp7 +adeclip dejudder premultiply +adecorrelate delogo prewitt +adelay denoise_vaapi procamp_vaapi +adenorm derain pseudocolor +aderivative deshake psnr +adrawgraph despill pullup +adrc detelecine qp +adynamicequalizer dialoguenhance random +adynamicsmooth dilation readeia608 +aecho displace readvitc +aemphasis dnn_classify realtime +aeval dnn_detect remap +aevalsrc dnn_processing removegrain +aexciter doubleweave removelogo +afade drawbox repeatfields +afdelaysrc drawgraph replaygain +afftdn drawgrid reverse +afftfilt drawtext rgbashift +afifo drmeter rgbtestsrc +afir dynaudnorm roberts +afirsrc earwax rotate +aformat ebur128 sab +afreqshift edgedetect scale +afwtdn elbg scale2ref +agate entropy scale2ref_npp +agraphmonitor epx scale_cuda +ahistogram eq scale_npp +aiir equalizer scale_vaapi +aintegral erosion scdet +ainterleave estdif scharr +alatency exposure scroll +alimiter extractplanes segment +allpass extrastereo select +allrgb fade selectivecolor +allyuv feedback sendcmd +aloop fftdnoiz separatefields +alphaextract fftfilt setdar +alphamerge field setfield +amerge fieldhint setparams +ametadata fieldmatch setpts +amix fieldorder setrange +amovie fifo setsar +amplify fillborders settb +amultiply find_rect sharpen_npp +anequalizer firequalizer sharpness_vaapi +anlmdn flanger shear +anlmf floodfill showcqt +anlms format showcwt +anoisesrc fps showfreqs +anull framepack showinfo +anullsink framerate showpalette +anullsrc framestep showspatial +apad freezedetect showspectrum +aperms freezeframes showspectrumpic +aphasemeter fspp showvolume +aphaser gblur showwaves +aphaseshift geq showwavespic +apsyclip gradfun shuffleframes +apulsator gradients shufflepixels +arealtime graphmonitor shuffleplanes +aresample grayworld sidechaincompress +areverse greyedge sidechaingate +arnndn guided sidedata +asdr haas sierpinski +asegment haldclut signalstats +aselect haldclutsrc signature +asendcmd hdcd silencedetect +asetnsamples headphone silenceremove +asetpts hflip sinc +asetrate highpass sine +asettb highshelf siti +ashowinfo hilbert smartblur +asidedata histeq smptebars +asoftclip histogram smptehdbars +aspectralstats hqdn3d sobel +asplit hqx spectrumsynth +astats hstack speechnorm +astreamselect hstack_vaapi split +asubboost hsvhold spp +asubcut hsvkey sr +asupercut hue ssim +asuperpass huesaturation ssim360 +asuperstop hwdownload stereo3d +atadenoise hwmap stereotools +atempo hwupload stereowiden +atilt hwupload_cuda streamselect +atrim hysteresis super2xsai +avectorscope identity superequalizer +avgblur idet surround +avsynctest il swaprect +axcorrelate inflate swapuv +azmq interlace tblend +backgroundkey interleave telecine +bandpass join testsrc +bandreject kerndeint testsrc2 +bass kirsch thistogram +bbox lagfun threshold +bench latency thumbnail +bilateral lenscorrection thumbnail_cuda +bilateral_cuda life tile +biquad limitdiff tiltshelf +bitplanenoise limiter tinterlace +blackdetect loop tlut2 +blackframe loudnorm tmedian +blend lowpass tmidequalizer +blockdetect lowshelf tmix +blurdetect lumakey tonemap +bm3d lut tonemap_vaapi +boxblur lut1d tpad +bwdif lut2 transpose +cas lut3d transpose_npp +cellauto lutrgb transpose_vaapi +channelmap lutyuv treble +channelsplit lv2 tremolo +chorus mandelbrot trim +chromahold maskedclamp unpremultiply +chromakey maskedmax unsharp +chromakey_cuda maskedmerge untile +chromanr maskedmin v360 +chromashift maskedthreshold vaguedenoiser +ciescope maskfun varblur +codecview mcompand vectorscope +color median vflip +colorbalance mergeplanes vfrdet +colorchannelmixer mestimate vibrance +colorchart metadata vibrato +colorcontrast midequalizer vidstabdetect +colorcorrect minterpolate vidstabtransform +colorhold mix vif +colorize monochrome vignette +colorkey morpho virtualbass +colorlevels movie vmafmotion +colormap mpdecimate volume +colormatrix mptestsrc volumedetect +colorspace msad vstack +colorspace_cuda multiply vstack_vaapi +colorspectrum negate w3fdif +colortemperature nlmeans waveform +compand nnedi weave +compensationdelay noformat xbr +concat noise xcorrelate +convolution normalize xfade +convolve null xmedian +copy nullsink xstack +corr nullsrc xstack_vaapi +cover_rect oscilloscope yadif +crop overlay yadif_cuda +cropdetect overlay_cuda yaepblur +crossfeed overlay_vaapi yuvtestsrc +crystalizer owdenoise zmq +cue pad zoompan +curves pal100bars zscale +datascope pal75bars Enabled bsfs: -aac_adtstoasc chomp extract_extradata h264_redundant_pps imx_dump_header mp3_header_decompress null remove_extradata vp9_metadata -av1_frame_merge dca_core filter_units hapqa_extract mjpeg2jpeg mpeg2_metadata opus_metadata text2movsub vp9_raw_reorder -av1_frame_split dump_extradata h264_metadata hevc_metadata mjpega_dump_header mpeg4_unpack_bframes pcm_rechunk trace_headers vp9_superframe -av1_metadata eac3_core h264_mp4toannexb hevc_mp4toannexb mov2textsub noise prores_metadata truehd_core vp9_superframe_split +aac_adtstoasc h264_redundant_pps opus_metadata +av1_frame_merge hapqa_extract pcm_rechunk +av1_frame_split hevc_metadata pgs_frame_merge +av1_metadata hevc_mp4toannexb prores_metadata +chomp imx_dump_header remove_extradata +dca_core media100_to_mjpegb setts +dts2pts mjpeg2jpeg text2movsub +dump_extradata mjpega_dump_header trace_headers +dv_error_marker mov2textsub truehd_core +eac3_core mp3_header_decompress vp9_metadata +extract_extradata mpeg2_metadata vp9_raw_reorder +filter_units mpeg4_unpack_bframes vp9_superframe +h264_metadata noise vp9_superframe_split +h264_mp4toannexb null Enabled indevs: -avfoundation lavfi +fbdev oss +lavfi v4l2 Enabled outdevs: -sdl2 +fbdev sdl2 +oss v4l2 -License: non-free and unredistributable +License: nonfree and unredistributable $ make -j 12 $ make install Building done. The following binaries can be found here: -- ffmpeg: /Volumes/Daten/dev/mac/ffmpeg-build-script/workspace/bin/ffmpeg -- ffprobe: /Volumes/Daten/dev/mac/ffmpeg-build-script/workspace/bin/ffprobe -- ffplay: /Volumes/Daten/dev/mac/ffmpeg-build-script/workspace/bin/ffplay +- ffmpeg: /app/workspace/bin/ffmpeg +- ffprobe: /app/workspace/bin/ffprobe +- ffplay: /app/workspace/bin/ffplay Install these binaries to your /usr/local/bin folder? Existing binaries will be replaced. [Y/n] y Password: diff --git a/build-ffmpeg b/build-ffmpeg index 1839e4c0..8a7a5cc5 100755 --- a/build-ffmpeg +++ b/build-ffmpeg @@ -4,8 +4,8 @@ # LICENSE: https://github.com/markus-perl/ffmpeg-build-script/blob/master/LICENSE PROGNAME=$(basename "$0") -FFMPEG_VERSION=4.4 -SCRIPT_VERSION=1.33 +FFMPEG_VERSION=6.0 +SCRIPT_VERSION=1.48 CWD=$(pwd) PACKAGES="$CWD/packages" WORKSPACE="$CWD/workspace" @@ -17,6 +17,8 @@ MACOS_M1=false CONFIGURE_OPTIONS=() NONFREE_AND_GPL=false LATEST=false +MANPAGES=1 +CURRENT_PACKAGE_VERSION=0 # Check for Apple Silicon if [[ ("$(uname -m)" == "arm64") && ("$OSTYPE" == "darwin"*) ]]; then @@ -135,6 +137,7 @@ build() { echo "" echo "building $1 - version $2" echo "=======================" + CURRENT_PACKAGE_VERSION=$2 if [ -f "$PACKAGES/$1.done" ]; then if grep -Fx "$2" "$PACKAGES/$1.done" >/dev/null; then @@ -169,7 +172,7 @@ library_exists() { } build_done() { - echo "$2" > "$PACKAGES/$1.done" + echo "$2" >"$PACKAGES/$1.done" } verify_binary_type() { @@ -205,6 +208,7 @@ usage() { echo " --enable-gpl-and-non-free Enable GPL and non-free codecs - https://ffmpeg.org/legal.html" echo " -c, --cleanup Remove all working dirs" echo " --latest Build latest version of dependencies if newer available" + echo " --small Prioritize small size over speed and usability; don't build manpages" echo " --full-static Build a full static FFmpeg binary (eg. glibc, pthreads etc...) **only Linux**" echo " Note: Because of the NSS (Name Service Switch), glibc does not recommend static links." echo "" @@ -247,6 +251,10 @@ while (($# > 0)); do if [[ "$1" == "--latest" ]]; then LATEST=true fi + if [[ "$1" == "--small" ]]; then + CONFIGURE_OPTIONS+=("--enable-small" "--disable-doc") + MANPAGES=0 + fi shift ;; *) @@ -267,9 +275,10 @@ fi echo "Using $MJOBS make jobs simultaneously." if $NONFREE_AND_GPL; then -echo "With GPL and non-free codecs" + echo "With GPL and non-free codecs" fi + if [ -n "$LDEXEFLAGS" ]; then echo "Start the build in full static mode." fi @@ -278,7 +287,7 @@ mkdir -p "$PACKAGES" mkdir -p "$WORKSPACE" export PATH="${WORKSPACE}/bin:$PATH" -PKG_CONFIG_PATH="/usr/local/lib/x86_64-linux-gnu/pkgconfig:/usr/local/lib/pkgconfig" +PKG_CONFIG_PATH="$WORKSPACE/lib/pkgconfig:/usr/local/lib/x86_64-linux-gnu/pkgconfig:/usr/local/lib/pkgconfig" PKG_CONFIG_PATH+=":/usr/local/share/pkgconfig:/usr/lib/x86_64-linux-gnu/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig:/usr/lib64/pkgconfig" export PKG_CONFIG_PATH @@ -310,102 +319,131 @@ fi ## if build "giflib" "5.2.1"; then - download "https://sourceforge.net/projects/giflib/files/giflib-5.2.1.tar.gz" - if [[ "$OSTYPE" == "darwin"* ]]; then - download "https://sourceforge.net/p/giflib/bugs/_discuss/thread/4e811ad29b/c323/attachment/Makefile.patch" - execute patch "${PACKAGES}/giflib-5.2.1/Makefile" ${PACKAGES}/Makefile.patch"" - fi - execute make -j $MJOBS + download "https://netcologne.dl.sourceforge.net/project/giflib/giflib-$CURRENT_PACKAGE_VERSION.tar.gz" + if [[ "$OSTYPE" == "darwin"* ]]; then + download "https://sourceforge.net/p/giflib/bugs/_discuss/thread/4e811ad29b/c323/attachment/Makefile.patch" + execute patch -p0 --forward "${PACKAGES}/giflib-$CURRENT_PACKAGE_VERSION/Makefile" "${PACKAGES}/Makefile.patch" || true + fi + cd "${PACKAGES}"/giflib-$CURRENT_PACKAGE_VERSION || exit + #multicore build disabled for this library + execute make execute make PREFIX="${WORKSPACE}" install - build_done "giflib" "5.2.1" + build_done "giflib" $CURRENT_PACKAGE_VERSION fi if build "pkg-config" "0.29.2"; then - download "https://pkgconfig.freedesktop.org/releases/pkg-config-0.29.2.tar.gz" + download "https://pkgconfig.freedesktop.org/releases/pkg-config-$CURRENT_PACKAGE_VERSION.tar.gz" execute ./configure --silent --prefix="${WORKSPACE}" --with-pc-path="${WORKSPACE}"/lib/pkgconfig --with-internal-glib execute make -j $MJOBS execute make install - build_done "pkg-config" "0.29.2" + build_done "pkg-config" $CURRENT_PACKAGE_VERSION fi if build "yasm" "1.3.0"; then - download "https://github.com/yasm/yasm/releases/download/v1.3.0/yasm-1.3.0.tar.gz" + download "https://github.com/yasm/yasm/releases/download/v$CURRENT_PACKAGE_VERSION/yasm-$CURRENT_PACKAGE_VERSION.tar.gz" execute ./configure --prefix="${WORKSPACE}" execute make -j $MJOBS execute make install - build_done "yasm" "1.3.0" + build_done "yasm" $CURRENT_PACKAGE_VERSION fi -if build "nasm" "2.15.05"; then - download "https://www.nasm.us/pub/nasm/releasebuilds/2.15.05/nasm-2.15.05.tar.xz" +if build "nasm" "2.16.01"; then + download "https://www.nasm.us/pub/nasm/releasebuilds/$CURRENT_PACKAGE_VERSION/nasm-$CURRENT_PACKAGE_VERSION.tar.xz" execute ./configure --prefix="${WORKSPACE}" --disable-shared --enable-static execute make -j $MJOBS execute make install - build_done "nasm" "2.15.05" + build_done "nasm" $CURRENT_PACKAGE_VERSION fi -if build "zlib" "1.2.11"; then - download "https://www.zlib.net/zlib-1.2.11.tar.gz" +if build "zlib" "1.2.13"; then + download "https://github.com/madler/zlib/releases/download/v$CURRENT_PACKAGE_VERSION/zlib-$CURRENT_PACKAGE_VERSION.tar.gz" execute ./configure --static --prefix="${WORKSPACE}" execute make -j $MJOBS execute make install - build_done "zlib" "1.2.11" + build_done "zlib" $CURRENT_PACKAGE_VERSION fi if build "m4" "1.4.19"; then - download "https://ftp.gnu.org/gnu/m4/m4-1.4.19.tar.gz" + download "https://ftp.gnu.org/gnu/m4/m4-$CURRENT_PACKAGE_VERSION.tar.gz" execute ./configure --prefix="${WORKSPACE}" execute make -j $MJOBS execute make install - build_done "m4" "1.4.19" + build_done "m4" $CURRENT_PACKAGE_VERSION fi if build "autoconf" "2.71"; then - download "https://ftp.gnu.org/gnu/autoconf/autoconf-2.71.tar.gz" + download "https://ftp.gnu.org/gnu/autoconf/autoconf-$CURRENT_PACKAGE_VERSION.tar.gz" execute ./configure --prefix="${WORKSPACE}" execute make -j $MJOBS execute make install - build_done "autoconf" "2.71" + build_done "autoconf" $CURRENT_PACKAGE_VERSION fi -if build "automake" "1.16.4"; then - download "https://ftp.gnu.org/gnu/automake/automake-1.16.4.tar.gz" +if build "automake" "1.16.5"; then + download "https://ftp.gnu.org/gnu/automake/automake-$CURRENT_PACKAGE_VERSION.tar.gz" execute ./configure --prefix="${WORKSPACE}" execute make -j $MJOBS execute make install - build_done "automake" "1.16.4" + build_done "automake" $CURRENT_PACKAGE_VERSION fi -if build "libtool" "2.4.6"; then - download "https://ftpmirror.gnu.org/libtool/libtool-2.4.6.tar.gz" +if build "libtool" "2.4.7"; then + download "https://ftpmirror.gnu.org/libtool/libtool-$CURRENT_PACKAGE_VERSION.tar.gz" execute ./configure --prefix="${WORKSPACE}" --enable-static --disable-shared execute make -j $MJOBS execute make install - build_done "libtool" "2.4.6" + build_done "libtool" $CURRENT_PACKAGE_VERSION fi if $NONFREE_AND_GPL; then - if build "openssl" "1.1.1l"; then - download "https://www.openssl.org/source/openssl-1.1.1l.tar.gz" + if build "openssl" "1.1.1w"; then + download "https://www.openssl.org/source/openssl-$CURRENT_PACKAGE_VERSION.tar.gz" if $MACOS_M1; then sed -n 's/\(##### GNU Hurd\)/"darwin64-arm64-cc" => { \n inherit_from => [ "darwin-common", asm("aarch64_asm") ],\n CFLAGS => add("-Wall"),\n cflags => add("-arch arm64 "),\n lib_cppflags => add("-DL_ENDIAN"),\n bn_ops => "SIXTY_FOUR_BIT_LONG", \n perlasm_scheme => "macosx", \n}, \n\1/g' Configurations/10-main.conf - execute ./configure --prefix="${WORKSPACE}" no-shared no-asm darwin64-arm64-cc + execute ./Configure --prefix="${WORKSPACE}" no-shared no-asm darwin64-arm64-cc else execute ./config --prefix="${WORKSPACE}" --openssldir="${WORKSPACE}" --with-zlib-include="${WORKSPACE}"/include/ --with-zlib-lib="${WORKSPACE}"/lib no-shared zlib fi execute make -j $MJOBS execute make install_sw - build_done "openssl" "1.1.1l" + build_done "openssl" $CURRENT_PACKAGE_VERSION fi CONFIGURE_OPTIONS+=("--enable-openssl") +else + if build "gmp" "6.2.1"; then + download "https://ftp.gnu.org/gnu/gmp/gmp-$CURRENT_PACKAGE_VERSION.tar.xz" + execute ./configure --prefix="${WORKSPACE}" --disable-shared --enable-static + execute make -j $MJOBS + execute make install + build_done "gmp" $CURRENT_PACKAGE_VERSION + fi + + if build "nettle" "3.9.1"; then + download "https://ftp.gnu.org/gnu/nettle/nettle-$CURRENT_PACKAGE_VERSION.tar.gz" + execute ./configure --prefix="${WORKSPACE}" --disable-shared --enable-static --disable-openssl --disable-documentation --libdir="${WORKSPACE}"/lib CPPFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" + execute make -j $MJOBS + execute make install + build_done "nettle" $CURRENT_PACKAGE_VERSION + fi + + if [[ ! $ARCH == 'arm64' ]]; then + if build "gnutls" "3.7.10"; then + download "https://www.gnupg.org/ftp/gcrypt/gnutls/v3.7/gnutls-$CURRENT_PACKAGE_VERSION.tar.xz" + execute ./configure --prefix="${WORKSPACE}" --disable-shared --enable-static --disable-doc --disable-tools --disable-cxx --disable-tests --disable-gtk-doc-html --disable-libdane --disable-nls --enable-local-libopts --disable-guile --with-included-libtasn1 --with-included-unistring --without-p11-kit CPPFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" + execute make -j $MJOBS + execute make install + build_done "gnutls" $CURRENT_PACKAGE_VERSION + fi + # CONFIGURE_OPTIONS+=("--enable-gmp" "--enable-gnutls") + fi fi -if build "cmake" "3.22.0"; then - download "https://github.com/Kitware/CMake/releases/download/v3.22.0/cmake-3.22.0.tar.gz" +if build "cmake" "3.27.7"; then + download "https://github.com/Kitware/CMake/releases/download/v$CURRENT_PACKAGE_VERSION/cmake-$CURRENT_PACKAGE_VERSION.tar.gz" execute ./configure --prefix="${WORKSPACE}" --parallel="${MJOBS}" -- -DCMAKE_USE_OPENSSL=OFF execute make -j $MJOBS execute make install - build_done "cmake" "3.22.0" + build_done "cmake" $CURRENT_PACKAGE_VERSION fi ## @@ -421,55 +459,67 @@ if command_exists "python3"; then if ! command_exists ${r}; then execute pip3 install ${r} --quiet --upgrade --no-cache-dir --disable-pip-version-check fi + export PATH=$PATH:~/Library/Python/3.9/bin done fi if command_exists "meson"; then - if build "dav1d" "0.9.2"; then - download "https://code.videolan.org/videolan/dav1d/-/archive/0.9.2/dav1d-0.9.2.tar.gz" + if build "dav1d" "1.1.0"; then + download "https://code.videolan.org/videolan/dav1d/-/archive/$CURRENT_PACKAGE_VERSION/dav1d-$CURRENT_PACKAGE_VERSION.tar.gz" make_dir build + + CFLAGSBACKUP=$CFLAGS + if $MACOS_M1; then + export CFLAGS="-arch arm64" + fi + execute meson build --prefix="${WORKSPACE}" --buildtype=release --default-library=static --libdir="${WORKSPACE}"/lib execute ninja -C build execute ninja -C build install - build_done "dav1d" "0.9.2" + + if $MACOS_M1; then + export CFLAGS=$CFLAGSBACKUP + fi + + build_done "dav1d" $CURRENT_PACKAGE_VERSION fi CONFIGURE_OPTIONS+=("--enable-libdav1d") fi fi -if ! $MACOS_M1; then - if build "svtav1" "1a3e32b"; then - execute rm -f "${PACKAGES}/SVT-AV1-master.tar.gz" "${PACKAGES}/svtav1-1a3e32b.tar.gz" - # Last known working commit which passed CI Tests from HEAD branch - download "https://gitlab.com/AOMediaCodec/SVT-AV1/-/archive/1a3e32b8fdc4abf5c093ee01dfa82803afc75fb4/SVT-AV1-1a3e32b8fdc4abf5c093ee01dfa82803afc75fb4.tar.gz" "svtav1-1a3e32b.tar.gz" - cd "${PACKAGES}"/svtav1-1a3e32b/Build/linux || exit - execute cmake -DCMAKE_INSTALL_PREFIX="${WORKSPACE}" -DENABLE_SHARED=off -DBUILD_SHARED_LIBS=OFF ../.. -G"Unix Makefiles" -DCMAKE_BUILD_TYPE=Release - execute make -j $MJOBS - execute make install - execute cp SvtAv1Enc.pc "${WORKSPACE}/lib/pkgconfig/" - execute cp SvtAv1Dec.pc "${WORKSPACE}/lib/pkgconfig/" - build_done "svtav1" "1a3e32b"; - fi - CONFIGURE_OPTIONS+=("--enable-libsvtav1") +if build "svtav1" "1.7.0"; then + # Last known working commit which passed CI Tests from HEAD branch + download "https://gitlab.com/AOMediaCodec/SVT-AV1/-/archive/v$CURRENT_PACKAGE_VERSION/SVT-AV1-v$CURRENT_PACKAGE_VERSION.tar.gz" "svtav1-$CURRENT_PACKAGE_VERSION.tar.gz" + cd "${PACKAGES}"/svtav1-$CURRENT_PACKAGE_VERSION//Build/linux || exit + execute cmake -DCMAKE_INSTALL_PREFIX="${WORKSPACE}" -DENABLE_SHARED=off -DBUILD_SHARED_LIBS=OFF ../.. -G"Unix Makefiles" -DCMAKE_BUILD_TYPE=Release + execute make -j $MJOBS + execute make install + execute cp SvtAv1Enc.pc "${WORKSPACE}/lib/pkgconfig/" + execute cp SvtAv1Dec.pc "${WORKSPACE}/lib/pkgconfig/" + build_done "svtav1" $CURRENT_PACKAGE_VERSION fi +CONFIGURE_OPTIONS+=("--enable-libsvtav1") + if command_exists "cargo"; then - if build "rav1e" "0.5.0-beta"; then - execute cargo install cargo-c - download "https://github.com/xiph/rav1e/archive/refs/tags/v0.5.0-beta.tar.gz" - execute cargo cinstall --prefix="${WORKSPACE}" --library-type=staticlib --crt-static --release - build_done "rav1e" "0.5.0-beta" + if [[ ! "$SKIPRAV1E" == "yes" ]]; then + if build "rav1e" "0.6.6"; then + execute cargo install --version "0.9.20+cargo-0.71" cargo-c + download "https://github.com/xiph/rav1e/archive/refs/tags/v$CURRENT_PACKAGE_VERSION.tar.gz" + execute cargo cinstall --prefix="${WORKSPACE}" --library-type=staticlib --crt-static --release + build_done "rav1e" $CURRENT_PACKAGE_VERSION + fi + CONFIGURE_OPTIONS+=("--enable-librav1e") fi - CONFIGURE_OPTIONS+=("--enable-librav1e") fi if $NONFREE_AND_GPL; then - if build "x264" "5db6aa6"; then - download "https://code.videolan.org/videolan/x264/-/archive/5db6aa6cab1b146e07b60cc1736a01f21da01154/x264-5db6aa6cab1b146e07b60cc1736a01f21da01154.tar.gz" "x264-5db6aa6.tar.gz" - cd "${PACKAGES}"/x264-5db6aa6 || exit + if build "x264" "941cae6d"; then + download "https://code.videolan.org/videolan/x264/-/archive/$CURRENT_PACKAGE_VERSION/x264-$CURRENT_PACKAGE_VERSION.tar.gz" "x264-$CURRENT_PACKAGE_VERSION.tar.gz" + cd "${PACKAGES}"/x264-$CURRENT_PACKAGE_VERSION || exit if [[ "$OSTYPE" == "linux-gnu" ]]; then - execute ./configure --prefix="${WORKSPACE}" --enable-static --enable-pic CXXFLAGS="-fPIC" + execute ./configure --prefix="${WORKSPACE}" --enable-static --enable-pic CXXFLAGS="-fPIC ${CXXFLAGS}" else execute ./configure --prefix="${WORKSPACE}" --enable-static --enable-pic fi @@ -478,14 +528,14 @@ if $NONFREE_AND_GPL; then execute make install execute make install-lib-static - build_done "x264" "5db6aa6" + build_done "x264" $CURRENT_PACKAGE_VERSION fi CONFIGURE_OPTIONS+=("--enable-libx264") fi if $NONFREE_AND_GPL; then if build "x265" "3.5"; then - download "https://github.com/videolan/x265/archive/Release_3.5.tar.gz" "x265-3.5.tar.gz" # This is actually 3.4 if looking at x265Version.txt + download "https://github.com/videolan/x265/archive/Release_$CURRENT_PACKAGE_VERSION.tar.gz" "x265-$CURRENT_PACKAGE_VERSION.tar.gz" # This is actually 3.4 if looking at x265Version.txt cd build/linux || exit rm -rf 8bit 10bit 12bit 2>/dev/null mkdir -p 8bit 10bit 12bit @@ -522,13 +572,13 @@ EOF sed -i.backup 's/-lgcc_s/-lgcc_eh/g' "${WORKSPACE}/lib/pkgconfig/x265.pc" # The -i.backup is intended and required on MacOS: https://stackoverflow.com/questions/5694228/sed-in-place-flag-that-works-both-on-mac-bsd-and-linux fi - build_done "x265" "3.5" + build_done "x265" $CURRENT_PACKAGE_VERSION fi CONFIGURE_OPTIONS+=("--enable-libx265") fi -if build "libvpx" "1.10.0"; then - download "https://github.com/webmproject/libvpx/archive/refs/tags/v1.10.0.tar.gz" "libvpx-1.10.0.tar.gz" +if build "libvpx" "1.13.1"; then + download "https://github.com/webmproject/libvpx/archive/refs/tags/v$CURRENT_PACKAGE_VERSION.tar.gz" "libvpx-$CURRENT_PACKAGE_VERSION.tar.gz" if [[ "$OSTYPE" == "darwin"* ]]; then echo "Applying Darwin patch" @@ -536,17 +586,17 @@ if build "libvpx" "1.10.0"; then sed "s/-Wl,--no-undefined -Wl,-soname/-Wl,-undefined,error -Wl,-install_name/g" build/make/Makefile.patched >build/make/Makefile fi - execute ./configure --prefix="${WORKSPACE}" --disable-unit-tests --disable-shared --as=yasm --enable-vp9-highbitdepth + execute ./configure --prefix="${WORKSPACE}" --disable-unit-tests --disable-shared --disable-examples --as=yasm --enable-vp9-highbitdepth execute make -j $MJOBS execute make install - build_done "libvpx" "1.10.0" + build_done "libvpx" $CURRENT_PACKAGE_VERSION fi CONFIGURE_OPTIONS+=("--enable-libvpx") if $NONFREE_AND_GPL; then if build "xvidcore" "1.3.7"; then - download "https://downloads.xvid.com/downloads/xvidcore-1.3.7.tar.gz" + download "https://downloads.xvid.com/downloads/xvidcore-$CURRENT_PACKAGE_VERSION.tar.gz" cd build/generic || exit execute ./configure --prefix="${WORKSPACE}" --disable-shared --enable-static execute make -j $MJOBS @@ -560,17 +610,17 @@ if $NONFREE_AND_GPL; then execute rm "${WORKSPACE}"/lib/libxvidcore.so* fi - build_done "xvidcore" "1.3.7" + build_done "xvidcore" $CURRENT_PACKAGE_VERSION fi CONFIGURE_OPTIONS+=("--enable-libxvid") fi if $NONFREE_AND_GPL; then - if build "vid_stab" "1.1.0"; then - download "https://github.com/georgmartius/vid.stab/archive/v1.1.0.tar.gz" "vid.stab-1.1.0.tar.gz" + if build "vid_stab" "1.1.1"; then + download "https://github.com/georgmartius/vid.stab/archive/v$CURRENT_PACKAGE_VERSION.tar.gz" "vid.stab-$CURRENT_PACKAGE_VERSION.tar.gz" if $MACOS_M1; then - curl -s -o "$PACKAGES/vid.stab-1.1.0/fix_cmake_quoting.patch" https://raw.githubusercontent.com/Homebrew/formula-patches/5bf1a0e0cfe666ee410305cece9c9c755641bfdf/libvidstab/fix_cmake_quoting.patch + curl -L --silent -o "$PACKAGES/vid.stab-$CURRENT_PACKAGE_VERSION/fix_cmake_quoting.patch" "https://raw.githubusercontent.com/Homebrew/formula-patches/5bf1a0e0cfe666ee410305cece9c9c755641bfdf/libvidstab/fix_cmake_quoting.patch" patch -p1 configure.patched chmod +x configure.patched mv configure.patched configure + + if ! $MACOS_M1; then + ##BEGIN CONFIG.GUESS PATCH -- Updating config.guess file. Which allowed me to compile on aarch64 (ARMv8) [linux kernel 4.9 Ubuntu 20.04] + rm config.guess + curl -L --silent -o "config.guess" "https://raw.githubusercontent.com/gcc-mirror/gcc/master/config.guess" + chmod +x config.guess + ##END OF CONFIG.GUESS PATCH + fi + execute ./configure --prefix="${WORKSPACE}" --with-ogg-libraries="${WORKSPACE}"/lib --with-ogg-includes="${WORKSPACE}"/include/ --with-vorbis-libraries="${WORKSPACE}"/lib --with-vorbis-includes="${WORKSPACE}"/include/ --enable-static --disable-shared --disable-oggtest --disable-vorbistest --disable-examples --disable-asm --disable-spec execute make -j $MJOBS execute make install - build_done "libtheora" "1.1.1" + build_done "libtheora" $CURRENT_PACKAGE_VERSION fi CONFIGURE_OPTIONS+=("--enable-libtheora") if $NONFREE_AND_GPL; then if build "fdk_aac" "2.0.2"; then - download "https://sourceforge.net/projects/opencore-amr/files/fdk-aac/fdk-aac-2.0.2.tar.gz/download?use_mirror=gigenet" "fdk-aac-2.0.2.tar.gz" + download "https://sourceforge.net/projects/opencore-amr/files/fdk-aac/fdk-aac-$CURRENT_PACKAGE_VERSION.tar.gz/download?use_mirror=gigenet" "fdk-aac-$CURRENT_PACKAGE_VERSION.tar.gz" execute ./configure --prefix="${WORKSPACE}" --disable-shared --enable-static --enable-pic execute make -j $MJOBS execute make install - build_done "fdk_aac" "2.0.2" + build_done "fdk_aac" $CURRENT_PACKAGE_VERSION fi CONFIGURE_OPTIONS+=("--enable-libfdk-aac") fi @@ -755,29 +809,29 @@ fi ## image library ## -if build "libtiff" "4.2.0"; then - download "https://download.osgeo.org/libtiff/tiff-4.2.0.tar.gz" +if build "libtiff" "4.5.0"; then + download "https://download.osgeo.org/libtiff/tiff-$CURRENT_PACKAGE_VERSION.tar.xz" execute ./configure --prefix="${WORKSPACE}" --disable-shared --enable-static --disable-dependency-tracking --disable-lzma --disable-webp --disable-zstd --without-x execute make -j $MJOBS execute make install - build_done "libtiff" "4.2.0" + build_done "libtiff" $CURRENT_PACKAGE_VERSION fi -if build "libpng" "1.6.37"; then - download "https://sourceforge.net/projects/libpng/files/libpng16/1.6.37/libpng-1.6.37.tar.gz/download?use_mirror=gigenet" "libpng-1.6.37.tar.gz" +if build "libpng" "1.6.39"; then + download "https://gigenet.dl.sourceforge.net/project/libpng/libpng16/$CURRENT_PACKAGE_VERSION/libpng-$CURRENT_PACKAGE_VERSION.tar.gz" "libpng-$CURRENT_PACKAGE_VERSION.tar.gz" export LDFLAGS="${LDFLAGS}" export CPPFLAGS="${CFLAGS}" execute ./configure --prefix="${WORKSPACE}" --disable-shared --enable-static execute make -j $MJOBS execute make install - build_done "libpng" "1.6.37" + build_done "libpng" $CURRENT_PACKAGE_VERSION fi ## does not compile on monterey -> _PrintGifError if [[ "$OSTYPE" != "darwin"* ]]; then - if build "libwebp" "1.2.1"; then + if build "libwebp" "1.2.2"; then # libwebp can fail to compile on Ubuntu if these flags were left set to CFLAGS CPPFLAGS= - download "https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-1.2.1.tar.gz" "libwebp-1.2.1.tar.gz" + download "https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-$CURRENT_PACKAGE_VERSION.tar.gz" "libwebp-$CURRENT_PACKAGE_VERSION.tar.gz" execute ./configure --prefix="${WORKSPACE}" --disable-shared --enable-static --disable-dependency-tracking --disable-gl --with-zlib-include="${WORKSPACE}"/include/ --with-zlib-lib="${WORKSPACE}"/lib make_dir build cd build || exit @@ -785,7 +839,7 @@ if [[ "$OSTYPE" != "darwin"* ]]; then execute make -j $MJOBS execute make install - build_done "libwebp" "1.2.1" + build_done "libwebp" $CURRENT_PACKAGE_VERSION fi CONFIGURE_OPTIONS+=("--enable-libwebp") fi @@ -793,18 +847,28 @@ fi ## other library ## -if build "libsdl" "2.0.14"; then - download "https://www.libsdl.org/release/SDL2-2.0.14.tar.gz" +if build "libsdl" "2.28.5"; then + download "https://github.com/libsdl-org/SDL/releases/download/release-$CURRENT_PACKAGE_VERSION/SDL2-$CURRENT_PACKAGE_VERSION.tar.gz" execute ./configure --prefix="${WORKSPACE}" --disable-shared --enable-static execute make -j $MJOBS execute make install - build_done "libsdl" "2.0.14" + build_done "libsdl" $CURRENT_PACKAGE_VERSION fi +if build "FreeType2" "2.11.1"; then + download "https://downloads.sourceforge.net/freetype/freetype-$CURRENT_PACKAGE_VERSION.tar.xz" + execute ./configure --prefix="${WORKSPACE}" --disable-shared --enable-static + execute make -j $MJOBS + execute make install + build_done "FreeType2" $CURRENT_PACKAGE_VERSION +fi + +CONFIGURE_OPTIONS+=("--enable-libfreetype") + if $NONFREE_AND_GPL; then - if build "srt" "1.4.3"; then - download "https://github.com/Haivision/srt/archive/v1.4.3.tar.gz" "srt-1.4.3.tar.gz" + if build "srt" "1.5.3"; then + download "https://github.com/Haivision/srt/archive/v$CURRENT_PACKAGE_VERSION.tar.gz" "srt-$CURRENT_PACKAGE_VERSION.tar.gz" export OPENSSL_ROOT_DIR="${WORKSPACE}" export OPENSSL_LIB_DIR="${WORKSPACE}"/lib export OPENSSL_INCLUDE_DIR="${WORKSPACE}"/include/ @@ -815,33 +879,55 @@ if $NONFREE_AND_GPL; then sed -i.backup 's/-lgcc_s/-lgcc_eh/g' "${WORKSPACE}"/lib/pkgconfig/srt.pc # The -i.backup is intended and required on MacOS: https://stackoverflow.com/questions/5694228/sed-in-place-flag-that-works-both-on-mac-bsd-and-linux fi - build_done "srt" "1.4.3" + build_done "srt" $CURRENT_PACKAGE_VERSION fi CONFIGURE_OPTIONS+=("--enable-libsrt") fi +## +## zmq library +## + +if build "libzmq" "4.3.1"; then + download "https://github.com/zeromq/libzmq/releases/download/v$CURRENT_PACKAGE_VERSION/zeromq-$CURRENT_PACKAGE_VERSION.tar.gz" + if [[ "$OSTYPE" == "darwin"* ]]; then + export XML_CATALOG_FILES=/usr/local/etc/xml/catalog + fi + execute ./configure --prefix="${WORKSPACE}" --disable-shared --enable-static + execute make -j $MJOBS + execute make install + build_done "libzmq" $CURRENT_PACKAGE_VERSION + CONFIGURE_OPTIONS+=("--enable-libzmq") +fi + ## ## HWaccel library ## if [[ "$OSTYPE" == "linux-gnu" ]]; then if command_exists "nvcc"; then - if build "nv-codec" "11.1.5.0"; then - download "https://github.com/FFmpeg/nv-codec-headers/releases/download/n11.1.5.0/nv-codec-headers-11.1.5.0.tar.gz" + if build "nv-codec" "11.1.5.3"; then + download "https://github.com/FFmpeg/nv-codec-headers/releases/download/n$CURRENT_PACKAGE_VERSION/nv-codec-headers-$CURRENT_PACKAGE_VERSION.tar.gz" execute make PREFIX="${WORKSPACE}" - execute make install PREFIX="${WORKSPACE}" - build_done "nv-codec" "11.1.5.0" + execute make PREFIX="${WORKSPACE}" install + build_done "nv-codec" $CURRENT_PACKAGE_VERSION fi CFLAGS+=" -I/usr/local/cuda/include" LDFLAGS+=" -L/usr/local/cuda/lib64" - CONFIGURE_OPTIONS+=("--enable-cuda-nvcc" "--enable-cuvid" "--enable-nvenc" "--enable-cuda-llvm") + CONFIGURE_OPTIONS+=("--enable-cuda-nvcc" "--enable-cuvid" "--enable-nvdec" "--enable-nvenc" "--enable-cuda-llvm" "--enable-ffnvcodec") if [ -z "$LDEXEFLAGS" ]; then CONFIGURE_OPTIONS+=("--enable-libnpp") # Only libnpp cannot be statically linked. fi - - # https://arnon.dk/matching-sm-architectures-arch-and-gencode-for-various-nvidia-cards/ - CONFIGURE_OPTIONS+=("--nvccflags=-gencode arch=compute_52,code=sm_52") + if [ -z "$CUDA_COMPUTE_CAPABILITY" ]; then + # Set default value if no compute capability was found + # Note that multi-architecture builds are not supported in ffmpeg + # see https://patchwork.ffmpeg.org/comment/62905/ + export CUDA_COMPUTE_CAPABILITY=52 + fi + CONFIGURE_OPTIONS+=("--nvccflags=-gencode arch=compute_$CUDA_COMPUTE_CAPABILITY,code=sm_$CUDA_COMPUTE_CAPABILITY -O2") + else + CONFIGURE_OPTIONS+=("--disable-ffnvcodec") fi # Vaapi doesn't work well with static links FFmpeg. @@ -855,12 +941,12 @@ if [[ "$OSTYPE" == "linux-gnu" ]]; then fi fi - if build "amf" "1.4.21.0"; then - download "https://github.com/GPUOpen-LibrariesAndSDKs/AMF/archive/refs/tags/v.1.4.21.tar.gz" "AMF-1.4.21.tar.gz" "AMF-1.4.21" + if build "amf" "1.4.30"; then + download "https://github.com/GPUOpen-LibrariesAndSDKs/AMF/archive/refs/tags/v$CURRENT_PACKAGE_VERSION.tar.gz" "AMF-$CURRENT_PACKAGE_VERSION.tar.gz" "AMF-$CURRENT_PACKAGE_VERSION" execute rm -rf "${WORKSPACE}/include/AMF" execute mkdir -p "${WORKSPACE}/include/AMF" - execute cp -r "${PACKAGES}"/AMF-1.4.21/AMF-v.1.4.21/amf/public/include/* "${WORKSPACE}/include/AMF/" - build_done "amf" "1.4.21.0" + execute cp -r "${PACKAGES}"/AMF-$CURRENT_PACKAGE_VERSION/AMF-$CURRENT_PACKAGE_VERSION/amf/public/include/* "${WORKSPACE}/include/AMF/" + build_done "amf" $CURRENT_PACKAGE_VERSION fi CONFIGURE_OPTIONS+=("--enable-amf") fi @@ -874,16 +960,20 @@ if [[ "$OSTYPE" == "darwin"* ]]; then EXTRA_VERSION="${FFMPEG_VERSION}" fi +if [ -d "$CWD/.git" ]; then + echo -e "\nTemporarily moving .git dir to .git.bak to workaround ffmpeg build bug" #causing ffmpeg version number to be wrong + mv "$CWD/.git" "$CWD/.git.bak" + # if build fails below, .git will remain in the wrong place... +fi + build "ffmpeg" "$FFMPEG_VERSION" download "https://github.com/FFmpeg/FFmpeg/archive/refs/heads/release/$FFMPEG_VERSION.tar.gz" "FFmpeg-release-$FFMPEG_VERSION.tar.gz" # shellcheck disable=SC2086 ./configure "${CONFIGURE_OPTIONS[@]}" \ --disable-debug \ - --disable-doc \ --disable-shared \ --enable-pthreads \ --enable-static \ - --enable-small \ --enable-version3 \ --extra-cflags="${CFLAGS}" \ --extra-ldexeflags="${LDEXEFLAGS}" \ @@ -897,9 +987,19 @@ download "https://github.com/FFmpeg/FFmpeg/archive/refs/heads/release/$FFMPEG_VE execute make -j $MJOBS execute make install -INSTALL_FOLDER="/usr/bin" +if [ -d "$CWD/.git.bak" ]; then + mv "$CWD/.git.bak" "$CWD/.git" +fi + +INSTALL_FOLDER="/usr" # not recommended, overwrites system ffmpeg package if [[ "$OSTYPE" == "darwin"* ]]; then - INSTALL_FOLDER="/usr/local/bin" + INSTALL_FOLDER="/usr/local" +else + if [ -d "$HOME/.local" ]; then # systemd-standard user path + INSTALL_FOLDER="$HOME/.local" + elif [ -d "/usr/local" ]; then + INSTALL_FOLDER="/usr/local" + fi fi verify_binary_type @@ -911,34 +1011,33 @@ echo "- ffprobe: $WORKSPACE/bin/ffprobe" echo "- ffplay: $WORKSPACE/bin/ffplay" echo "" +INSTALL_NOW=0 if [[ "$AUTOINSTALL" == "yes" ]]; then - if command_exists "sudo"; then - sudo cp "$WORKSPACE/bin/ffmpeg" "$INSTALL_FOLDER/ffmpeg" - sudo cp "$WORKSPACE/bin/ffprobe" "$INSTALL_FOLDER/ffprobe" - sudo cp "$WORKSPACE/bin/ffplay" "$INSTALL_FOLDER/ffplay" - echo "Done. FFmpeg is now installed to your system." - else - cp "$WORKSPACE/bin/ffmpeg" "$INSTALL_FOLDER/ffmpeg" - cp "$WORKSPACE/bin/ffprobe" "$INSTALL_FOLDER/ffprobe" - cp "$WORKSPACE/bin/ffplay" "$INSTALL_FOLDER/ffplay" - echo "Done. FFmpeg is now installed to your system." - fi + INSTALL_NOW=1 elif [[ ! "$SKIPINSTALL" == "yes" ]]; then read -r -p "Install these binaries to your $INSTALL_FOLDER folder? Existing binaries will be replaced. [Y/n] " response case $response in - [yY][eE][sS] | [yY]) - if command_exists "sudo"; then - sudo cp "$WORKSPACE/bin/ffmpeg" "$INSTALL_FOLDER/ffmpeg" - sudo cp "$WORKSPACE/bin/ffprobe" "$INSTALL_FOLDER/ffprobe" - sudo cp "$WORKSPACE/bin/ffplay" "$INSTALL_FOLDER/ffplay" - else - cp "$WORKSPACE/bin/ffmpeg" "$INSTALL_FOLDER/ffmpeg" - cp "$WORKSPACE/bin/ffprobe" "$INSTALL_FOLDER/ffprobe" - cp "$WORKSPACE/bin/ffplay" "$INSTALL_FOLDER/ffplay" - fi - echo "Done. FFmpeg is now installed to your system." + "" | [yY][eE][sS] | [yY]) + INSTALL_NOW=1 ;; esac fi +if [ "$INSTALL_NOW" = 1 ]; then + if command_exists "sudo" && [[ $INSTALL_FOLDER == /usr* ]]; then + SUDO=sudo + fi + $SUDO cp "$WORKSPACE/bin/ffmpeg" "$INSTALL_FOLDER/bin/ffmpeg" + $SUDO cp "$WORKSPACE/bin/ffprobe" "$INSTALL_FOLDER/bin/ffprobe" + $SUDO cp "$WORKSPACE/bin/ffplay" "$INSTALL_FOLDER/bin/ffplay" + if [ $MANPAGES = 1 ]; then + $SUDO mkdir -p "$INSTALL_FOLDER/share/man/man1" + $SUDO cp "$WORKSPACE/share/man/man1"/ff* "$INSTALL_FOLDER/share/man/man1" + if command_exists "mandb"; then + $SUDO mandb -q + fi + fi + echo "Done. FFmpeg is now installed to your system." +fi + exit 0 diff --git a/cuda-centos.dockerfile b/cuda-centos.dockerfile deleted file mode 100644 index 9fab5edb..00000000 --- a/cuda-centos.dockerfile +++ /dev/null @@ -1,48 +0,0 @@ -ARG VER=8 - -FROM nvidia/cuda:11.4.2-devel-centos${VER} AS build - -ENV NVIDIA_VISIBLE_DEVICES all -ENV NVIDIA_DRIVER_CAPABILITIES compute,utility,video - -RUN yum group install -y "Development Tools" \ - && yum install -y curl libva-devel python3 \ - && yum install -y meson ninja-build --enablerepo=powertools \ - && rm -rf /var/cache/yum/* /var/cache/dnf/* \ - && yum clean all \ - && alternatives --set python /usr/bin/python3 - -WORKDIR /app -COPY ./build-ffmpeg /app/build-ffmpeg - -RUN SKIPINSTALL=yes /app/build-ffmpeg --build --enable-gpl-and-non-free - - -FROM centos:${VER} - -ENV NVIDIA_VISIBLE_DEVICES all -ENV NVIDIA_DRIVER_CAPABILITIES compute,utility,video - -# install va-driver -RUN yum install -y libva \ - && rm -rf /var/cache/yum/* \ - && yum clean all - -# Copy libnpp -COPY --from=build /usr/local/cuda-11.4/targets/x86_64-linux/lib/libnppc.so.11 /lib64/libnppc.so.11 -COPY --from=build /usr/local/cuda-11.4/targets/x86_64-linux/lib/libnppig.so.11 /lib64/libnppig.so.11 -COPY --from=build /usr/local/cuda-11.4/targets/x86_64-linux/lib/libnppicc.so.11 /lib64/libnppicc.so.11 -COPY --from=build /usr/local/cuda-11.4/targets/x86_64-linux/lib/libnppidei.so.11 /lib64/libnppidei.so.11 - -# Copy ffmpeg -COPY --from=build /app/workspace/bin/ffmpeg /usr/bin/ffmpeg -COPY --from=build /app/workspace/bin/ffprobe /usr/bin/ffprobe -COPY --from=build /app/workspace/bin/ffplay /usr/bin/ffplay - -# Check shared library -RUN ldd /usr/bin/ffmpeg -RUN ldd /usr/bin/ffprobe -RUN ldd /usr/bin/ffplay - -CMD ["--help"] -ENTRYPOINT ["/usr/bin/ffmpeg"] diff --git a/cuda-ubuntu.dockerfile b/cuda-ubuntu.dockerfile index b370fdd6..1355b21e 100644 --- a/cuda-ubuntu.dockerfile +++ b/cuda-ubuntu.dockerfile @@ -1,23 +1,40 @@ -ARG VER=20.04 +ARG CUDAVER=12.2.2 +ARG UBUNTUVER=22.04 -FROM nvidia/cuda:11.4.2-devel-ubuntu${VER} AS build +FROM nvidia/cuda:${CUDAVER}-devel-ubuntu${UBUNTUVER} AS build ENV DEBIAN_FRONTEND noninteractive ENV NVIDIA_VISIBLE_DEVICES all ENV NVIDIA_DRIVER_CAPABILITIES compute,utility,video -RUN apt-get update \ - && apt-get -y --no-install-recommends install build-essential curl ca-certificates libva-dev python3 python-is-python3 ninja-build meson \ - && apt-get clean; rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/* \ - && update-ca-certificates +RUN apt-get update && \ + apt-get upgrade -y && \ + apt-get -y --no-install-recommends install \ + build-essential \ + curl \ + libva-dev \ + python3 \ + python-is-python3 \ + ninja-build \ + meson \ + cmake \ + git && \ + # clean + apt-get clean; rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/* + +# build and move deviceQuery to /usr/bin +RUN mkdir -p /code && \ + git clone --depth 1 https://github.com/NVIDIA/cuda-samples.git /code/cuda-samples && \ + cd /code/cuda-samples/Samples/1_Utilities/deviceQuery && \ + make && \ + mv deviceQuery /usr/local/bin WORKDIR /app COPY ./build-ffmpeg /app/build-ffmpeg -RUN SKIPINSTALL=yes /app/build-ffmpeg --build --enable-gpl-and-non-free - +RUN CUDA_COMPUTE_CAPABILITY=$(deviceQuery | grep Capability | head -n 1 | awk 'END {print $NF}' | tr -d '.') SKIPINSTALL=yes /app/build-ffmpeg --build --enable-gpl-and-non-free -FROM ubuntu:${VER} +FROM ubuntu:${UBUNTUVER} AS release ENV DEBIAN_FRONTEND noninteractive ENV NVIDIA_VISIBLE_DEVICES all @@ -29,10 +46,11 @@ RUN apt-get update \ && apt-get clean; rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/* # Copy libnpp -COPY --from=build /usr/local/cuda-11.4/targets/x86_64-linux/lib/libnppc.so.11 /lib/x86_64-linux-gnu/libnppc.so.11 -COPY --from=build /usr/local/cuda-11.4/targets/x86_64-linux/lib/libnppig.so.11 /lib/x86_64-linux-gnu/libnppig.so.11 -COPY --from=build /usr/local/cuda-11.4/targets/x86_64-linux/lib/libnppicc.so.11 /lib/x86_64-linux-gnu/libnppicc.so.11 -COPY --from=build /usr/local/cuda-11.4/targets/x86_64-linux/lib/libnppidei.so.11 /lib/x86_64-linux-gnu/libnppidei.so.11 +COPY --from=build /usr/local/cuda-12.2/targets/x86_64-linux/lib/libnppc.so /lib/x86_64-linux-gnu/libnppc.so.12 +COPY --from=build /usr/local/cuda-12.2/targets/x86_64-linux/lib/libnppig.so /lib/x86_64-linux-gnu/libnppig.so.12 +COPY --from=build /usr/local/cuda-12.2/targets/x86_64-linux/lib/libnppicc.so /lib/x86_64-linux-gnu/libnppicc.so.12 +COPY --from=build /usr/local/cuda-12.2/targets/x86_64-linux/lib/libnppidei.so /lib/x86_64-linux-gnu/libnppidei.so.12 +COPY --from=build /usr/local/cuda-12.2/targets/x86_64-linux/lib/libnppif.so /lib/x86_64-linux-gnu/libnppif.so.12 # Copy ffmpeg COPY --from=build /app/workspace/bin/ffmpeg /usr/bin/ffmpeg diff --git a/export.dockerfile b/export.dockerfile index a062fac8..a25cea4d 100644 --- a/export.dockerfile +++ b/export.dockerfile @@ -3,10 +3,10 @@ ARG DIST=ubuntu FROM scratch # Copy libnpp -COPY --from=ffmpeg:cuda-${DIST} /lib/x86_64-linux-gnu/libnppc.so.11 /lib/libnppc.so.11 -COPY --from=ffmpeg:cuda-${DIST} /lib/x86_64-linux-gnu/libnppig.so.11 /lib/libnppig.so.11 -COPY --from=ffmpeg:cuda-${DIST} /lib/x86_64-linux-gnu/libnppicc.so.11 /lib/libnppicc.so.11 -COPY --from=ffmpeg:cuda-${DIST} /lib/x86_64-linux-gnu/libnppidei.so.11 /lib/libnppidei.so.11 +COPY --from=ffmpeg:cuda-${DIST} /lib/x86_64-linux-gnu/libnppc.so.12 /lib/libnppc.so.12 +COPY --from=ffmpeg:cuda-${DIST} /lib/x86_64-linux-gnu/libnppig.so.12 /lib/libnppig.so.12 +COPY --from=ffmpeg:cuda-${DIST} /lib/x86_64-linux-gnu/libnppicc.so.12 /lib/libnppicc.so.12 +COPY --from=ffmpeg:cuda-${DIST} /lib/x86_64-linux-gnu/libnppidei.so.12 /lib/libnppidei.so.12 # Copy ffmpeg COPY --from=ffmpeg:cuda-${DIST} /usr/bin/ffmpeg /bin/ffmpeg diff --git a/full-static.dockerfile b/full-static.dockerfile index 7f334e3c..6c075927 100644 --- a/full-static.dockerfile +++ b/full-static.dockerfile @@ -1,4 +1,4 @@ -FROM ubuntu:20.04 AS build +FROM ubuntu:22.04 AS build ENV DEBIAN_FRONTEND noninteractive ENV NVIDIA_VISIBLE_DEVICES all