VLC player is well-designed and powerful, and I prefer this type of software designing. (Although UNIX's politically correct answer is Keep It Simple, Stupid, In the multimedia region I prefer a powerful and what-you-see-is-what-you-get interface, just the same design of those old cassette recorder.)
VLC is preinstalled with KDE, or some basic structures. I couldn't play video, but audio is OK since then.
Problem Description
Everytime I tried to play a video, e.g. MP4 with VLC, the interface just flashed and nothing displayed.
using journalctl
I got
1 | kernel: vlc[33836]: segfault at 168 ip 00007fb96213e11c sp 00007fb920207320 error 4 in libva.so.2.600.0[7fb96212d000+13000] |
and I tried vlc -vvv
to show the verbose messages, I got
1 | [00007f82180017f0] egl_x11 gl debug: EGL version 1.4 by Mesa Project |
Solution
microcode problem?
Although the Archwiki page VLC have some suggestions on segmentation fault, but it indicated it as a microcode problem. That's something happens as no vlc interface shall display. I can play audio file with VLC, and after trying the method I think it's not the microcode problem.
VLC bug?
Some reports says it's a bug as VLC uses strlen() on a null pointer, but they were posted years ago and I believe it's not my problem. My VLC is fully updated.
libva error: Display drivers
Then checking the socalled vaapi
and libva
error, I found it might be a problem with NVIDIA GPU. Some articles point out that Intel uses vaapi
and Nvidia uses vaapu
. After updated nvidia
, libva
, the problem still happens.
Checking VLC's optional dependencies, I found
1 | libva-vdpau-driver: vdpau backend nvidia |
not installed, but it seems not optional but as a must. After installing these two (my laptop uses both intel and Nvidia to display. ) drivers, my problem finally solved.