[Silverblue] RPM Fusion codec instructions not working

TL;DR here are my questions:

  1. If I use --allow-inactive to force overlay an RPM Fusion package whose Fedora version is already in the base install (I.E. gstreamer1-plugin-libav), will that create a file conflict because the package is installed twice?
  2. Should I change the RPM Fusion config files in /etc/yum.repos.d to have a higher priority than the Fedora repos? Will that even do anything on Silverblue?
  3. Why don’t the instructions on the RPM Fusion website work? My container is basically vanilla except for overlaying gnome-tweaks, openh264, and mozilla-openh264.

/TL;DR

I have run into several issues trying to overlay the codecs from RPM Fusion onto my new Silverblue install. I have an AMD integrated GPU.

First I did:

rpm-ostree override remove mesa-va-drivers --install mesa-va-drivers-freeworld

which worked without issue.

Then I did:

rpm-ostree override remove mesa-vdpau-drivers --install mesa-vdpau-drivers-freeworld

but rpm-ostree informed me that mesa-vdpau-drivers wasn’t even installed for some reason, so I just ran rpm-ostree install mesa-vdpau-drivers-freeworld instead.

But then I ran:

rpm-ostree install gstreamer1-plugin-libav gstreamer1-plugins-bad-free-extras gstreamer1-plugins-bad-freeworld gstreamer1-plugins-ugly gstreamer1-vaapi

And I was greeted with the following error:

error: "gstreamer1-plugin-libav" is already provided by: gstreamer1-plugin-libav-1.22.12-1.fc40.x86_64. Use --allow-inactive to explicitly require it.

So I was like “okay, that’s fine, but I don’t want to install the package if it’s already there, because that would create a file conflict right?” So I tried:

rpm-ostree override remove gstreamer1-plugin-libav --install gstreamer1-plugin-libav

in the hopes that the system would recognize I wanted it to say “okay, delete this from the container and install it from the DNF repos configured. Got it.” But instead it threw the same error.

Then I tried running the command to replace ffmpeg:

rpm-ostree override remove libavcodec-free libavfilter-free libavformat-free libavutil-free libpostproc-free libswresample-free libswscale-free --install ffmpeg

And I got this error:

error: Could not depsolve transaction; 2 problems detected:
 Problem 1: package libavdevice-free-6.1.1-12.fc40.x86_64 from @System requires libavcodec-free(x86-64) = 6.1.1-12.fc40, but none of the providers can be installed
  - conflicting requests
 Problem 2: package ffmpeg-free-6.1.1-12.fc40.x86_64 from @System requires libavfilter-free(x86-64) = 6.1.1-12.fc40, but none of the providers can be installed
  - conflicting requests

So I’m thinking I’ll try removing ffmpeg from my install with an override…except that will just give me the same issue I’m already getting with gstreamer1-plugin-libav. What am I supposed to do?

Thanks for your help.

I’m actually having the same issue on both my 39 system and 40.

Both had everything working correctly before and updating fine. Now all of a sudden:

Resolving dependencies... done
error: Could not depsolve transaction; 2 problems detected:
 Problem 1: package libavdevice-free-6.1.1-3.fc39.x86_64 from @System requires libavcodec-free(x86-64) = 6.1.1-3.fc39, but none of the providers can be installed
  - conflicting requests
 Problem 2: package ffmpeg-free-6.1.1-3.fc39.x86_64 from @System requires libavfilter-free(x86-64) = 6.1.1-3.fc39, but none of the providers can be installed
  - conflicting requests

I’ve already replaced libavcodec-free with freeworld:

RemovedBasePackages: ... libavfilter-free libavformat-free libpostproc-free libswresample-free libavutil-free libswscale-free libavcodec-free 6.1.1-3.fc39 mesa-va-drivers 23.3.6-1.fc39 ...
LayeredPackages:  ... ffmpeg ffmpeg-libs libavcodec-freeworld libgda libgda-sqlite libva-utils mesa-va-drivers-freeworld rpmfusion-free-release rpmfusion-nonfree-release ...

I have no idea why it is now trying to install libavdevice-free-6.1.1-3.fc39.x86_64 and ffmpeg-free-6.1.1-3.fc39.x86_64 when I have the non-free ones:

➜ rpm -qa libavdevice
libavdevice-6.1.1-5.fc39.x86_64
➜ rpm -qa ffmpeg
ffmpeg-6.1.1-5.fc39.x86_64

Seems to me like there is something else that is trying to get them installed but I have no idea what and unsure how to troubleshoot.

You can see when previewing the update that the packages are attempting to be added:

          Added: SDL2-2.28.5-1.fc39.x86_64
                 ffmpeg-free-6.1.1-3.fc39.x86_64
                 freeglut-3.4.0-7.fc39.x86_64
                 libavc1394-0.5.4-20.fc39.x86_64
                 libavdevice-free-6.1.1-3.fc39.x86_64
                 libcaca-0.99-0.69.beta20.fc39.x86_64
                 libdc1394-2.2.7-3.fc39.x86_64
                 libiec61883-1.2.0-32.fc39.x86_64
                 libraw1394-2.1.2-18.fc39.x86_64
                 mesa-libGLU-9.0.3-1.fc39.x86_64
                 openal-soft-1.23.1-2.fc39.x86_64
                 slang-2.3.3-4.fc39.x86_64

But have not found out a way to find out WHY they are trying to be added.

I’ve removed all of my overlayed packages except these now:

ffmpeg ffmpeg-libs libavcodec-freeworld libva-utils mesa-va-drivers-freeworld rpmfusion-free-release rpmfusion-nonfree-release

And I’m still getting this issue something seems broke to me.

The following should work when having no other modifications:

rpm-ostree install 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
reboot
rpm-ostree override remove ffmpeg-free libavcodec-free libavfilter-free libavformat-free libavdevice-free libavutil-free libswscale-free libpostproc-free libswresample-free --install ffmpeg --install ffmpegthumbnailer

I used these yesterday on my F40 system that has nothing layered.

ffmpeg-free was not part of the base image previously, but it has been added to the base image since 2024-05-17.

It is much easier to layer libavcodec-freeworld, mesa-va-drivers-freeworld, and mesa-vdpau-drivers-freeworld, and to override remove mesa-va-drivers only.

rpm-ostree overrride remove mesa-va-drivers
rpm-ostree install libavcodec-freeworld mesa-va-drivers-freeworld mesa-vdpau-drivers-freeworld

Yea my install was similar and had no issues until last month. I’d expect yours to work for awhile to before it breaks.

That is interesting and unfortunate.

So the root cause, for anyone also with the problem seeing this after the fact, is that ffmpeg-free was added to the base image and isn’t currently overridden as it wasn’t needed before and is now is trying to install itself.

So I guess then, since I cannot override a base package before it is installed, I need to undo all the ffmpeg stuff, update and let it install, then redo everything and make sure to add it as an override.

1 Like

Is this close to having the full ffmpeg? What else are you going to be missing from keeping:

RemovedBasePackages: libavfilter-free libavformat-free libpostproc-free libswresample-free libavutil-free libswscale-free 

as well as keeping ffmpeg-free and not switching to the full ffmpeg, ffmpeg-libs?

libavcodec-freeworld adds the missing codecs to ffmpeg-free so it is close. If you need to do development with FFmpeg, you can also layer ffmpeg-free-devel.

I see thank you very much.

Just as a confirmation backing out everything and then updating followed by re-layering solved the issues.

I did go ahead with ffmpeg-free as described and will see how it goes. As long as there are no issues with missing features this really does seems like a much easier way forward and I hope the docs get updated to show this as an example.