Rpmfusion and compiling rpcs3

here’s the problem: by default the libs in fedora for playing videos produce a bad experience on asahi. mpv, vlc too skip frames, have trouble sync’ing after lots of fast forward and rewind events. i did find out that if i install the nonfree ffmpeg , nonfree codecs, and multimedia packages from rpmfusion, then playing videos with mpv was nice again. so far so good.

then i wanted to compile rpcs3, now that we have opengl4.6.
but then there was a chicken and egg problem, rpcs3 complained it couldn’t find some devel libs it needed, and if i tried to install those, then i saw i had a package conflict between rpmfusion and normal fedora repos. typically while attempting to compile rpcs3 i saw this:

CMake Error at buildfiles/cmake/FindFFMPEG.cmake:90 (message):
  Could not find libavcodec or libavformat or libavutil or libswscale or

but if i tried to install libavcodec-free-devel (and some other libs too) i had dnf refusing to comply because of conflict. it suggested i use --allowerasing like so:

sudo dnf install libavcodec-free-devel --allowerasing
so dnf said it would remove ffmpeg-libs (and probably lots of other things to which i said yes …) and that immediately killed my kde session and left me with a broken install i had to fix by hand. so i have 1 problem to ask for help and eventualy one warning to share with others.

the warning is : it seems rpmfusion doesn’t play nice with fedora39, there are packages conflicts… beware.

the question is: how can i have a smooth video playback on fedora39 (using mpv) without using rpmfusion ?

Did you try installing ffmpeg-devel?

thank you for the reply. that could well be what i was missing.
since rpcs3 asked specificaly for libavcodec, i searched for that string specificaly with dnf, but in rpmfusion the lib i needed could have been in that package. the name is a bit misleading. maybe i should have searched with dnf provides */libavcodec and that would have shown me ffmpeg-devel indeed. (i’ve just tested it). maybe rpmfusion should package those in the same way base fedora does, like: libavcodec-non-free-devel and so on for the rest of them. instead of putting it in a ffmpeg-devel that encapsulate them.

This might help:

that’s what i followed to install rpmfusion aand the multimedia libs and codecs. the problem was not installing them. the problem was naming convention and packaging unusual decision. as i mentionned above,
i was trying to compile rpcs3, which complained it wanted a specific dev lib. what is the normal reaction to that ?
dnf search <lib rpcs3 wanted> (in that case it was libavcodec). but rpmfusion decided to pack it among other libs into a package called “ffmpeg-libs”… how was i supposed to get the hint about that ? rpmfusion has a bad idea doing that. it should have followed the more traditional ‘libavcodec-nonfree’ naming scheme, or create a group ‘ffmpeg-libs’ yes… but a package encapsulating many libs under a loosely connected name ‘ffmpeg-libs’ ? i don’t think so.
how the user will know what he need is encapsulated in there ? there is a workaround using dnf provides */mylib (as @grumpey mentionned) but all that is unorthodox. since package manager exists, the basic idea is : package-manager search stuff command. and you get returned the name of the package for ‘stuff’ and not package name for ‘something else loosely related’.

I would just build rpcs3 in a container.
I just created a project that does that

If you try it out – let me know if you have any improvement suggestions for the build script

The whole thing is pretty confusing. The rpmfusion devs were not happy at all that Fedora released these “free” versions of ffmpeg, libavformat…etc
As they’re simply subsets of the full packages that rpmfusion offers.
I think there should have been a vote on it – instead of just throwing a monkey wrench into the whole thing.

interesting. i will look at that container script.
thank you for telling and also for letting me know i’m not alone thinking this issue about packaging was confusing.

actually, looking at your script, is it not just automating the compilation ? will it not still require necessary libs to get installed ? if so that bring us back to similar case. what is that “container” thing you’ve mentioned ? is that some sort of portable, standalone build ?

So rpcs3 only has a built-in submodule for x86_64 for ffmpeg some reason.
So I wasn’t sure if I should compile it for aarch64 with the full (rpmfusion) ffmpeg package or not.
In the end I just used the rpmfusion package just to be sure. But I see your point – that sort brings us full circle. Since I can’t manage to Tekken TT2 to fully load on my macbook m1 air (it’s the only game I have) – I can’t how rpcs3 performs.

So how the project works is that it uses the podman api to automate the creation of the podman image (rpcs3_build_env) and the podman container (rpcs3_builder)

Running ./script-podman.py will build the image + container + then run the container.

You then enter the container env with
podman exec -it rpcs3_builder /bin/bash

from there you just run /root/scripts/01-build.rpcs3.sh
to build rpcs3.