VLC is in the Fedora repositories, and it plays H.264 out of the box. HEVC (H.265) is the gap. The Fedora build refuses it with “Codec not supported”, and the RPM Fusion package most guides tell you to add does not fix playback. The fix is a different RPM Fusion package, or the Flatpak. We tested all three routes with the same set of clips on a Fedora 45 Workstation and a Fedora 44 machine, with VLC 3.0.24 from the Fedora repos.
Install VLC from the Fedora repos
No third-party repo is needed for the player itself. Check what Fedora offers:
dnf info vlc | grep -E "^(Name|Epoch|Version|Release|Repository)"
On Fedora 45 it comes from the main fedora repo:
Name : vlc
Epoch : 1
Version : 3.0.24
Release : 3.fc45
Repository : fedora
Install it:
sudo dnf install -y vlc
On a Workstation that already has the desktop stack, the transaction was small:
Transaction Summary:
Installing: 43 packages
Total size of inbound packages is 19 MiB. Need to download 19 MiB.
After this operation, 77 MiB extra will be used (install 77 MiB, remove 0 B).
On the Fedora 44 Cloud image the same command pulled 95 packages and 160 MiB, because Qt 6 and the X11 libraries were missing.
Confirm the version:
vlc --version 2>/dev/null | head -2
The build string matches the package:
VLC version 3.0.24 Vetinari (3.0.24-rc1-0-g6de05adcba)
Compiled by mockbuild on 2949fed6e176420dab1654b4527f2dbb (Sep 23 2026 00:00:00)
The vlc package is a meta package. It pulls the Qt interface, the codec plugins and the PipeWire and PulseAudio outputs:
rpm -qa "vlc*" | sort
The installed set:
vlc-3.0.24-3.fc45.x86_64
vlc-cli-3.0.24-3.fc45.x86_64
vlc-gui-qt-3.0.24-3.fc45.x86_64
vlc-gui-skins2-3.0.24-3.fc45.x86_64
vlc-libs-3.0.24-3.fc45.x86_64
vlc-plugin-ffmpeg-3.0.24-3.fc45.x86_64
vlc-plugin-gnome-3.0.24-3.fc45.x86_64
vlc-plugin-lua-3.0.24-3.fc45.x86_64
vlc-plugin-notify-3.0.24-3.fc45.x86_64
vlc-plugin-pipewire-3-8.fc45.x86_64
vlc-plugin-pulseaudio-3.0.24-3.fc45.x86_64
vlc-plugins-base-3.0.24-3.fc45.x86_64
vlc-plugins-extra-3.0.24-3.fc45.x86_64
vlc-plugins-video-out-3.0.24-3.fc45.x86_64
vlc-plugin-visualization-3.0.24-3.fc45.x86_64
Check what plays out of the box
Fedora ships libavcodec-free, an FFmpeg build with the patent-encumbered decoders removed. To see exactly what that means for VLC, we made three 20-second test clips: H.264 with AAC audio in MP4, HEVC with AAC in MP4, and VP9 with Opus in WebM. Then we played each one headless and filtered the VLC debug log for the decoder it picked. Some runs below read the clips from ~/Videos, so swap in the path to your own files:
cvlc -vv -V dummy -A dummy --play-and-exit --run-time=2 test-h264-aac.mp4 2>&1 | grep -E 'using (audio|video) decoder module|is not supported'
H.264 played:
[00007efc08c07830] main decoder debug: using video decoder module "avcodec"
[00007efc08ff6030] main decoder debug: using audio decoder module "faad"
Swap in the HEVC clip:
cvlc -vv -V dummy -A dummy --play-and-exit --run-time=2 test-hevc-aac.mp4 2>&1 | grep -E 'using (audio|video) decoder module|is not supported'
The HEVC clip failed at the video decoder. The audio track still played:
[00007ff260c156e0] main decoder error: Codec `hevc' (MPEG-H Part2/HEVC (H.265)) is not supported.
[00007ff260c156e0] main decoder debug: using audio decoder module "faad"
VP9 and Opus are open formats, so they work everywhere:
cvlc -vv -V dummy -A dummy --play-and-exit --run-time=2 test-vp9-opus.webm 2>&1 | grep -E 'using (audio|video) decoder module|is not supported'
And the WebM clip:
[00007ff878c02340] main decoder debug: using video decoder module "avcodec"
[00007ff878c9c2b0] main decoder debug: using audio decoder module "opus"
H.264 works because Fedora routes it through the Cisco OpenH264 library, which the fedora-cisco-openh264 repo provides. AAC goes through the separate faad decoder. Both were already installed on the Workstation:
rpm -q openh264 mozilla-openh264 faad2-libs 2>&1; rpm -qf /usr/lib64/vlc/plugins/codec/libfaad_plugin.so
The packages:
openh264-2.6.0-3.fc45.x86_64
mozilla-openh264-2.6.0-3.fc45.x86_64
faad2-libs-2.11.2-7.fc45.x86_64
vlc-plugins-base-3.0.24-3.fc45.x86_64
A different grep on the codec start line confirms OpenH264 for the H.264 clip:
cvlc -vv -V dummy -A dummy --play-and-exit --run-time=2 test-h264-aac.mp4 2>&1 | grep -E 'codec \(|codec not found|is not supported'
The decoder line:
[00007f1034c07830] avcodec decoder debug: codec (libopenh264) started
The Fedora 44 machine gave the same results with its own FFmpeg build:
cvlc -vv -V dummy -A dummy --play-and-exit --run-time=2 test-hevc-aac.mp4 2>&1 | grep -E 'using (audio|video) decoder module|is not supported|codec \('
The result:
[00007f9694c145e0] main decoder error: Codec `hevc' (MPEG-H Part2/HEVC (H.265)) is not supported.
[00007f9694c145e0] main decoder debug: using audio decoder module "faad"
First launch
Open VLC from Activities. The first run asks whether VLC may fetch cover art and metadata from the internet:

Untick the box if you do not want VLC contacting metadata services, then click Continue.
Open the HEVC clip with only the Fedora packages installed and VLC shows this error while the audio keeps playing:

Add HEVC playback with RPM Fusion
RPM Fusion carries the codecs Fedora cannot ship. Enable the free and nonfree repos:
sudo dnf install -y https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
Look at the OpenPGP warning near the end. dnf installs local and URL packages without checking signatures, so these two release packages go in unverified. The tail of the output:
[4/4] Installing rpmfusion-free-release 100% | 26.1 KiB/s | 7.1 KiB | 00m00s
Warning: skipped OpenPGP checks for 2 packages from repository: @commandline
The RPM Fusion signing key is imported later, from the release package, the first time you install anything from those repos. On Fedora 45 before the final release, RPM Fusion enables its base repos plus updates-testing in place of updates, the same way Fedora does:
dnf repolist | grep -i rpmfusion
The RPM Fusion repos on the Fedora 45 prerelease:
rpmfusion-free RPM Fusion for Fedora 45 - Free
rpmfusion-free-updates-testing RPM Fusion for Fedora 45 - Free - Test Updates
rpmfusion-nonfree RPM Fusion for Fedora 45 - Nonfree
rpmfusion-nonfree-nvidia-driver RPM Fusion for Fedora 45 - Nonfree - NVIDIA Driver
rpmfusion-nonfree-steam RPM Fusion for Fedora 45 - Nonfree - Steam
rpmfusion-nonfree-updates-testing RPM Fusion for Fedora 45 - Nonfree - Test Updates
vlc-plugins-freeworld does not fix playback
Most older guides say to install vlc-plugins-freeworld. Look at what it contains:
dnf repoquery -l vlc-plugins-freeworld | grep "\.so$"
Three x264 and x265 plugins. Those are encoders, used when VLC converts or streams video:
Updating and loading repositories:
Fedora 45 - x86_64 - Updates 100% | 14.7 KiB/s | 52.5 KiB | 00m04s
RPM Fusion for Fedora 45 - Nonfree - T 100% | 5.2 KiB/s | 24.7 KiB | 00m05s
Fedora 45 - x86_64 - Test Updates 100% | 3.1 MiB/s | 14.4 MiB | 00m05s
RPM Fusion for Fedora 45 - Nonfree - S 100% | 4.6 KiB/s | 22.2 KiB | 00m05s
RPM Fusion for Fedora 45 - Nonfree - N 100% | 6.2 KiB/s | 31.6 KiB | 00m05s
RPM Fusion for Fedora 45 - Free - Test 100% | 3.6 KiB/s | 21.3 KiB | 00m06s
RPM Fusion for Fedora 45 - Nonfree 100% | 80.2 KiB/s | 501.3 KiB | 00m06s
google-chrome 100% | 1.8 KiB/s | 9.8 KiB | 00m05s
RPM Fusion for Fedora 45 - Free 100% | 80.1 KiB/s | 583.4 KiB | 00m07s
Fedora 45 openh264 (From Cisco) - x86_ 100% | 853.0 B/s | 7.3 KiB | 00m09s
Fedora 45 - x86_64 100% | 4.5 MiB/s | 57.8 MiB | 00m13s
Repositories loaded.
/usr/lib64/vlc/plugins/codec/libx26410b_plugin.so
/usr/lib64/vlc/plugins/codec/libx264_plugin.so
/usr/lib64/vlc/plugins/codec/libx265_plugin.so
We installed it anyway and replayed the HEVC clip. Same error:
cvlc -vv -V dummy -A dummy --play-and-exit --run-time=2 Videos/test-hevc-aac.mp4 2>&1 | grep -E 'using (audio|video) decoder module|is not supported'
The result:
[00007f843cc03890] main decoder error: Codec `hevc' (MPEG-H Part2/HEVC (H.265)) is not supported.
[00007f843cc03890] main decoder debug: using audio decoder module "faad"
Install libavcodec-freeworld
The decoder VLC needs is in libavcodec-freeworld. It installs a full FFmpeg libavcodec under /usr/lib64/ffmpeg and adds a linker config so programs load it instead of the Fedora build:
sudo dnf install -y libavcodec-freeworld
It pulled one dependency:
Installing:
libavcodec-freeworld x86_64 0:9.0.2-1.fc45 rpmfusion-free 14.2 MiB
Installing dependencies:
vvenc-libs x86_64 0:1.14.0-1.fc45 rpmfusion-free 3.3 MiB
Transaction Summary:
Installing: 2 packages
Total size of inbound packages is 7 MiB. Need to download 7 MiB.
After this operation, 18 MiB extra will be used (install 18 MiB, remove 0 B).
The package files show how it takes over:
rpm -ql libavcodec-freeworld | grep -E "ld.so|\.so\."
The files:
/etc/ld.so.conf.d/ffmpeg-lib64.conf
/usr/lib64/ffmpeg/libavcodec.so.63
/usr/lib64/ffmpeg/libavcodec.so.63.1.102
Replay the HEVC clip:
cvlc -vv -V dummy -A dummy --play-and-exit --run-time=2 Videos/test-hevc-aac.mp4 2>&1 | grep -E 'using (audio|video) decoder module|is not supported|codec \('
It decodes now:
[00007f7c28c03890] avcodec decoder debug: codec (hevc) started
[00007f7c28c03890] main decoder debug: using video decoder module "avcodec"
[00007f7c28cbacb0] main decoder debug: using audio decoder module "faad"
The whole sequence on the Fedora 45 box, from the stock decoders to the freeworld library:

H.264 moves from OpenH264 to the FFmpeg decoder at the same time:
cvlc -vv -V dummy -A dummy --play-and-exit --run-time=2 Videos/test-h264-aac.mp4 2>&1 | grep -E 'codec \('
The codec start line:
[00007efd90c109c0] avcodec decoder debug: codec (h264) started
The GUI agrees. Tools, Codec Information (Ctrl+J) on the same clip:

Or swap the whole FFmpeg stack
libavcodec-freeworld only replaces the decoder library. If you also want the full ffmpeg command line and the extra encoders for every app on the system, swap the Fedora build out entirely. We did this on the Fedora 44 machine:
sudo dnf swap -y ffmpeg-free ffmpeg --allowerasing
On the Cloud image ffmpeg-free itself was not installed, so dnf5 printed “No packages to remove for argument: ffmpeg-free” and removed the five libav*-free and libsw*-free libraries instead, then installed the RPM Fusion FFmpeg with 26 more packages. A Workstation has more packages built against the free libraries, so its counts differ:
Transaction Summary:
Installing: 27 packages
Removing: 5 packages
Total size of inbound packages is 23 MiB. Need to download 23 MiB.
After this operation, 57 MiB extra will be used (install 72 MiB, remove 15 MiB).
HEVC played after the swap too:
cvlc -vv -V dummy -A dummy --play-and-exit --run-time=2 test-hevc-aac.mp4 2>&1 | grep -E 'using (audio|video) decoder module|is not supported|codec \('
The result:
[00007fd354c09630] avcodec decoder debug: codec (hevc) started
[00007fd354c09630] main decoder debug: using video decoder module "avcodec"
[00007fd354c926b0] main decoder debug: using audio decoder module "faad"
The full codec setup for Firefox, GStreamer and hardware decoding is in the RPM Fusion and multimedia codecs guide for Fedora.
Install VLC as a Flatpak
The Flathub build bundles its own FFmpeg, so it plays HEVC without RPM Fusion. It needs Flathub enabled; the Flatpak and Flathub guide for Fedora covers that. Check the listing first:
flatpak remote-info flathub org.videolan.VLC | grep -E "ID|Version|Runtime|Download|Installed"
The Flatpak was one point release behind the Fedora RPM on the test day. The 52.7 MB is the app alone; it runs on the KDE 5.15 runtime:
ID: org.videolan.VLC
Version: 3.0.23
Download Size: 52.7Â MB
Installed Size: 139.4Â MB
Runtime: org.kde.Platform/x86_64/5.15-25.08
Install it:
sudo flatpak install -y --noninteractive flathub org.videolan.VLC
On the test box that pulled the KDE 5.15-25.08 runtime and its locale, the GL.default and GL extra runtimes, codecs-extra and the KStyle theme along with the app, and took 1 minute 27 seconds.
Inside the sandbox the same clip decoded, AAC included, with no RPM Fusion packages involved:
flatpak run --command=cvlc org.videolan.VLC -vv -V dummy -A dummy --play-and-exit --run-time=2 Videos/test-hevc-aac.mp4 2>&1 | grep -E 'using (audio|video) decoder module|is not supported|codec \('
The HEVC test inside the sandbox:
[00007fec80c03ce0] avcodec decoder debug: codec (hevc) started
[00007fec80c03ce0] main decoder debug: using video decoder module "avcodec"
[00007fec80cb4a40] avcodec decoder debug: codec (aac) started
[00007fec80cb4a40] main decoder debug: using audio decoder module "avcodec"
The listing and the sandboxed decode together:

The sandbox is not tight. The Flatpak gets the whole host filesystem and all devices:
flatpak info --show-permissions org.videolan.VLC | sed -n "1,8p"
The permissions:
[Context]
shared=ipc;network;
sockets=pulseaudio;x11;
devices=all;
filesystems=xdg-config/kdeglobals:ro;host;xdg-run/gvfs;
[Session Bus Policy]
org.kde.kwalletd5=talk
Pick the RPM if you already use RPM Fusion. Pick the Flatpak if you want HEVC without touching the system FFmpeg.
Keep VLC updated
The RPM updates with every dnf upgrade. The Flatpak updates with flatpak update. On Fedora 45 before the final release, updates-testing held an older VLC build than the main repo. dnf picks the newest version, so the testing build was ignored:
dnf repoquery --qf "%{name} %{version}-%{release} %{repoid}\n" vlc vlc-plugins-base vlc-plugins-freeworld vlc-plugin-ffmpeg
The query:
Updating and loading repositories:
Repositories loaded.
vlc 3.0.23-18.fc45 updates-testing
vlc 3.0.24-3.fc45 fedora
vlc-plugin-ffmpeg 3.0.23-18.fc45 updates-testing
vlc-plugin-ffmpeg 3.0.24-3.fc45 fedora
vlc-plugins-base 3.0.23-18.fc45 updates-testing
vlc-plugins-base 3.0.24-3.fc45 fedora
Uninstall VLC
Remove the player and the plugin package. dnf also removes the dependencies nothing else needs:
sudo dnf remove vlc vlc-plugins-freeworld
A dry run with --assumeno on the Workstation, filtered to the summary:
sudo dnf remove --assumeno vlc vlc-plugins-freeworld 2>&1 | grep -E "^Removing|Transaction Summary|Removing: |Freed|After this"
It would remove 44 packages:
Removing: 44 packages
After this operation, 77 MiB will be freed (install 0 B, remove 77 MiB).
libavcodec-freeworld and its vvenc-libs dependency are not part of that transaction and stay installed. Remove them separately with sudo dnf remove libavcodec-freeworld vvenc-libs; if one of them is already gone, dnf5 prints “No packages to remove for argument” for it and carries on.
The settings directory stays behind. Delete ~/.config/vlc if you want a clean start next time. The Flatpak comes out with sudo flatpak uninstall --delete-data org.videolan.VLC.
Troubleshooting
Codec `hevc’ (MPEG-H Part2/HEVC (H.265)) is not supported
Fedora’s libavcodec has no HEVC decoder. Install libavcodec-freeworld from RPM Fusion, swap to the RPM Fusion ffmpeg, or use the Flatpak.
HEVC still fails after installing vlc-plugins-freeworld
That package carries x264 and x265 encoders only. It does nothing for playback. Install libavcodec-freeworld.
RPM Fusion repo errors right after a new Fedora release
RPM Fusion repo URLs follow the Fedora release number. During the Fedora 45 prerelease the base RPM Fusion repos were enabled, but updates-testing stood in for updates. If dnf reports a 404 for an RPM Fusion repo after an upgrade, see the third-party repo 404 guide for Fedora 45.
“skipped OpenPGP checks” when adding RPM Fusion
dnf does not verify packages installed from a file or URL. Fedora 45 tightened rpm -i, not dnf. The NOKEY and RPM signature guide for Fedora 45 shows how to turn the check on for local packages.
For a browser to go with the player, see Google Chrome on Fedora or Brave on Fedora. The rest of a new desktop setup is in the Fedora 45 post-install checklist.