Compiling FFMpeg (with libfdk-aac support) for MakeMKV

The place to discuss linux version of MakeMKV
Post Reply
Rai4321
Posts: 6
Joined: Mon Sep 30, 2024 10:11 am

Compiling FFMpeg (with libfdk-aac support) for MakeMKV

Post by Rai4321 » Mon Sep 30, 2024 10:32 am

Trying to compile the latest FFMpeg for the MakeMKV and
something has changed and it does not work anymore.


Here is what I did on my Debian 12 machine:

Code: Select all

sudo apt update -qq && sudo apt -y install \
  autoconf \
  automake \
  build-essential \
  cmake \
  git-core \
  libass-dev \
  libfreetype6-dev \
  libgnutls28-dev \
  libmp3lame-dev \
  libsdl2-dev \
  libtool \
  libunistring-dev \
  libva-dev \
  libvdpau-dev \
  libvorbis-dev \
  libxcb1-dev \
  libxcb-shm0-dev \
  libxcb-xfixes0-dev \
  meson \
  ninja-build \
  pkg-config \
  texinfo \
  wget \
  yasm \
  zlib1g-dev

Code: Select all

curl -kLO https://ffmpeg.org/releases/ffmpeg-7.0.2.tar.bz2
curl -kLO https://ffmpeg.org/releases/ffmpeg-7.0.2.tar.bz2.asc
curl https://ffmpeg.org/ffmpeg-devel.asc | gpg --import
gpg --verify ffmpeg-7.0.2.tar.bz2.asc ffmpeg-7.0.2.tar.bz2
tar -jxvf ffmpeg-7.0.2.tar.bz2
cd ffmpeg-7.0.2

Code: Select all

./configure \
  --prefix=/tmp/ffmpeg \
  --enable-static \
  --disable-shared \
  --enable-pic \
  --enable-libfdk-aac
Up untill here all good and no errors.

But on close inspection, I can see that the
"/tmp/ffmpeg" has not been created and all compiled in "~/ffmpeg-7.0.2/"
instead of the "/tmp/ffmpeg" and my guess it's probably
new policy in Debian 12.....

And when inspecting the "/tmp/ffmpeg/lib/pkgconfig" nothing there and
"~/ffmpeg-7.0.2/lib/pkgconfig" the "lib" DIR does not exist anymore
but instead has the following DIR's:

libavcodec
libavdevice
libavfilter
libavformat
libavutil
libpostproc
libswresample
libswscale


Any idea how to compile MakeMKV 1.77.7 on Debian 12 with the latest FFMpeg 7.0.2?

scjet
Posts: 10
Joined: Mon Sep 16, 2013 11:44 pm

Re: Compiling FFMpeg (with libfdk-aac support) for MakeMKV

Post by scjet » Tue Oct 01, 2024 6:53 am

Rai4321 wrote:
Mon Sep 30, 2024 10:32 am
...
Up untill here all good and no errors.

But on close inspection, I can see that the
"/tmp/ffmpeg" has not been created ...
After you run your "./configure ...", you'll need to also run a "make install" in your "~/ffmpeg-7.0.2" folder.
The "/tmp/ffmpeg/..." folder will not be created until after you run:

Code: Select all

make install
Or, preferably;

Code: Select all

make -j$(nproc) install
Anyway, MakeMKV 1.17.8 is now out, <- you should use this instead.

Rai4321
Posts: 6
Joined: Mon Sep 30, 2024 10:11 am

Re: Compiling FFMpeg (with libfdk-aac support) for MakeMKV

Post by Rai4321 » Wed Oct 02, 2024 11:30 am

The "~/ffmpeg-7.0.2" DIR was created after extracting
files from the "ffmpeg-7.0.2.tar.bz2" archive using

Code: Select all

"tar -jxvf ffmpeg-7.0.2.tar.bz2"

The "/tmp/ffmpeg" DIR should have been created
when FFMpeg was build,
but is instead build in "~/ffmpeg-7.0.2" on Debian 12 .....


As i understand it, when I want to include the support for
FLAC encoder that handles 24-bit audio I need to
enable "libfdk-aac" support when configuring FFMmpeg....

Which I did:

Code: Select all

./configure \
  --prefix=/tmp/ffmpeg \
  --enable-static \
  --disable-shared \
  --enable-pic \
  --enable-libfdk-aac
And then build it:

Code: Select all

make -j$(nproc)

But when the latest version of FFMpeg it's build,
a] it's NOT build in the specific PATH:
(even it's specified in the "configure" command) in:
/tmp/ffmpeg

b] there is NO more "PATH" to:
"../lib/pkgconfig"
that is needed at later stage when configuring and building "makemkv-oss"
in the DIR's when FFMpeg is build...

PATH to "/tmp/ffmpeg/lib/pkgconfig"
does not exists anymore ...when building FFMpeg
and is needed when building "makemkv-oss" with support for FLAC encoder
according to the Installation instructions:

