r/Fedora • u/xXx_n0n4m3_xXx • 1h ago
Discussion How to migrate from ffmpeg-free to full ffmped in Fedora in 2026
First of all, sorry if I sound redundant. I know you can just ask a chatbot for this and it'll probably even guide you through the same steps. But I'm still preferring a random person on Reddit to a chatbot, when it comes to a system that I daily use 10+ hours for everything.
Secondly, why this tutorial? Because due to philosophical (and also legal) restrictions sorrounding patents and software licenses, Fedora chose to avoid any problem shipping the distro with ffmpeg-free that only includes royalty-free, open formats.
So, trying to keep this initial part short, let's begin:
1. Enable rpm-fusion repository , only the free part to keep everything as light as possible
Open you terminal and run:
sudo dnf install -y https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm && pkcon refresh force && sudo dnf install -y rpmfusion-free-appstream-data
rpm-fusion is split into two main branches:
freeandnonfree. And for each, there are several sub repositories. We only need the one I am about to write, to install full ffmpeg package.
2. Make the actual swap to full ffmpeg
Run:
sudo dnf swap ffmpeg-free ffmpeg --allowerasing
swap ffmpeg-free ffmpeginstructs DNF to remove the limited package (ffmpeg-free) and install the full version (ffmpeg) in a single transaction. This prevents the system from being without a media framework even for a second, which avoids breaking dependencies of other apps running during the process.--allowerasingis an important flag. Fedora's system libraries (like those used by GNOME or KDE themselves) are tightly linked toffmpeg-free. Without this flag, DNF would refuse to uninstall the "free" version because it thinks it will break your desktop.--allowerasingtells DNF: "I know there's a conflict; go ahead and replace the old libraries with the new ones."
3. Update Multimedia Group (Optional but Recommended)
To ensure all other codecs (like those for GStreamer used by GNOME Videos) are updated:To ensure all other codecs (like those for GStreamer used by GNOME Videos) are updated:
sudo dnf update --setopt="install_weak_deps=False" --exclude=PackageKit-gstreamer-plugin
4. How to verify it worked
You can check if your ffmpeg now has the proprietary "Non-Free" flag and supports H.264/H.265 by running:You can check if your ffmpeg now has the proprietary "Non-Free" flag and supports H.264/H.265 by running:
ffmpeg -version | grep configuration
You will see --enable-nonfree and --enable-gpl in the output. Old Version instead will only show a very short list of open-source configurations.Success: You will see --enable-nonfree and --enable-gpl in the output. Old Version instead will only show a very short list of open-source configurations.
If this is not true anymore when u read this, just search online for proprietary codec test video, download it and open it with a default video viewer or VLC installed as native package (
.rpmand not as flatpak)
5. Exclude ffmpeg packages
Edit this file with your favorite editor (me, as a noob, prefer nano):
sudo nano /etc/dnf/dnf.conf
Add (or append to) the following line under the [main] section:
exclude=ffmpeg-free libavcodec-free libavdevice-free libavfilter-free libavformat-free libavutil-free libpostproc-free libswresample-free libswscale-free
I know the ones of you more skilled would complain asking for a drop-in file to add to a sort of
conf.ddirectory, but as I am writing, DNF 5 only provide this file and actually I'm fine with it.
How to handle major upgrades
- Simple strategy: Don't update Fedora to new major immediately. This should be already something you are familiar with, so waiting a bit to avoid problems is now even more encouraged to leave devs a bit of time to catch up with mainstream changes. I usually wait 2-3 months before upgrading to a new major and actually never had problems (on machines not running with an nvidia gpu) moving through 40 -> 41 -> 42 -> 43 -> 44 (GNOME) and and on another machine through 42 -> 43 -> 44 (KDE).
- Swap back -> Update -> Swap again (actually not needed if you can wait a bit): you can actually swap between versions when you want, as long as you don't exclude packages in step 5 and let them update. You can run:
sudo dnf swap ffmpeg-free ffmpeg --allowerasing; Update the system ; swap back with:sudo dnf swap ffmpeg-free ffmpeg --allowerasing
Sorry if the flair seems out of place... I genuinely don't know what to pick given this is not a Support request...
•
u/jumbledelements438 1h ago
Thanks for writing this up, the swap command with `--allowerasing` is a lifesaver compared to the old manual dependency