Fedora 44 (FFmpeg 8) incompatibility

The place to discuss linux version of MakeMKV
Post Reply
FetchBackward
Posts: 1
Joined: Wed May 08, 2024 11:03 pm

Fedora 44 (FFmpeg 8) incompatibility

Post by FetchBackward »

makemkv errors with this on Fedora 44:
/usr/bin/makemkvcon: error while loading shared libraries: libavcodec.so.61: cannot open shared object file: No such file or directory
Fedora 44 has FFmpeg 8.0, which provides /usr/lib64/libavcodec.so.62, not .61. There were no errors during compilaiton/installation. Any advice?
USNmechanic
Posts: 1
Joined: Thu May 14, 2026 10:27 pm

Re: Fedora 44 (FFmpeg 8) incompatibility

Post by USNmechanic »

Fix MakeMKV After Upgrading to Fedora 44

Problem: After upgrading to Fedora 44, makemkvcon fails with:

Code: Select all

makemkvcon: error while loading shared libraries: libavcodec.so.61: cannot open shared object file: No such file or directory
Fedora 44 ships ffmpeg 8.x (libavcodec.so.62), but the pre-built makemkv-bin binary requires libavcodec.so.61 (ffmpeg 7.x). The fix is to rebuild makemkv-oss statically against ffmpeg 7.x, which bakes the required library into libmakemkv.so.1.

Prerequisites

Install build dependencies:

Code: Select all

sudo dnf install -y gcc gcc-c++ make nasm qt5-qtbase-devel openssl-devel zlib-devel expat-devel
Step 1 — Build Static ffmpeg 7.x

Code: Select all

cd /tmp
wget https://ffmpeg.org/releases/ffmpeg-7.1.tar.bz2
tar xjf ffmpeg-7.1.tar.bz2
cd ffmpeg-7.1
./configure --prefix=/tmp/ffmpeg --enable-static --disable-shared --enable-pic
make install
Verify the correct version was built:

Code: Select all

cat /tmp/ffmpeg/lib/pkgconfig/libavcodec.pc | grep Version
Expected output: Version: 61.x.x

Step 2 — Download MakeMKV Source

Download both makemkv-oss and makemkv-bin from https://www.makemkv.com/download/ and extract them:

Code: Select all

cd ~/Downloads
tar xzf makemkv-oss-1.18.3.tar.gz
tar xzf makemkv-bin-1.18.3.tar.gz
(Replace 1.18.3 with the current version.)

Step 3 — Build and Install makemkv-oss

Code: Select all

cd ~/Downloads/makemkv-oss-1.18.3
PKG_CONFIG_PATH=/tmp/ffmpeg/lib/pkgconfig:/usr/lib64/pkgconfig:/usr/share/pkgconfig ./configure
make
sudo make install
Step 4 — Install makemkv-bin

Code: Select all

cd ~/Downloads/makemkv-bin-1.18.3
make
sudo make install
Step 5 — Verify

Code: Select all

makemkvcon info
makemkv &
A help/usage message from makemkvcon and a successful GUI launch confirm the fix is working.

Step 6 — Clean Up

Code: Select all

rm -rf /tmp/ffmpeg /tmp/ffmpeg-7.1 /tmp/ffmpeg-7.1.tar.bz2
Notes
  • The key to this fix is the combined PKG_CONFIG_PATH so that makemkv-oss links against the static ffmpeg 7.x libraries while still being able to find Qt5 and other system dependencies.
  • This fix will need to be repeated if makemkv-oss is ever rebuilt, until MakeMKV releases a makemkv-bin built against ffmpeg 8.x (libavcodec.so.62).
  • Once an updated makemkv-bin is released, a clean reinstall from the MakeMKV download page will be sufficient and this workaround will no longer be needed.
tomty89
Posts: 69
Joined: Sun Dec 13, 2020 8:48 am

Re: Fedora 44 (FFmpeg 8) incompatibility

Post by tomty89 »

Fedora 44 ships ffmpeg 8.x (libavcodec.so.62), but the pre-built makemkv-bin binary requires libavcodec.so.61 (ffmpeg 7.x).
I don't think the latter part of the above statement is true / the issue:

Code: Select all

$ readelf --dynamic makemkv-bin-1.18.3/bin/amd64/makemkvcon 

Dynamic section at offset 0x7b6350 contains 28 entries:
  Tag        Type                         Name/Value
 0x0000000000000001 (NEEDED)             Shared library: [libmakemkv.so.1]
 0x0000000000000001 (NEEDED)             Shared library: [libdriveio.so.0]
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
...
AFAICT the issue is really just that whoever builds / ships makemkv-oss binaries for Fedora has it built / (dynamically) linked against older ffmpeg / libavcodec (while it can be built against the newer ffmpeg without any modification; see e.g. https://aur.archlinux.org/cgit/aur.git/ ... ?h=makemkv).

Therefore while the problem can be "fixed" by statically linking libmakemkv against ffmpeg (older or newer), the static linking part is not really necessary -- you just need to build (and install) makemkv-oss on the system so that the dynamic linkage matches with what is installed / can be found. (If you opt to `make install` directly -- which isn't exactly a good choice -- it might be better to uninstall the makemkv package(s) beforehand -- although you'd probably then need to reverse the `make install`s when you want to switch back to package(s).)

Code: Select all

$ readelf --dynamic /usr/lib/libmakemkv.so.1 

Dynamic section at offset 0x6d790 contains 33 entries:
...
 0x0000000000000001 (NEEDED)             Shared library: [libavcodec.so.62]
ceehmkv
Posts: 1
Joined: Sun May 17, 2026 6:37 pm

Re: Fedora 44 (FFmpeg 8) incompatibility

Post by ceehmkv »

Seconding this analysis that makemkvcon is dependent on libmakemkv.so.1 rather than ffmpeg directly, so a rebuild and install of oss should pick up the current ffmpeg.

In my case, also on Fedora 44, where I've been upgrading Fedora releases for a few years since an install from scratch, I had an 18-month-old libmakemkv.so.1 in /lib which was picked-up before the newly-rebuilt one in /lib64, so makemkvcon would fail.

Removing the old one allowed the new makemkv build/install to work. No need to bake-in a statically linked ffmpeg.
Post Reply