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

Он не содержит части кодеков которые могут быть нужны, например, 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

опции сборки 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 (лучше ставить её)

опции сборки markus-perl (разработчик рекомендует для сборки Debian 10), пожалуй это самый живой проект и разработчик отвечает на issue (в течение дня по моей просьбе сделал 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


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 порту

Linux : mdadm raid 1 : resize md устройств : изменить размер

Как изменить размер файловой системы на программном raid 1 (mdadm) при переносе на диски большего объема

Вытаскиваем физически второй диск, загружаем сервер в rescue linux с внешнего диска и затем проводим операции на первом диске

# mdadm --stop /dev/md0
# mdadm --stop /dev/md1
# mdadm --stop /dev/md2

Далее увеличиваем партицию

# parted

// для партиции sda3
// ключ -1 означает до максимального размера

resizepart
3
-1

Перезагрузка сервера для перезапуска md устройств (также в режим linux rescue livecd)

# reboot

Затем проводим увеличение устройства md2 на весь диск

# mdadm --grow /dev/md2 --size=max

После чего производится увеличение файловой системы

для ext4

# e2fsck -f /dev/md2
# resize2fs /dev/md2

для xfs
(проверка производится на отмонтированой файловой системе, resize на смонтированной)

# xfs_repair /dev/md2

# mount /dev/md2 /mnt
# xfs_growfs /mnt

Убеждаемся что все работает
Меняем второй диск
Добавляем в raid
Не забываем поставить на второй диск загрузчик grub

/etc/php.d/bitrixenv.ini

Часто бывает bitrixenv.ini обнуляется, бэкап этого конфига из чистой установки битрикса

; Set parameters required for proper Bitrix engine functioning.
; You can redefine parameters specified in this file
; by editing /etc/php.d/z_bx_custom_settings.ini

; Configure error processing
display_errors = On
error_reporting = E_ALL & ~E_NOTICE & ~E_WARNING

; Set some more PHP parameters
enable_dl = Off
short_open_tag = On
allow_url_fopen = On

; Change default values of important constants
max_input_vars = 10000
max_file_uploads = 100
max_execution_time = 300
post_max_size = 1024M
upload_max_filesize = 1024M
pcre.backtrack_limit = 1000000
pcre.recursion_limit = 14000
realpath_cache_size = 4096k
mysql.default_socket = /var/lib/mysqld/mysqld.sock
mysqli.default_socket = /var/lib/mysqld/mysqld.sock

; Utf-8 support
mbstring.func_overload = 2
mbstring.internal_encoding = UTF-8

; Configure PHP sessions
session.entropy_length = 128
session.entropy_file = /dev/urandom
session.save_path = "/tmp/php_sessions/www"
session.cookie_httponly = On

; Set directory for temporary files
upload_tmp_dir = "/tmp/php_upload/www"

sendmail_path = msmtp -t -i
date.timezone = Europe/Moscow
memory_limit = 256M

MySQL 5.7 : Сброс пароля root

mkdir /var/run/mysqld && chown mysql:mysql /var/run/mysqld

mysqld_safe --skip-grant-tables &

mysql> use mysql
mysql> update user set authentication_string=PASSWORD("passw0rd") where User='root';

FreeBSD : Linux : Перемонтировать файловую систему в rw

Перемонтировать файловую систему в r/w - на FreeBSD другой синтаксис

Linux:
mount -o remount,rw /

FreeBSD:
mount -o rw /
zfs set readonly=off zroot

VMmanager поиск образа диска по всем нодам

Поиск qemu-диска по всем нодам кластера

/usr/local/mgr5/sbin/mgrctl -m vmmgr vmhostnode | awk -F'=| ' {'print $6'} | grep -vE '10.7.22.1|10.7.22.7'| grep -Eo '[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}' | xargs -i ssh -i /usr/local/mgr5/etc/ssh_id_rsa root@{} "hostname && find /vm/ -name '*vm6504904*'"