meetecho / simple-whep-client

Simple WHEP Client (based on GStreamer's webrtcbin)
GNU General Public License v3.0
6 stars 2 forks source link

Required gstreamer plugin 'x264' not found #4

Closed mpisat closed 1 year ago

mpisat commented 1 year ago

Fedora 38 is the only OS that I can find Gstreamer 1.22 and full set of libs. However, it only comes with openh264.


Simple WHEP client

WHEP endpoint: https://fr.hidden.com/api/whip2 Bearer Token: hidden Trickle ICE: no (candidates in SDP answer) Auto STUN/TURN: no STUN server: (none) TURN server: (none) [FATAL] [src/whep-client.c:whep_check_plugins:287] Required gstreamer plugin 'x264' not found

lminiero commented 1 year ago

I guess that demanding x264 to be there is indeed silly, so it might be a good idea get rid of it. Does it work for you when removing or commenting this line here? https://github.com/meetecho/simple-whip-client/blob/main/src/whip-client.c#L272 That said, I'm on Fedor (37) and I do have the x264 plugin in there: I think it's in the bad plugins list.

mpisat commented 1 year ago

If I disable x264 then

(whep-client:1007): libsoup-ERROR **: 13:37:42.296: libsoup2 symbols detected. Using libsoup2 and libsoup3 in the same process is not supported. Trace/breakpoint trap (core dumped)

and I tried removing libsoup3 but it also removes bad plugins, then I can't compile due to lack of webrtc plugin.

lminiero commented 1 year ago

I guess gstreamer has started using libsoup3, while this client uses libsoup2. I have no immediate plan to migrate to libsoup3, to be honest (also considering I'd probably need to still support libsoup2 for systems that haven't updated to it yet). In case you're familiar with that library and are willing to submit a patch, I'd be happy to review.

mpisat commented 1 year ago

I will try Fedora 37 (in docker) today since it uses older Gstreamer and probably not using libsoup3. Since it works for you, maybe it can work for me as well.

mpisat commented 1 year ago

I used this Dockerfile

FROM fedora:37

RUN dnf update -y && \ dnf install -y git yasm flex bison libtool automake gstreamer1-devel gstreamer1-plugins-base-devel \ gstreamer1-plugins- gstreamer1-plugins-bad-free-devel \ gstreamer1-vaapi-devel gstreamer1- libnice-devel libsoup-devel json-glib-devel

RUN git clone https://github.com/meetecho/simple-whep-client.git RUN cd simple-whep-client && make

Gstreamer is 1.20.x and all plugins are installed. Fedora version 37.

[FATAL] [src/whep-client.c:whep_check_plugins:287] Required gstreamer plugin 'x264' not found [FATAL] [src/whep-client.c:whep_check_plugins:287] Required gstreamer plugin 'nice' not found

Because, gst-inspect-1.0 doesn't have x264 or nice, it does have openh264 though. I got libnice and libnice-devel installed.

lminiero commented 1 year ago

Yeah, apparently I have that module because I use the rpmfusion repos too:

dnf provides /usr/lib64/gstreamer-1.0/libgstx264.so
[...]
gstreamer1-plugins-ugly-1:1.20.3-2.fc37.x86_64 : GStreamer 1.0 streaming media
                                               : framework "ugly" plug-ins
Repo        : rpmfusion-free
Matched from:
Filename    : /usr/lib64/gstreamer-1.0/libgstx264.so

gstreamer1-plugins-ugly-1:1.20.5-1.fc37.x86_64 : GStreamer 1.0 streaming media
                                               : framework "ugly" plug-ins
Repo        : @System
Matched from:
Filename    : /usr/lib64/gstreamer-1.0/libgstx264.so

gstreamer1-plugins-ugly-1:1.20.5-1.fc37.x86_64 : GStreamer 1.0 streaming media
                                               : framework "ugly" plug-ins
Repo        : rpmfusion-free-updates
Matched from:
Filename    : /usr/lib64/gstreamer-1.0/libgstx264.so

so it's indeed not part of the main Fedora repos (neither on 38 nor 37). I always enable rpmfusion so I never notice anything particular is missing. Anyway, as I've said the x264 requirement is probably unneeded, so I'll remove it.

lminiero commented 1 year ago

I removed the requirement for x264 in both the WHIP and WHEP clients.