add ffmpeg-aacp-on-fedora-linux.gmi

This commit is contained in:
ps 2026-04-01 09:59:34 +03:00
parent 1027a91a07
commit 2898d8f2a1
2 changed files with 109 additions and 0 deletions

View file

@ -0,0 +1,108 @@
# Збірка ffmpeg з підтримкою AAC+ засобами FDK AAC
В рамках сетапу ретрансляції радіо "Культура" на радіо Pidpilne, був приємно здивований високою якістю звуку AAC+ при низьких бітрейтах (до 16) і вирішив поряд з онлайн-ретрансляціями ще й додати у цьому форматі дампи деяких подкастів з Youtube.
Але виявилось, що просто перекодувати потік з yt-dlp засобами ffmpeg з репозиторіїв Fedora не вийде, через ліцензійні обмеження GNU/GPL. Довелось зібрати ffmpeg з сорсу - код потрібних кодеків є відкритим, хоч і не вільним для поширення:
> License: nonfree and unredistributable
## Системні залежності
``` bash
sudo dnf remove ffmpeg
sudo dnf install fdk-aac-devel
```
Переконайтесь, що бібліотека fdk-aac розпізнається системою:
``` bash
$ pkg-config --modversion fdk-aac
2.0.3
```
### fdk-aac
Опціонально, останню версію fdk-aac можна зібрати з початкового коду:
``` bash
git clone https://github.com/mstorsjo/fdk-aac.git
cd fdk-aac
./autogen.sh
./configure
make -j$(nproc)
sudo make install
```
* для видалення: `sudo make uninstall`
В мене цей варіант не спрацював (можливо) через не правильну лінковку, тому згодом я встановив `fdk-aac-devel`, а даний приклад компіляції - просто лишаю для нотатки як є, може згодиться потім.
## ffmpeg
``` bash
git clone https://github.com/FFmpeg/FFmpeg.git
cd FFmpeg
./configure --enable-libfdk-aac
make -j$(nproc)
sudo make install
```
* для видалення: `sudo make uninstall`
## Тестування
``` bash
$ ffmpeg -encoders | grep fdk
A....D libfdk_aac Fraunhofer FDK AAC (codec aac)
$ ffmpeg -hide_banner -h encoder=libfdk_aac
Encoder libfdk_aac [Fraunhofer FDK AAC]:
General capabilities: dr1 delay small
Threading capabilities: none
Supported sample rates: 96000 88200 64000 48000 44100 32000 24000 22050 16000 12000 11025 8000
Supported sample formats: s16
Supported channel layouts: mono stereo 3.0 4.0 5.0 5.1 6.1(back) 7.1(wide) 7.1 5.1.2(back)
...
```
## Перекодування
Нижче - мої приклади з низькими бітрейтами та максимальною компактністю для "голосу".
### Моно (HE-AAC v1)
``` bash
ffmpeg -i input.wav -c:a libfdk_aac -profile:a aac_he -b:a 16k -ar 22050 output.m4a
```
### Стерео (HE-AAC v2)
``` bash
ffmpeg -i input.wav -c:a libfdk_aac -profile:a aac_he_v2 -b:a 32k -ar 22050 output.m4a
```
### Перевірка
На прикладі результату для "Стерео (HE-AAC v2)":
``` bash
$ ffprobe output.m4a
...
Audio: aac (HE-AACv2) (mp4a / 0x6134706D), 22050 Hz, stereo, fltp, 32 kb/s (default)
...
```
### yt-dlp
Довідка: на "вході" та "виході" використовується контейнер .m4a - він потрібен для збереження мета-інформації про відео:
``` bash
yt-dlp -x --audio-format m4a --postprocessor-args "ffmpeg: -c:a libfdk_aac -profile:a aac_he_v2 -b:a 32k -ar 22050" URL
```
* URL - ваше значення
## Посилання
=> https://trac.ffmpeg.org/wiki/Encode/AAC#fdk_aac
### Дивіться також
=> pidpilne.gmi Підпільне: ретрансляція українського мовлення

View file

@ -16,6 +16,7 @@
### Нотатки ### Нотатки
=> ffmpeg-aacp-on-fedora-linux.gmi 2026-04-01 Збірка ffmpeg з підтримкою AAC+ засобами FDK AAC
=> agate-branch-with-raw-ipv6-host-support.gmi 2026-03-31 Гілка Agate з підтримкою хостів IPv6 => agate-branch-with-raw-ipv6-host-support.gmi 2026-03-31 Гілка Agate з підтримкою хостів IPv6
=> meshname-as-permanent-and-green-alternative-to-dns.gmi 2026-03-31 Meshname як перманентна, енерго-ефективна альтернатива DNS => meshname-as-permanent-and-green-alternative-to-dns.gmi 2026-03-31 Meshname як перманентна, енерго-ефективна альтернатива DNS
=> run-same-firefox-version-using-custom-profile.gmi 2026-03-29 Окремі профілі Firefox на базі спільного релізу => run-same-firefox-version-using-custom-profile.gmi 2026-03-29 Окремі профілі Firefox на базі спільного релізу