ffmpeg static build with libfdk-aac (Fraunhofer FDK AAC) codec

Проект ffmpeg https://ffmpeg.org/download.html распространяет продукт в бинарном статическом виде на https://www.johnvansickle.com/ffmpeg в виде файла ffmpeg-release-amd64-static.tar.xz

full static build, должно работать под всеми ОС

Он не содержит части кодеков которые могут быть нужны, например, libfdk-aac (Fraunhofer FDK AAC) который используется для кодирования звука мобильными устройствами.

Данное программное обеспечение собрано с опциями:

ffmpeg version 4.3.1-static https://johnvansickle.com/ffmpeg/ Copyright (c) 2000-2020 the FFmpeg developers
built with gcc 8 (Debian 8.3.0-6)
configuration: --enable-gpl --enable-version3 --enable-static --disable-debug --disable-ffplay --disable-indev=sndio --disable-outdev=sndio --cc=gcc --enable-fontconfig --enable-frei0r --enable-gnutls --enable-gmp --enable-libgme --enable-gray --enable-libaom --enable-libfribidi --enable-libass --enable-libvmaf --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librubberband --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libvorbis --enable-libopus --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libdav1d --enable-libxvid --enable-libzvbi --enable-libzimg
libavutil 56. 51.100 / 56. 51.100
libavcodec 58. 91.100 / 58. 91.100
libavformat 58. 45.100 / 58. 45.100
libavdevice 58. 10.100 / 58. 10.100
libavfilter 7. 85.100 / 7. 85.100
libswscale 5. 7.100 / 5. 7.100
libswresample 3. 7.100 / 3. 7.100
libpostproc 55. 7.100 / 55. 7.100

Что не включает в себя нужный кодек libfdk-aac и некоторые другие

Также они не раздают build-файлы/скрипты для повторяемой сборки и изменить что-либо или добавить аудио-видео кодек не предоставляется возможным.

Однако, существуют проекты скриптов для компиляции статического файла ffmpeg с дополнительными кодеками благодаря которым можно получить полностью статический бинарный файл ffmpeg без зависимостей

В статье ниже ссылки на уже скомпилированные ffmpeg / ffprobe, рекомендую также смотреть https://dl.ispsystem.info/ffmpeg-static/ так как там могут появляться новые/более актуальные


1. zimbatm не самая свежая, но актуальная и стабильная версия ffmpeg 4 со стабильными кодеками https://github.com/zimbatm/ffmpeg-static

full static build, должно работать под всеми ОС

опции сборки zimbatm (собирать под Ubuntu 18.04, под gcc8 не собирается):

docker run -it ubuntu:bionic bash
apt-get update && apt-get install wget sudo git-core
git clone https://github.com/zimbatm/ffmpeg-static.git
cd ffmpeg-static
./build-ubuntu.sh

cd bin
./ffmpeg 
ffmpeg version db2935c Copyright (c) 2000-2018 the FFmpeg developers
  built with gcc 7 (Ubuntu 7.5.0-3ubuntu1~18.04)
  configuration: --prefix=/ffmpeg-static/target --pkg-config-flags=--static --extra-cflags=-I/ffmpeg-static/target/include --extra-ldflags=-L/ffmpeg-static/target/lib --extra-libs='-lpthread -lm -lz' --extra-ldexeflags=-static --bindir=/ffmpeg-static/bin --enable-pic --enable-ffplay --enable-fontconfig --enable-frei0r --enable-gpl --enable-version3 --enable-libass --enable-libfribidi --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libzimg --enable-nonfree --enable-openssl
  libavutil      56. 14.100 / 56. 14.100
  libavcodec     58. 18.100 / 58. 18.100
  libavformat    58. 12.100 / 58. 12.100
  libavdevice    58.  3.100 / 58.  3.100
  libavfilter     7. 16.100 /  7. 16.100
  libswscale      5.  1.100 /  5.  1.100
  libswresample   3.  1.100 /  3.  1.100
  libpostproc    55.  1.100 / 55.  1.100

Установка сборки zimbatm (рекомендуется как стабильное ПО):

cd /usr/local/bin/
wget https://dl.ispsystem.info/ffmpeg-static/zimbatm/bin/ffmpeg 
wget https://dl.ispsystem.info/ffmpeg-static/zimbatm/bin/ffprobe
chmod +x ffmpeg ffprobe

2. markus-perl последняя версия с актуальными аудио- и видеокодеками https://github.com/markus-perl/ffmpeg-build-script (лучше ставить её)

full static build, должно работать под всеми ОС

Опции сборки markus-perl (разработчик рекомендует для сборки Debian 10), пожалуй это самый живой проект и разработчик отвечает на issue (в течение дня по моей просьбе сделал опцию -f для full static build):

docker run -it debian:buster bash
apt-get update && apt-get install build-essential curl g++ git-core
git clone https://github.com/markus-perl/ffmpeg-build-script.git
cd ffmpeg-build-script
./build-ffmpeg -b -f

