Error on gst-meet playing video on jitsi meet

Hi,

Im getting bellow error when try to play youtube video on jitsi conference using gst-meet .

Use below command to send youtube to conference.

YOUTUBE_URL="https://www.youtube.com/watch?v=vjV_2Ri2rfE"
gst-meet --web-socket-url=wss://your.jitsi.domain/xmpp-websocket \
         --room-name=roomname \
         --video-codec=vp9 \
         --send-pipeline="curlhttpsrc location=\"$(youtube-dl -g $YOUTUBE_URL -f 'bestaudio[acodec=opus]')\" ! queue ! matroskademux name=audiodemux
                          curlhttpsrc location=\"$(youtube-dl -g $YOUTUBE_URL -f 'bestvideo[vcodec=vp9]')\" ! queue ! matroskademux name=videodemux
                          audiodemux.audio_0 ! queue ! clocksync name=audio
                          videodemux.video_0 ! queue ! clocksync name=video"

Error I’m getting as below. could you please help on this? @jbg

2022-08-05T06:31:26.408587Z INFO Connecting XMPP WebSocket to wss://xxxxxx.xxx/xmpp-websocket

2022-08-05T06:31:26.461687Z INFO Connected XMPP WebSocket

2022-08-05T06:31:26.466989Z INFO Logged in with PLAIN

2022-08-05T06:31:26.468525Z INFO My JID: admin@xxxxxx.xxx/fx4NnrXD

2022-08-05T06:31:26.520432Z WARN Remote DTLS fingerprint (verification not implemented yet): Fingerprint { hash: Sha_256, setup: Some(Actpass), value: [200, 71, 222, 201, 142, 94, 152, 242, 203, 134, 208, 10, 186, 118, 248, 108, 34, 110, 114, 174, 41, 219, 4, 160, 74, 84, 17, 38, 143, 9, 48, 202] }

2022-08-05T06:31:26.524682Z ERROR error=Failed to create element from factory name

2022-08-05T06:31:26.524809Z ERROR fatal (in read loop): Failed to create element from factory name

Ping @jbg :slight_smile:

1 Like

This means GStreamer was unable to make one of the elements in your pipeline (or one of the elements gst-meet uses internally).

If you set the GST_DEBUG environment variable to a suitable value (3 or 4 is usually enough, any higher is extremely verbose) then GStreamer should tell you which element it was unable to create.

Most likely it’s a missing GStreamer plugin (usually named gst-plugins-* on most Linux distributions).

Thank for the reply.

I was able to extract logs. But in ubuntu server * libnice was already installed. any idea ?

0:00:01.232936500 20900 0x7f5b0c0354c0 LOG GST_ELEMENT_FACTORY gstelementfactory.c:682:gst_element_factory_make_with_properties: gstelementfactory: make “nicesrc”

0:00:01.233012518 20900 0x7f5b0c0354c0 LOG GST_ELEMENT_FACTORY gstelementfactory.c:145:gst_element_factory_find: no such element factory “nicesrc”

0:00:01.233087466 20900 0x7f5b0c0354c0 WARN GST_ELEMENT_FACTORY gstelementfactory.c:701:gst_element_factory_make_with_properties: no such element factory “nicesrc”!

The version of libnice packaged in your Ubuntu release may have been built for an older version of GStreamer than what you’re using.

22.04 is the first Ubuntu release I would expect to have GStreamer packages that would work with gst-meet (all previous Ubuntu releases packaged versions of GStreamer that didn’t yet support necessary WebRTC features). So if you’re using anything older than 22.04, you will need to build everything GStreamer-related from source, or find backports (the official backport repositories may have packages), or use a container or similar.

Im using ubunut 22 only. Please help on this.

Distributor ID: Ubuntu
Description: Ubuntu 22.04 LTS
Release: 22.04
Codename: jammy

I don’t have any Ubuntu server to test on, but I’ll try to run a test in an Ubuntu Jammy container and see if I can replicate the issue there.

ok thank you so much!

@jbg could you able to check this issue ?

Back at work today and tested this out, I am able to use gst-meet in an Ubuntu 22.04 container successfully, so there isn’t any incompatibility with Ubuntu’s packaged gstreamer or libnice.

What do you get if you run this command? (Might need to apt install gstreamer1.0-tools first.)

gst-inspect-1.0 nicesrc

Im getting below message

No such element or plugin 'nicesrc'

Maybe you didn’t install the gstreamer1.0-nice package which contains that element?

I think i missed that packages. So just now installed nice package and out put like this


Factory Details:
  Rank                     none (0)
  Long-name                ICE source
  Klass                    Source
  Description              Interactive UDP connectivity establishment
  Author                   Dafydd Harries <dafydd.harries@collabora.co.uk>

Plugin Details:
  Name                     nice
  Description              Interactive UDP connectivity establishment
  Filename                 /usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgstnice.so
  Version                  0.1.18
  License                  LGPL
  Source module            libnice
  Binary package           libnice
  Origin URL               https://nice.freedesktop.org/

GObject
 +----GInitiallyUnowned
       +----GstObject
             +----GstElement
                   +----GstBaseSrc
                         +----GstPushSrc
                               +----GstNiceSrc

Pad Templates:
  SRC template: 'src'
    Availability: Always
    Capabilities:
      ANY

Element has no clocking capabilities.
Element has no URI handling capabilities.

Pads:
  SRC: 'src'
    Pad Template: 'src'

Element Properties:
  agent               : The NiceAgent this source is bound to
                        flags: readable, writable
                        Object of type "NiceAgent"
  blocksize           : Size in bytes to read per buffer (-1 = default)
                        flags: readable, writable
                        Unsigned Integer. Range: 0 - 4294967295 Default: 4096 
  component           : The ID of the component to read from
                        flags: readable, writable
                        Unsigned Integer. Range: 0 - 4294967295 Default: 0 
  do-timestamp        : Apply current stream time to buffers
                        flags: readable, writable
                        Boolean. Default: true
  name                : The name of the object
                        flags: readable, writable, 0x2000
                        String. Default: "nicesrc0"
  num-buffers         : Number of buffers to output before sending EOS (-1 = unlimited)
                        flags: readable, writable

Thanks a lot @jbg . I was able to pipe youtube video into jitsi conference. :star_struck:

2 Likes