Page MenuHomeSolus

VLC fails to play mp4s on nvidia 304 drivers
Closed, ResolvedPublic

Description

terminal output https://hastebin.com/nifodurewe.sql

Graphics: Card: NVIDIA G73 [GeForce 7600 GT] bus-ID: 04:00.0

Display Server: x11 (X.Org 1.19.6 ) driver: nvidia
Resolution: 1024x768@75.03hz, 1280x1024@75.02hz
OpenGL: renderer: GeForce 7600 GT/PCIe/SSE2
version: 2.1.2 NVIDIA 304.137 Direct Render: Yes

Event Timeline

Running sudo /usr/lib64/vlc/vlc-cache-gen -f /usr/lib64/vlc/plugins/ should clear up the plugin cache errors @blaz. Seems like VLC's install/update triggers aren't doing it as they should.

The other problem with MP4 playback, not sure what's causing that. Seems like both VLC and the MPV problem you reported elsewhere are having the same issue. Something OpenGL related not working. What's weird to me is I see you have the nvidia binary blob installed, yet they're both trying to use swrast, which is software rasterized output.

I don't have a nvidia card so I can't test. I'd suggest running the above command so we can clear up the cache issue, then perhaps try changing the video driver in VLC's settings, see if that helps. If it's set to "default" or "automatic" it may be having trouble detecting your video driver.

@folcred getting this error

/usr/lib64/vlc/vlc-cache-gen: invalid option -- 'f'
Usage: /usr/lib64/vlc/vlc-cache-gen <path>
Generate the LibVLC plugins cache for the specified plugins directory.

What happens with just using the symlinks for lib64 sudo /usr/lib/vlc/vlc-cache-gen -f /usr/lib/vlc/plugins/? See https://dev.solus-project.com/T5903.

Try the above first @blaz, if it doesn't work, omit the "-f" and try. Seems like VLC is getting a bit wonky!

Have you tried changing the video driver backend?

As in installing nouveau and removing nvidia-304-glx-driver...?

No no no! Sorry @blaz, I meant the one that VLC is using for rendering video. Under Tools > Preferences > Video > Output and Tools > Preferences > Input-Codecs > Hardware-accelerated decoding. Setting them to vdpau.

Based on the error, I'd be thinking something to do with glvnd and your driver not having it. The question is, did it ever work since changing to glvnd?

libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast

@blaz any update on this ? it's been 3 months since your last comment.

Uhm. I guess change the status to resolved since it's an issue with the driver and not the DE. Same for the other one.

sunnyflunk renamed this task from VLC fails to play mp4s on Plasma to VLC fails to play mp4s on nvidia 304 drivers.Jul 6 2018, 7:48 AM
sunnyflunk triaged this task as Normal priority.
sunnyflunk edited projects, added Software; removed Plasma.

This is still a bug (and other related 340 driver bugs) and I wouldn't be surprised if it had the same issue on the 340 drivers or at least it is using software rendering rather than hardware acceleration if it is working. I've spent the entire day downloading the repo to investigate this so we shall not close it till it is done xD

Don't know if it helps @sunnyflunk, back when I was using Nvidia I always had to install libvdpau, then explicitly tell VLC and mpv to use it for rendering. In ~/.config/mpv/mpv.conf I'd set:

vo=vdpau
hwdec=vdpau

I don't remember where the VLC settings are, I don't use it and uninstalled it. I do know there were two places I had to set it there too.

With some distros when you install the binary blob, they pull vdpau as a dependency. When I was running Arch I had to install it myself to get VLC to work. I can't say whether VLC will or has ever worked without it, never has on any of my systems regardless of DE or distro.

Beyond the need for vdpau, it seems to be a hardware detection problem. On some systems users can just install the binary blob and live happily ever after, no problems. With others (like mine) it seems both VLC and mpv always failed to detect vdpau and would fall back to some other backend which didn't work. I would have to manually point them at it. Distro never seemed to matter, Ubuntu, Arch, openSUSE... if I installed VLC with the binary Nvidia blob, I had to ensure vdpau was installed and explicitly point them at it. They never seemed to be able to detect it on their own. Like @blaz mentioned in his original report, VLC was trying to use swrast. That won't work with .mp4.

It's just one of many reasons I finally gave up on Nvidia and just installed an AMD card. Nvidia just doesn't do enough to make their cards and their abilities transparent to the system. I don't know if it's hardware, BIOS or what, some systems if vdpau is install the players can detect and use it. They work "ootb". They never did on mine and obviously others.

@blaz any chance you could give this a crack on fully up to date unstable? I've largely rebuild anything that relies on libGL.so.1 which should be what caused this.

sunnyflunk claimed this task.

I'm going to call this closed then since I'm fairly confident it is. If it isn't, feel free to reopen.

$ ldd /usr/lib64/vlc/plugins/*/*|grep libGL
        libGL.so.1 => /usr/lib64/nvidia/libGL.so.1 (0x00007fd273964000)