cd workspace/bin
./ffmpeg
ffmpeg version 4.3.1 Copyright (c) 2000-2020 the FFmpeg developers
  built with gcc 8 (Debian 8.3.0-6)
  configuration: --enable-libx264 --enable-libx265 --enable-libvpx --enable-libxvid --enable-libvidstab --enable-libaom --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libmp3lame --enable-libopus --enable-libvorbis --enable-libtheora --enable-libfdk-aac --enable-openssl --enable-libsrt --disable-debug --disable-doc --disable-ffplay --disable-shared --enable-gpl --enable-nonfree --enable-pthreads --enable-static --enable-small --enable-version3 --extra-cflags=-I/ffmpeg-build-script/workspace/include --extra-ldexeflags=-static --extra-ldflags=-L/ffmpeg-build-script/workspace/lib --extra-libs='-lpthread -lm -lz' --pkgconfigdir=/ffmpeg-build-script/workspace/lib/pkgconfig --pkg-config-flags=--static --prefix=/ffmpeg-build-script/workspace
  libavutil      56. 51.100 / 56. 51.100
  libavcodec     58. 91.100 / 58. 91.100
  libavformat    58. 45.100 / 58. 45.100
  libavdevice    58. 10.100 / 58. 10.100
  libavfilter     7. 85.100 /  7. 85.100
  libswscale      5.  7.100 /  5.  7.100
  libswresample   3.  7.100 /  3.  7.100
  libpostproc    55.  7.100 / 55.  7.100

Установка сборки markus-perl (рекомендуется как самое свежее ПО):

cd /usr/local/bin/
wget https://dl.ispsystem.info/ffmpeg-static/markus-perl/bin/ffmpeg 
wget https://dl.ispsystem.info/ffmpeg-static/markus-perl/bin/ffprobe
chmod +x ffmpeg ffprobe


3. ffmpeg static для CentOS 7

static build, работает только под centos 7

Собран по мануалу https://trac.ffmpeg.org/wiki/CompilationGuide/Centos в чистом окружении (использовался docker)

docker run -it centos:7 bash
PATH=$PATH:/root/bin

ffmpeg version N-99710-g6965ade Copyright (c) 2000-2020 the FFmpeg developers
  built with gcc 4.8.5 (GCC) 20150623 (Red Hat 4.8.5-39)
  configuration: --prefix=/root/ffmpeg_build --pkg-config-flags=--static --extra-cflags=-I/root/ffmpeg_build/include --extra-ldflags=-L/root/ffmpeg_build/lib --extra-libs=-lpthread --extra-libs=-lm --bindir=/root/bin --enable-gpl --enable-libfdk_aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfree
  libavutil      56. 60.100 / 56. 60.100
  libavcodec     58.111.101 / 58.111.101
  libavformat    58. 62.100 / 58. 62.100
  libavdevice    58. 11.102 / 58. 11.102
  libavfilter     7. 88.100 /  7. 88.100
  libswscale      5.  8.100 /  5.  8.100
  libswresample   3.  8.100 /  3.  8.100
  libpostproc    55.  8.100 / 55.  8.100

Единственное, что изменено - взят x265_3.2.1.tar.gz,  для решения проблемы отсутствия файла x265.pc https://stackoverflow.com/questions/51918409/compiling-ffmpeg-x265-not-found-using-pkg-config (wget http://ftp.videolan.org/pub/videolan/x265/x265_3.2.1.tar.gz && tar xf x265_3.2.1.tar.gz && cd x265_3.2.1/build/linux)

Установка сборки ffmpeg для CentOS 7

cd /usr/local/bin/
wget https://dl.ispsystem.info/ffmpeg-static/centos7-snapshot-251020/bin/ffmpeg
wget https://dl.ispsystem.info/ffmpeg-static/centos7-snapshot-251020/bin/ffprobe
chmod +x ffmpeg ffprobe

yum install freetype

bitrix просит авторизацию на каждой странице - изменить путь к директории сайта

bitrix просит авторизацию на каждой странице - требуется изменить путь к директории сайта

update b_lang set DOC_ROOT="/var/www/bitrix/data/www/new" where DOC_ROOT="/var/www/old";


rm -rf bitrix/cache/*

rm -rf bitrix/managed_cache/*

Установка на Ubuntu 16.04 нового ядра

Новые ядра требуют openssl 1.1 которого нет в системе, поэтому перед установкой с https://kernel.ubuntu.com/~kernel-ppa/mainline/ следует его поставить


wget http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.0g-2ubuntu4_amd64.deb

sudo dpkg -i libssl1.1_1.1.0g-2ubuntu4_amd64.deb


и, также, необходимо поставить пакет для сборки драйверов Nvidia, если используете

sudo apt install libelf-dev

Поднимаем свой DNS-over-TLS сервер на nginx proxy debian 9

# cat /etc/nginx/nginx.conf
load_module modules/ngx_stream_module.so;
worker_processes 1;
events {
}

stream {
    # DNS upstream pool
    upstream dns {
        server 127.0.0.1:53;
    }

    # DoT server for decryption
    server {
        listen 853 ssl;
        ssl_certificate /root/.acme.sh/dns.myserver.com/fullchain.cer;
        ssl_certificate_key /root/.acme.sh/dns.myserver.com/dns.myserver.com.key;
        ssl_protocols TLSv1.2;
        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout 1d;

        proxy_pass dns;
    }
}


На 127.0.0.1 запускаем всеми любимый pdns-recusor или unbound или все что угодно,
при использовании unbound в конфиг пишем access-control: 127.0.0.0/8 allow_snoop чтобы работал dig +trace (администраторам это важно)

# crontab -l
15 15 * * * /root/.acme.sh/acme.sh --issue -d dns.myserver.com --standalone --pre-hook "service nginx stop" --post-hook "service nginx start"  > /dev/null

На роутере следовательно используем ваш сервер DNS-over-TLS не завися от выкрутасов провайдера (подмена DNS) или google / cloudflare (у них также DNS есть с TLS на 8.8.8.8 и 1.1.1.1 на 853 порту