Code: Select all

PKG_CONFIG_PATH=/tmp/ffmpeg/lib/pkgconfig ./configure
make
sudo make install

So how does MakeMKV OSS know when configuring/building,
where to look for the "libfdk-aac" | PATH "../lib/pkgconfig" that does not exist
in FFMpeg Build DIR anymore???

I have checked and the instructions for installing
MakeMKV 1.17.8 for Linux are still the same
viewtopic.php?f=3&t=224

Rai4321
Posts: 6
Joined: Mon Sep 30, 2024 10:11 am

Re: Compiling FFMpeg (with libfdk-aac support) for MakeMKV

Post by Rai4321 » Wed Oct 02, 2024 6:10 pm

When building the MakeMKV - "makemkv-oss" with support for FLAC encoder
it points to NONE EXISTENT PATH in FFMpeg build .....

PKG_CONFIG_PATH=......./tmp/ffmpeg/lib/pkgconfig.....

Code: Select all

PKG_CONFIG_PATH=/tmp/ffmpeg/lib/pkgconfig ./configure
make
sudo make install

In Debian 12, when building the FFMpeg, PATH
"/tmp/ffmpeg/lib/pkgconfig"
does not get created ........

So if one wants to build MakeMKV with FLAC encoder
and build the latest FFMpeg, what path should be used
as the one in the Installation guide does not exist ......??????

segfaulted
Posts: 81
Joined: Mon May 06, 2024 11:10 am

Re: Compiling FFMpeg (with libfdk-aac support) for MakeMKV

Post by segfaulted » Thu Oct 03, 2024 6:15 am

Rai4321 wrote:
Wed Oct 02, 2024 6:10 pm
In Debian 12, when building the FFMpeg, PATH
"/tmp/ffmpeg/lib/pkgconfig"
does not get created ........
Did you do make install on ffmpeg after it's finished compiling?
The files won't magically appear in the prefix by itself.

scjet
Posts: 10
Joined: Mon Sep 16, 2013 11:44 pm

Re: Compiling FFMpeg (with libfdk-aac support) for MakeMKV

Post by scjet » Thu Oct 03, 2024 9:15 am

Rai4321 wrote:
Wed Oct 02, 2024 11:30 am
...
As i understand it, when I want to include the support for
FLAC encoder that handles 24-bit audio I need to
enable "libfdk-aac" support when configuring FFMmpeg....
...
I have checked and the instructions for installing
MakeMKV 1.17.8 for Linux are still the same
viewtopic.php?f=3&t=224
libfdk-aac has nothing to do with flac.
aac and flac are two different audio encoder/decoders.
You need to install "libfdk-aac-dev", from your debian repo's for support in ffmpeg in order to use the AAC encoder.
Flac encoding is included with ffmpeg > version 2.0, and since your using version 7.* your fine.

You need to read this viewtopic.php?f=3&t=224
more carefully and follow the instructions to a tee.

scjet
Posts: 10
Joined: Mon Sep 16, 2013 11:44 pm

Re: Compiling FFMpeg (with libfdk-aac support) for MakeMKV

Post by scjet » Thu Oct 03, 2024 12:15 pm

LMDE 6 (a Default installation, updated and upgraded): Based on Debian 12 (Bookworm):
#################################################################################
#1. Download all the below to /tmp, and extract both makemkv oss (source), and bin files.
viewtopic.php?f=3&t=224 <-(Using this as my guide)
makemkv-bin-1.17.7.tar.gz
makemkv-oss-1.17.7.tar.gz

Code: Select all

cd /tmp && gzip -d makemkv-bin-1.17.8.tar.gz && tar -xvf makemkv-bin-1.17.8.tar
cd /tmp && gzip -d makemkv-oss-1.17.8.tar.gz && tar -xvf makemkv-oss-1.17.8.tar

#2. Install dependencies for ffmpeg and makemkv (including nasm and libfdk-aac-dev and some BD drive extras).

Code: Select all

sudo apt-get update -qq && sudo apt-get -y install \
  autoconf \
  automake \
  build-essential \
  cmake \
  git-core \
  libass-dev \
  libfreetype6-dev \
  libgnutls28-dev \
  libmp3lame-dev \
  libsdl2-dev \
  libtool \
  libva-dev \
  libvdpau-dev \
  libvorbis-dev \
  libxcb1-dev \
  libxcb-shm0-dev \
  libxcb-xfixes0-dev \
  meson \
  ninja-build \
  pkg-config \
  texinfo \
  wget \
  yasm \
  zlib1g-dev
sudo apt install nasm libfdk-aac-dev libunistring-dev libbluray-dev libcdparanoia-dev libcdio-dev libcdio-paranoia-dev
sudo apt install build-essential pkg-config libc6-dev libssl-dev libexpat1-dev libavcodec-dev libgl1-mesa-dev qtbase5-dev zlib1g-dev
#3. Get latest ffmpeg source files and compile:

