How to diagnose why VLC is always using some much more CPU power than it does on YouTube or previously on Windows

I have added everything under RPM Making sure you're not a bot! except the Nvidia files and libva-utils

inxi -Fzxx

Graphics:
Device-1: Intel Skylake GT2 [HD Graphics 520] vendor: Microsoft driver: i915
v: kernel arch: Gen-9 ports: active: eDP-1 empty: DP-1, DP-2, HDMI-A-1,
HDMI-A-2 bus-ID: 00:02.0 chip-ID: 8086:1916
Display: wayland server: Xwayland v: 24.1.9 compositor: gnome-shell
driver: gpu: i915 display-ID: 0
Monitor-1: eDP-1 model: Panasonic VVX14P048M00 res: 3000x2000 dpi: 267
diag: 343mm (13.5")
API: OpenGL v: 4.6 vendor: intel mesa v: 25.1.9 glx-v: 1.4 es-v: 3.2
direct-render: yes renderer: Mesa Intel HD Graphics 520 (SKL GT2)
device-ID: 8086:1916 display-ID: :0.0
API: EGL Message: EGL data requires eglinfo. Check --recommends.
Info: Tools: api: glxinfo x11: xdriinfo, xdpyinfo, xprop, xrandr

I tried to add the Mesa packages under RPM after noticing that the graphics rendered is Mesa, one of the packages failed to install with this error

Problem: cannot install the best candidate for the job

  • nothing provides mesa-filesystem(x86-64) = 25.2.7 needed by mesa-va-drivers-freeworld-25.2.7-2.fc42.x86_64 from rpmfusion-free-updates

I have added vlc-plugins-freeworld.

I believe the issue is hardware acceleration not being enabled, I add a similar issue when I first installed Fedora when playing YouTube videos

I have asked this question before and did not get any help

I am using a Microsoft Surface Book 1, not sure if other surface users have experienced the same issue.

See Hardware Video Acceleration - Fedora Project Wiki

Hardware acceleration is enabled at least when i check using vainfo

Are you using the rpm version of vlc? HW acceleration won’t work with the flatpak version provided by fedora. An alternative is the flatpak version provided by flathub.

run vlc, open messages (CTRL + m) and open a video file and check the output. You should see something like this: (nvidia)

avcodec info: Using NVIDIA VDPAU Driver Shared Library 590.48.01 Mon Dec 8 12:48:48 UTC 2025 for hardware decoding

this is the rpm version of vlc

$ dnf list --installed vlc\*
Installed packages
vlc.x86_64                      1:3.0.22-1.fc43 updates
vlc-cli.x86_64                  1:3.0.22-1.fc43 updates
vlc-gui-qt.x86_64               1:3.0.22-1.fc43 updates
vlc-gui-skins2.x86_64           1:3.0.22-1.fc43 updates
vlc-libs.x86_64                 1:3.0.22-1.fc43 updates
vlc-plugin-ffmpeg.x86_64        1:3.0.22-1.fc43 updates
vlc-plugin-gnome.x86_64         1:3.0.22-1.fc43 updates
vlc-plugin-lua.x86_64           1:3.0.22-1.fc43 updates
vlc-plugin-notify.x86_64        1:3.0.22-1.fc43 updates
vlc-plugin-pipewire.x86_64      3-6.fc43        fedora
vlc-plugin-pulseaudio.x86_64    1:3.0.22-1.fc43 updates
vlc-plugin-visualization.x86_64 1:3.0.22-1.fc43 updates
vlc-plugins-base.x86_64         1:3.0.22-1.fc43 updates
vlc-plugins-extra.x86_64        1:3.0.22-1.fc43 updates
vlc-plugins-freeworld.x86_64    3.0.22-1.fc43   @commandline
vlc-plugins-video-out.x86_64    1:3.0.22-1.fc43 updates

can u give the steps i need to do this and get the messages
After installling the vlc-cli this is what I get.

VLC media player 3.0.22 Vetinari (revision 3.0.22-0-gf9020c4df0)
[0000564111a48c70] main interface error: no suitable interface module
[0000564111974520] main libvlc error: interface "globalhotkeys,none" initialization failed
[0000564111974520] main libvlc: Running vlc with the default interface. Use 'cvlc' to use vlc without interface.
[00005641119e76a0] main playlist: playlist is empty
[0000564111a48c70] [cli] lua interface: Listening on host "*console".
VLC media player 3.0.22 Vetinari
Command Line Interface initialized. Type `help' for help.

just run vlc, it should open the usual GUI.

$ vlc
VLC media player 3.0.22 Vetinari (revision 3.0.22-0-gf9020c4df0)
[000055b73f781620] main libvlc: Running vlc with the default interface. Use 'cvlc' to use vlc without interface.
[000055b73f81bcd0] main playlist: playlist is empty

you need to install vlc and it will pull in all required packages.

sudo dnf install vlc

VLC is already installed the flathub version

I get h264 error when the cli is running and videos dont play but when I close cli and use GUI videos play

Command Line Interface initialized. Type `help' for help.
> [00007ff804c0ee50] main decoder error: Codec `h264' (H264 - MPEG-4 AVC (part 10)) is not supported.
[00007ff804c0ee50] main decoder error: Codec not supported
[00007ff804c0ee50] main decoder error: VLC could not decode the format "h264" (H264 - MPEG-4 AVC (part 10))
[00007ff804c0b8f0] main decoder error: Codec `h264' (H264 - MPEG-4 AVC (part 10)) is not supported.
[00007ff804c0b8f0] main decoder error: Codec not supported
[00007ff804c0b8f0] main decoder error: VLC could not decode the format "h264" (H264 - MPEG-4 AVC (part 10))
[00007ff804c14630] main decoder error: Codec `h264' (H264 - MPEG-4 AVC (part 10)) is not supported.
[00007ff804c14630] main decoder error: Codec not supported
[00007ff804c14630] main decoder error: VLC could not decode the format "h264" (H264 - MPEG-4 AVC (part 10))
^C[00005623fb3a32f0] [cli] lua interface error: Error loading script /usr/lib64/vlc/lua/intf/cli.luac: lua/intf/modules/host.lua:286: Interrupted.

I have h264 installed using RPM fusion and enabled

for the flatpak version you probably need some additional dependencies for intel hw decoding. Don’t know. I do not use flatpaks if there is a rpm version available.

flatpaks do not have access to any libraries installed as rpm.

The messages output is empty although I do not have Nvidia
I installed the RPM version using sudo dnf install vlc

vlc
VLC media player 3.0.22 Vetinari (revision 3.0.22-0-gf9020c4df0)
[00005650d9cbe520] main libvlc: Running vlc with the default interface. Use 'cvlc' to use vlc without interface.
[00005650d9d58230] main playlist: playlist is empty

the messages window looks like this!

Install the rpm version of vlc with all dependencies. compare the rpm -qa output with the list from previous message.
then run the rpm version /usr/bin/vlc.

the flatpak version will also have a messages window. Tools / Messages or CTRL + m.

I installed the RPM version, in the new terminal output I shared above h264 error messages are gone . And the message window looks like that

No lines in messages when you start playing a video file?

Have you checked preferences ( Input / Codecs) that HW decoding is enabled or set to Automatic? check with vainfo from the same terminal that va-api detects the driver

e.g.

$ vainfo 
Trying display: wayland
libva info: VA-API version 1.22.0
libva info: User environment variable requested driver 'nvidia'
libva info: Trying to open /usr/lib64/dri-nonfree/nvidia_drv_video.so
libva info: Trying to open /usr/lib64/dri-freeworld/nvidia_drv_video.so
libva info: Trying to open /usr/lib64/dri/nvidia_drv_video.so
libva info: Found init function __vaDriverInit_1_0
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.22 (libva 2.22.0)
vainfo: Driver version: VA-API NVDEC driver [direct backend]
vainfo: Supported profile and entrypoints
      VAProfileMPEG2Simple            :	VAEntrypointVLD
      VAProfileMPEG2Main              :	VAEntrypointVLD
      VAProfileVC1Simple              :	VAEntrypointVLD
      VAProfileVC1Main                :	VAEntrypointVLD
      VAProfileVC1Advanced            :	VAEntrypointVLD
      VAProfileH264Main               :	VAEntrypointVLD
      VAProfileH264High               :	VAEntrypointVLD
      VAProfileH264ConstrainedBaseline:	VAEntrypointVLD
      VAProfileHEVCMain               :	VAEntrypointVLD
      VAProfileVP8Version0_3          :	VAEntrypointVLD
      VAProfileVP9Profile0            :	VAEntrypointVLD
      VAProfileHEVCMain10             :	VAEntrypointVLD
      VAProfileHEVCMain12             :	VAEntrypointVLD
      VAProfileVP9Profile2            :	VAEntrypointVLD
      VAProfileHEVCMain444            :	VAEntrypointVLD
      VAProfileHEVCMain444_10         :	VAEntrypointVLD
      VAProfileHEVCMain444_12         :	VAEntrypointVLD


I did not see any messages because the filter is set to errors by default.

HA is set to automatic

vainfo output is

Trying display: wayland
libva info: VA-API version 1.22.0
libva info: Trying to open /usr/lib64/dri-nonfree/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_22
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.22 (libva 2.22.0)
vainfo: Driver version: Intel iHD driver for Intel(R) Gen Graphics - 25.2.6 ()
vainfo: Supported profile and entrypoints
VAProfileNone : VAEntrypointVideoProc
VAProfileNone : VAEntrypointStats
VAProfileMPEG2Simple : VAEntrypointVLD
VAProfileMPEG2Simple : VAEntrypointEncSlice
VAProfileMPEG2Main : VAEntrypointVLD
VAProfileMPEG2Main : VAEntrypointEncSlice
VAProfileH264Main : VAEntrypointVLD
VAProfileH264Main : VAEntrypointEncSlice
VAProfileH264Main : VAEntrypointFEI
VAProfileH264Main : VAEntrypointEncSliceLP
VAProfileH264High : VAEntrypointVLD
VAProfileH264High : VAEntrypointEncSlice
VAProfileH264High : VAEntrypointFEI
VAProfileH264High : VAEntrypointEncSliceLP
VAProfileVC1Simple : VAEntrypointVLD
VAProfileVC1Main : VAEntrypointVLD
VAProfileVC1Advanced : VAEntrypointVLD
VAProfileJPEGBaseline : VAEntrypointVLD
VAProfileJPEGBaseline : VAEntrypointEncPicture
VAProfileH264ConstrainedBaseline: VAEntrypointVLD
VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice
VAProfileH264ConstrainedBaseline: VAEntrypointFEI
VAProfileH264ConstrainedBaseline: VAEntrypointEncSliceLP
VAProfileVP8Version0_3 : VAEntrypointVLD
VAProfileVP8Version0_3 : VAEntrypointEncSlice
VAProfileHEVCMain : VAEntrypointVLD
VAProfileHEVCMain : VAEntrypointEncSlice
VAProfileHEVCMain : VAEntrypointFEI

The issues persists, I have played the same video on Firefox and the CPU load is smaller. Not sure why this is the case.

I have tried other players, SMplayer, MPV and Celluloid and all those players for some reason cannot decode h264 videos.

does LIBVA_DRIVER_NAME=iHD /usr/bin/vlc or /usr/bin/mpv instead of vlc work?

mpv: you have to add --hwdec=auto or --hwdec=vaapi or use CTRL+h to toggle
hwdec on/off

output of rpm -qa ffmpeg\* mozilla-openh264

make sure that you test with a video file that the iGPU is able to decode.
test with Sample mkv Video File Download sample-2.mkv or sample-3.mkv

you need version 25.1.9 because it has to match the installed mesa version. See the inxi output.

is Mesa necessary for Intel, the renderer name is mesa but is it required?

 LIBVA_DRIVER_NAME=iHD /usr/bin/vlc

runs simialr to vlc or /usr/bin/vlc

there is an Nvidia error

Failed to open VDPAU backend libvdpau_nvidia.so: cannot open shared object file: No such file or directory

/usr/bin/mpv doesnt work, error bash: usr/bin/mpv: No such file or directory although i used gnome software to install

output of rpm -qa ffmpeg\* mozilla-openh264

ffmpeg-libs-7.1.2-1.fc42.x86_64
ffmpeg-7.1.2-1.fc42.x86_64

how do I test with a video file that the iGPU is able to decode? Play the video?

this was a test with an old skylake nuc ( Intel Corporation Iris Graphics 540 (rev 0a) )

$  LIBVA_DRIVER_NAME=iHD /usr/bin/vlc Videos/sample-2.mkv 
VLC media player 3.0.22 Vetinari (revision 3.0.22-0-gf9020c4df0)
[0000557d75d08590] main libvlc: Running vlc with the default interface. Use 'cvlc' to use vlc without interface.
libva info: VA-API version 1.22.0
libva info: User environment variable requested driver 'iHD'
libva info: Trying to open /usr/lib64/dri-nonfree/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_22
libva info: va_openDriver() returns 0
[00007fceecc04ed0] avcodec decoder: Using Intel iHD driver for Intel(R) Gen Graphics - 25.3.4 () for hardware decoding

the same with mpv (make sure you’ve installed mpv with dnf )

$ LIBVA_DRIVER_NAME=iHD  /usr/bin/mpv --hwdec=vaapi Videos/sample-2.mkv 
● Video  --vid=1  (h264 1920x1080 25 fps) [default]
MESA-INTEL: warning: ../src/intel/vulkan/anv_formats.c:981: FINISHME: support more multi-planar formats with DRM modifiers
Using hardware decoding (vaapi).
VO: [gpu] 1920x1080 vaapi[nv12]
V: 00:00:30 / 00:00:30 (100%)
Exiting... (End of file)

try the same on your system with vlc AND mpv and post the complete output not just a few lines.

and vainfo

$  LIBVA_DRIVER_NAME=iHD vainfo
libva info: VA-API version 1.22.0
libva info: User environment variable requested driver 'iHD'
libva info: Trying to open /usr/lib64/dri-nonfree/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_22
libva info: va_openDriver() returns 0
Trying display: wayland
vainfo: VA-API version: 1.22 (libva 2.22.0)
vainfo: Driver version: Intel iHD driver for Intel(R) Gen Graphics - 25.3.4 ()
vainfo: Supported profile and entrypoints
      VAProfileNone                   :	VAEntrypointVideoProc
      VAProfileNone                   :	VAEntrypointStats
      VAProfileMPEG2Simple            :	VAEntrypointVLD
      VAProfileMPEG2Simple            :	VAEntrypointEncSlice
      VAProfileMPEG2Main              :	VAEntrypointVLD
      VAProfileMPEG2Main              :	VAEntrypointEncSlice
      VAProfileH264Main               :	VAEntrypointVLD
      VAProfileH264Main               :	VAEntrypointEncSlice
      VAProfileH264Main               :	VAEntrypointFEI
      VAProfileH264Main               :	VAEntrypointEncSliceLP
      VAProfileH264High               :	VAEntrypointVLD
      VAProfileH264High               :	VAEntrypointEncSlice
      VAProfileH264High               :	VAEntrypointFEI
      VAProfileH264High               :	VAEntrypointEncSliceLP
      VAProfileVC1Simple              :	VAEntrypointVLD
      VAProfileVC1Main                :	VAEntrypointVLD
      VAProfileVC1Advanced            :	VAEntrypointVLD
      VAProfileJPEGBaseline           :	VAEntrypointVLD
      VAProfileJPEGBaseline           :	VAEntrypointEncPicture
      VAProfileH264ConstrainedBaseline:	VAEntrypointVLD
      VAProfileH264ConstrainedBaseline:	VAEntrypointEncSlice
      VAProfileH264ConstrainedBaseline:	VAEntrypointFEI
      VAProfileH264ConstrainedBaseline:	VAEntrypointEncSliceLP
      VAProfileVP8Version0_3          :	VAEntrypointVLD
      VAProfileVP8Version0_3          :	VAEntrypointEncSlice
      VAProfileHEVCMain               :	VAEntrypointVLD
      VAProfileHEVCMain               :	VAEntrypointEncSlice
      VAProfileHEVCMain               :	VAEntrypointFEI

misconfigured vlc? VDPAU was nvidia’s idea for hw accel. It is not VA-API.

UPDATE: also verify that intel-media-driver is installed from rpmfusion-nonfree repo.

I installed intel-media-driver using sudo dnf install intel-media-driver , checked and its is confirmed installed

vainfo

vainfo
Trying display: wayland
libva info: VA-API version 1.22.0
libva info: Trying to open /usr/lib64/dri-nonfree/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_22
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.22 (libva 2.22.0)
vainfo: Driver version: Intel iHD driver for Intel(R) Gen Graphics - 25.2.6 ()
vainfo: Supported profile and entrypoints
VAProfileNone : VAEntrypointVideoProc
VAProfileNone : VAEntrypointStats
VAProfileMPEG2Simple : VAEntrypointVLD
VAProfileMPEG2Simple : VAEntrypointEncSlice
VAProfileMPEG2Main : VAEntrypointVLD
VAProfileMPEG2Main : VAEntrypointEncSlice
VAProfileH264Main : VAEntrypointVLD
VAProfileH264Main : VAEntrypointEncSlice
VAProfileH264Main : VAEntrypointFEI
VAProfileH264Main : VAEntrypointEncSliceLP
VAProfileH264High : VAEntrypointVLD
VAProfileH264High : VAEntrypointEncSlice
VAProfileH264High : VAEntrypointFEI
VAProfileH264High : VAEntrypointEncSliceLP
VAProfileVC1Simple : VAEntrypointVLD
VAProfileVC1Main : VAEntrypointVLD
VAProfileVC1Advanced : VAEntrypointVLD
VAProfileJPEGBaseline : VAEntrypointVLD
VAProfileJPEGBaseline : VAEntrypointEncPicture
VAProfileH264ConstrainedBaseline: VAEntrypointVLD
VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice
VAProfileH264ConstrainedBaseline: VAEntrypointFEI
VAProfileH264ConstrainedBaseline: VAEntrypointEncSliceLP
VAProfileVP8Version0_3 : VAEntrypointVLD
VAProfileVP8Version0_3 : VAEntrypointEncSlice
VAProfileHEVCMain : VAEntrypointVLD
VAProfileHEVCMain : VAEntrypointEncSlice
VAProfileHEVCMain : VAEntrypointFEI

LIBVA_DRIVER_NAME=iHD /usr/bin/vlc Downloads/sample-1.mkv

LIBVA_DRIVER_NAME=iHD /usr/bin/vlc Downloads/sample-1.mkv
VLC media player 3.0.22 Vetinari (revision 3.0.22-0-gf9020c4df0)
[000055e215d18520] main libvlc: Running vlc with the default interface. Use ‘cvlc’ to use vlc without interface.
[00007f0be0002b00] main filter error: Failed to create video converter
[00007f0be0002b00] main filter error: Failed to create video converter
Failed to open VDPAU backend libvdpau_nvidia.so: cannot open shared object file: No such file or directory

LIBVA_DRIVER_NAME=iHD /usr/bin/mpv Downloads/sample-1.mkv

LIBVA_DRIVER_NAME=iHD /usr/bin/mpv Downloads/sample-1.mkv
● Video --vid=1 --vlang=eng (h264 4096x2160 29.97 fps) [default]
File tags:
Comment: 0.9.138
MESA-INTEL: warning: ../src/intel/vulkan/anv_formats.c:834: FINISHME: support more multi-planar formats with DRM modifiers
VO: [gpu] 4096x2160 yuv420p
V: 00:00:21 / 00:00:21 (100%) Dropped: 424
Exiting… (End of file)

The decoding was much smoother with MPV

but still software decoded. You did not read my previous post.

  1. vlc: you’ve configured vlc to use VDPAU! Why? VDPAU is nvidia, You want auto or va-api. Start vlc and change hw-decoding back to auto, then quit vlc and retry from command line.
  2. mpv : you did not provide the option to enable hw-decoding. Take a look at the command line in my previous post and retry.

I prefer smplayer + mpv over vlc. use dnf to install smplayer.
If you use gnome software then pay attention what version you want to install flatpak or rpm version.

VLC still has the VDPAU issue.
I used dnf install MPV

LIBVA_DRIVER_NAME=iHD /usr/bin/vlc Downloads/videos/'Next.js Authentication Master Class - No Libraries (Email⧸Password, OAuth2, etc.).mp4'

LIBVA_DRIVER_NAME=iHD /usr/bin/vlc Downloads/videos/‘Next.js Authentication Master Class - No Libraries (Email⧸Password, OAuth2, etc.).mp4’
VLC media player 3.0.22 Vetinari (revision 3.0.22-0-gf9020c4df0)
[000055b700c79520] main libvlc: Running vlc with the default interface. Use ‘cvlc’ to use vlc without interface.
Failed to open VDPAU backend libvdpau_nvidia.so: cannot open shared object file: No such file or directory

LIBVA_DRIVER_NAME=iHD /usr/bin/mpv --hwdec=vaapi Downloads/videos/'Next.js Authentication Master Class - No Libraries (Email⧸Password, OAuth2, etc.).mp4'

LIBVA_DRIVER_NAME=iHD /usr/bin/mpv --hwdec=vaapi Downloads/videos/‘Next.js Authentication Master Class - No Libraries (Email⧸Password, OAuth2, etc.).mp4’
● Video --vid=1 (h264 1920x1080 30 fps) [default]
● Audio --aid=1 --alang=eng (aac 2ch 44100 Hz 128 kbps) [default]
MESA-INTEL: warning: ../src/intel/vulkan/anv_formats.c:834: FINISHME: support more multi-planar formats with DRM modifiers
Using hardware decoding (vaapi).
AO: [pipewire] 44100Hz stereo 2ch floatp
VO: [gpu] 1920x1080 vaapi[nv12]
AV: 00:01:50 / 01:59:39 (2%) A-V: 0.000 Dropped: 7
Exiting… (Quit)

LIBVA_DRIVER_NAME=iHD /usr/bin/mpv --hwdec=auto Downloads/videos/'Next.js Authentication Master Class - No Libraries (Email⧸Password, OAuth2, etc.).mp4'
● Video --vid=1 (h264 1920x1080 30 fps) [default]

LIBVA_DRIVER_NAME=iHD /usr/bin/mpv --hwdec=auto Downloads/videos/‘Next.js Authentication Master Class - No Libraries (Email⧸Password, OAuth2, etc.).mp4’
● Video --vid=1 (h264 1920x1080 30 fps) [default]
● Audio --aid=1 --alang=eng (aac 2ch 44100 Hz 128 kbps) [default]
MESA-INTEL: warning: ../src/intel/vulkan/anv_formats.c:834: FINISHME: support more multi-planar formats with DRM modifiers
Cannot load libcuda.so.1
Using hardware decoding (vaapi).
AO: [pipewire] 44100Hz stereo 2ch floatp
VO: [gpu] 1920x1080 vaapi[nv12]
AV: 00:07:34 / 01:59:39 (6%) A-V: 0.000 Dropped: 4
Exiting… (Quit)

Both MPV and VLC are still overclocking, Browser is ok I use LibreWolf.