Code: Select all

cd /tmp && wget -O ffmpeg-7.0.2.tar.bz2 https://ffmpeg.org/releases/ffmpeg-7.0.2.tar.bz2 && tar xjvf ffmpeg-7.0.2.tar.bz2
cd /tmp/ffmpeg-7.0.2
./configure --prefix=/tmp/ffmpeg --enable-static --disable-shared --enable-pic --enable-libfdk-aac
make -j$(nproc) install
#4. Build the makemkv-oss source with latest ffmpeg:

Code: Select all

cd /tmp/makemkv-oss-1.17.8
PKG_CONFIG_PATH=/tmp/ffmpeg/lib/pkgconfig ./configure
make -j$(nproc)
sudo make install
#5. Create/Merge the makemkv bin executables:

Code: Select all

cd /tmp/makemkv-bin-1.17.8
make -j$(nproc)
# hit "q" to quit the eula, and type "yes" to accept the license.
sudo make install
#6. Modify the MakeMKV application Icon line in:

Code: Select all

/usr/share/applications/makemkv.desktop
# with,
Icon=/usr/share/icons/hicolor/64x64/apps/makemkv.png
#7. Re-login, or Reboot; run MakeMKV and Register with your key:

#8. Select between "Default", "FLAC", or "AAC-stereo" Profiles:

Code: Select all

MakeMKV -> View -> Preferences -> General -> Expert mode -> Advanced -> (option) Profiles
############################################################################

-everything worked for me, testing makemkv as well as utilizing the (lossless)"Default", (lossless)"FLAC", and (lossy)"AAC-stereo" (Audio-encoding) mkv Profiles.
And, btw, the above also worked flawlessly for Mint 21.*/Mint 22/Ubuntu 22.02/24.04/...

So, if it still fails for you, in your Debian 12, then it is likely due to your Debian 12 installation and configuration, and/or missing crucial pkg dependencies that are at fault, ...?
Cheers.

Rai4321
Posts: 6
Joined: Mon Sep 30, 2024 10:11 am

Re: Compiling FFMpeg (with libfdk-aac support) for MakeMKV

Post by Rai4321 » Fri Oct 04, 2024 10:20 am

Thank you for taking your time and going through the setup again.

I have tried it on a brand new install of Debian 12.


View the recording at: https://asciinema.org/a/ZiwhBSrRuWyJy3SmOS0lMgJ7T
(Recordings uploaded from unrecognized systems, such as this one, are automatically
deleted 7 days after upload.)


1]
Why are you configuring "PKG_CONFIG_PATH environment variable"
for "makemkv-oss" to a NON EXISTENT DIR = /tmp/ffmpeg/lib/pkgconfig?

as you can see from my setup of FFMpeg there is no "/tmp/ffmpeg/lib/pkgconfig" created
during/after the build ......
and there is no "/tmp/ffmpeg-7.0.2/lib/pkgconfig" either.


2]
What is the purpose of setting the "PKG_CONFIG_PATH environment variable"
to a non existent PATH when building "makemkv-oss" ?



3]
Do you have the DIRs:
"/tmp/ffmpeg/lib/pkgconfig"
or
"/tmp/ffmpeg-7.0.2/lib/pkgconfig"
created when you build the FFMpeg?



When looking for *.pc files in FFMpeg Build I get the following results:

Code: Select all

rai4321@debian12:/tmp/ffmpeg-7.0.2$ find -name "*.pc*" -print
./libavdevice/libavdevice.pc
./libavcodec/libavcodec.pc
./doc/examples/pc-uninstalled/libavcodec-uninstalled.pc
./doc/examples/pc-uninstalled/libavdevice-uninstalled.pc
./doc/examples/pc-uninstalled/libavfilter-uninstalled.pc
./doc/examples/pc-uninstalled/libavformat-uninstalled.pc
./doc/examples/pc-uninstalled/libswscale-uninstalled.pc
./doc/examples/pc-uninstalled/libavutil-uninstalled.pc
./doc/examples/pc-uninstalled/libswresample-uninstalled.pc
./libswresample/libswresample.pc
./libswscale/libswscale.pc
./libavutil/libavutil.pc
./libavfilter/libavfilter.pc
./libavformat/libavformat.pc

Also, running:

Code: Select all

rai4321@debian12:/tmp/ffmpeg-7.0.2$ ./ffmpeg -hide_banner -buildconf

  configuration:
    --prefix=/tmp/ffmpeg
    --enable-static
    --disable-shared
    --enable-pic
    --enable-libfdk-aac
Shows that "--prefix=/tmp/ffmpeg" has been set to be build in
"/tmp/ffmpeg"
but FFMpeg is build in the same DIR and that is "/tmp/ffmpeg-7.0.2/" instead of "/tmp/ffmpeg"
so why is the flag in FFMpeg config, i it does not work?

Post Reply