This message was deleted.
# sdk-rust
s
This message was deleted.
πŸ’ͺ 3
πŸ”₯ 5
e
damn that's super nice, didn't know livekitwebrtcsink was merged!
do you know which webrtc implementation is being used? do you get echo cancellation/etc on the audio streams?
a
I don't know what features it supports, but it uses livekit protocol with the gst webrtc client: https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/blob/main/net/webrtc/src/livekit_signaller/imp.rs It's unreleased as of yet, but merged a couple weeks ago. I compiled the plugin against 1.22.5, and it works great on Linux, but doesn't work quite yet on my M1 Mac -- I doubt it work on X86 Macs either since I think it's a linking issue
I'm so stoked for this. I'm about to rewrite one of my project features to use 1 participant with ~ 20 video tracks each, rather than my previous method that had a bunch of webrtc clients stepping on each other ;-)
In case anyone's interested, here are the docs on it. It says it support
GLMemory
and
CUDAMemory
, but I haven't tried those out yet
q
It uses GStreamer's implementation
it doesn't do any pre/post-processing by itself
if you want AEC, there is the GStreamer webrtcdsp/webrtcechoprobe element combination that does this ( using the code from Google's libwebrtc)
FYI, it's been released as part of gst-plugins-rs 0.11, the rust plugins follow a separate release schedule than the rest of GStreamer (they follow the gtk-rs rust bindings schedule)
πŸ”₯ 1
e
that's awesome!
is there any way through gstreamer to have access to the RTCP sender/receiver reports?
q
@enough-zebra-80131 yes.. you can do a pad probe and catch the packets.. what information are you looking for ?
e
I'm using the sender reports to be able to do a/v sync between the audio/video tracks as I'm rendering them somewhere else
do you know if there's another way to do the a/v sync of separate tracks?
q
Are you receiving both together? The GStreamer timestamps that come out of webrtcsink should already have been synchronized
Webrtcbin (inside webrtcsink) handles the rtcp and does the av sync
e
I'm not using gstreamer yet, I'm using libwebrtc for now and evaluating if gstreamer is a better option
q
Or do you have streams received outside of GStreamer too ?
e
I see, yeah that's nice
nope, if I use gstreamer all streams would be received through gstreamer
very compelling so far
q
So the GStreamer timestamps should all be on the same timeline already
e
q: I'm using hw decoding (nvdec) and I wonder if I could use gstreamer's implementation of nvdec to output a
CUDAMemory
surface - would it be able to use nvdec to decode svc streams (vp9, av1)?
q
If the hardware supports it, I think it should work
βœ… 1
e
I'll run some tests πŸ‘€
i
Can anyone help me install the gstreamer plugin? From what I gather I would need to build it myself for OSX? I cloned the repo: https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs And have tried following the instructions for Building however I can't determine what I need to build to make the new elements available.
Copy code
cargo cbuild -p gst-plugin-rswebrtc
Error: CliError { error: Some(package(s) `gst-plugin-rswebrtc` not found in workspace `/gst-plugins-rs`), exit_code: 101 }
#rustNewb
e
Copy code
cargo cbuild -p gst-plugin-webrtc
i
ah ok so I did that but it didn’t seem to be available. Let me try again.
e
notice that it's
gst-plugin-webrtc
not
gst-plugin-rswebrtc
i
Right, I am just not seeing the
livekitwebrtcsink
element after running that one.
Copy code
└─$ cargo cbuild -p gst-plugin-webrtc
    Skipping git submodule `<https://github.com/gtk-rs/gir>` due to update strategy in .gitmodules
    Skipping git submodule `<https://github.com/gtk-rs/gir-files>` due to update strategy in .gitmodules
    Skipping git submodule `<https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git>` due to update strategy in .gitmodules
    Skipping git submodule `<https://github.com/gtk-rs/gir>` due to update strategy in .gitmodules
    Skipping git submodule `<https://github.com/gtk-rs/gir-files>` due to update strategy in .gitmodules
    Skipping git submodule `<https://github.com/gtk-rs/gir>` due to update strategy in .gitmodules
    Skipping git submodule `<https://github.com/gtk-rs/gir-files>` due to update strategy in .gitmodules
    Finished dev [optimized + debuginfo] target(s) in 0.85s
~/playground/gst-plugins-rs [main]
└─$ GST_PLUGIN_PATH="target/aarch64-apple-darwin/debug:$GST_PLUGIN_PATH" gst-inspect-1.0 livekitwebrtcsink
thread '<unnamed>' panicked at /Users/andresgarcia/.cargo/git/checkouts/gstreamer-rs-79e52a2d27eb91a3/4b3d9f5/gstreamer/src/auto/plugin.rs:9:1:
assertion failed: ::glib::types::instance_of::<Self>(ptr as *const _)
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
thread '<unnamed>' panicked at /Users/andresgarcia/.cargo/git/checkouts/gstreamer-rs-79e52a2d27eb91a3/4b3d9f5/gstreamer/src/log.rs:577:1:
Unable to find `DebugCategory` with name GST_PLUGIN_LOADING
fatal runtime error: failed to initiate panic, error 5
thread '<unnamed>' panicked at /Users/andresgarcia/.cargo/git/checkouts/gstreamer-rs-79e52a2d27eb91a3/4b3d9f5/gstreamer/src/auto/plugin.rs:9:1:
assertion failed: ::glib::types::instance_of::<Self>(ptr as *const _)
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
thread '<unnamed>' panicked at /Users/andresgarcia/.cargo/git/checkouts/gstreamer-rs-79e52a2d27eb91a3/4b3d9f5/gstreamer/src/log.rs:577:1:
Unable to find `DebugCategory` with name GST_PLUGIN_LOADING
fatal runtime error: failed to initiate panic, error 5
thread '<unnamed>' panicked at /Users/andresgarcia/.cargo/git/checkouts/gstreamer-rs-79e52a2d27eb91a3/4b3d9f5/gstreamer/src/auto/plugin.rs:9:1:
assertion failed: ::glib::types::instance_of::<Self>(ptr as *const _)
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
thread '<unnamed>' panicked at /Users/andresgarcia/.cargo/git/checkouts/gstreamer-rs-79e52a2d27eb91a3/4b3d9f5/gstreamer/src/log.rs:577:1:
Unable to find `DebugCategory` with name GST_PLUGIN_LOADING
fatal runtime error: failed to initiate panic, error 5
thread '<unnamed>' panicked at /Users/andresgarcia/.cargo/git/checkouts/gstreamer-rs-79e52a2d27eb91a3/4b3d9f5/gstreamer/src/auto/plugin.rs:9:1:
assertion failed: ::glib::types::instance_of::<Self>(ptr as *const _)
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
thread '<unnamed>' panicked at /Users/andresgarcia/.cargo/git/checkouts/gstreamer-rs-79e52a2d27eb91a3/4b3d9f5/gstreamer/src/log.rs:577:1:
Unable to find `DebugCategory` with name GST_PLUGIN_LOADING
fatal runtime error: failed to initiate panic, error 5
No such element or plugin 'livekitwebrtcsink'
maybe the issue is with
GST_PLUGIN_PATH
πŸ€” because I re-ran and it appears to compile the livekit stuff
e
did you install gstreamer from the installer packages?
i
yes πŸ€” (if we mean the same thing by installer packages)
Copy code
which gst-inspect-1.0
/Library/Frameworks/GStreamer.framework/Commands/gst-inspect-1.0
Like I didn't use Brew
e
try
Copy code
export DYLD_FALLBACK_LIBRARY_PATH="/Library/Frameworks/GStreamer.framework/Libraries"
i
seems like I have more errors now πŸ€”
Copy code
└─$ export DYLD_FALLBACK_LIBRARY_PATH="/Library/Frameworks/GStreamer.framework/Libraries"
~/playground/gst-plugins-rs [main]
└─$ GST_PLUGIN_PATH="target/aarch64-apple-darwin/debug:$GST_PLUGIN_PATH" gst-inspect-1.0 livekitwebrtcsink
thread '<unnamed>' panicked at /Users/andresgarcia/.cargo/git/checkouts/gstreamer-rs-79e52a2d27eb91a3/4b3d9f5/gstreamer/src/auto/plugin.rs:9:1:
assertion failed: ::glib::types::instance_of::<Self>(ptr as *const _)
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
thread '<unnamed>' panicked at /Users/andresgarcia/.cargo/git/checkouts/gstreamer-rs-79e52a2d27eb91a3/4b3d9f5/gstreamer/src/log.rs:577:1:
Unable to find `DebugCategory` with name GST_PLUGIN_LOADING
fatal runtime error: failed to initiate panic, error 5
thread '<unnamed>' panicked at /Users/andresgarcia/.cargo/git/checkouts/gstreamer-rs-79e52a2d27eb91a3/4b3d9f5/gstreamer/src/auto/plugin.rs:9:1:
assertion failed: ::glib::types::instance_of::<Self>(ptr as *const _)
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
thread '<unnamed>' panicked at /Users/andresgarcia/.cargo/git/checkouts/gstreamer-rs-79e52a2d27eb91a3/4b3d9f5/gstreamer/src/log.rs:577:1:
Unable to find `DebugCategory` with name GST_PLUGIN_LOADING
fatal runtime error: failed to initiate panic, error 5
thread '<unnamed>' panicked at /Users/andresgarcia/.cargo/git/checkouts/gstreamer-rs-79e52a2d27eb91a3/4b3d9f5/gstreamer/src/auto/plugin.rs:9:1:
assertion failed: ::glib::types::instance_of::<Self>(ptr as *const _)
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
thread '<unnamed>' panicked at /Users/andresgarcia/.cargo/git/checkouts/gstreamer-rs-79e52a2d27eb91a3/4b3d9f5/gstreamer/src/log.rs:577:1:
Unable to find `DebugCategory` with name GST_PLUGIN_LOADING
fatal runtime error: failed to initiate panic, error 5
thread '<unnamed>' panicked at /Users/andresgarcia/.cargo/git/checkouts/gstreamer-rs-79e52a2d27eb91a3/4b3d9f5/gstreamer/src/auto/plugin.rs:9:1:
assertion failed: ::glib::types::instance_of::<Self>(ptr as *const _)
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
thread '<unnamed>' panicked at /Users/andresgarcia/.cargo/git/checkouts/gstreamer-rs-79e52a2d27eb91a3/4b3d9f5/gstreamer/src/log.rs:577:1:
Unable to find `DebugCategory` with name GST_PLUGIN_LOADING
fatal runtime error: failed to initiate panic, error 5
thread '<unnamed>' panicked at /Users/andresgarcia/.cargo/git/checkouts/gstreamer-rs-79e52a2d27eb91a3/4b3d9f5/gstreamer/src/auto/plugin.rs:9:1:
assertion failed: ::glib::types::instance_of::<Self>(ptr as *const _)
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
thread '<unnamed>' panicked at /Users/andresgarcia/.cargo/git/checkouts/gstreamer-rs-79e52a2d27eb91a3/4b3d9f5/gstreamer/src/log.rs:577:1:
Unable to find `DebugCategory` with name GST_PLUGIN_LOADING
fatal runtime error: failed to initiate panic, error 5
thread '<unnamed>' panicked at /Users/andresgarcia/.cargo/git/checkouts/gstreamer-rs-79e52a2d27eb91a3/4b3d9f5/gstreamer/src/auto/plugin.rs:9:1:
assertion failed: ::glib::types::instance_of::<Self>(ptr as *const _)
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
thread '<unnamed>' panicked at /Users/andresgarcia/.cargo/git/checkouts/gstreamer-rs-79e52a2d27eb91a3/4b3d9f5/gstreamer/src/log.rs:577:1:
Unable to find `DebugCategory` with name GST_PLUGIN_LOADING
fatal runtime error: failed to initiate panic, error 5
thread '<unnamed>' panicked at /Users/andresgarcia/.cargo/git/checkouts/gstreamer-rs-79e52a2d27eb91a3/4b3d9f5/gstreamer/src/auto/plugin.rs:9:1:
assertion failed: ::glib::types::instance_of::<Self>(ptr as *const _)
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
thread '<unnamed>' panicked at /Users/andresgarcia/.cargo/git/checkouts/gstreamer-rs-79e52a2d27eb91a3/4b3d9f5/gstreamer/src/log.rs:577:1:
Unable to find `DebugCategory` with name GST_PLUGIN_LOADING
fatal runtime error: failed to initiate panic, error 5
thread '<unnamed>' panicked at /Users/andresgarcia/.cargo/git/checkouts/gstreamer-rs-79e52a2d27eb91a3/4b3d9f5/gstreamer/src/auto/plugin.rs:9:1:
assertion failed: ::glib::types::instance_of::<Self>(ptr as *const _)
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
thread '<unnamed>' panicked at /Users/andresgarcia/.cargo/git/checkouts/gstreamer-rs-79e52a2d27eb91a3/4b3d9f5/gstreamer/src/log.rs:577:1:
Unable to find `DebugCategory` with name GST_PLUGIN_LOADING
fatal runtime error: failed to initiate panic, error 5
No such element or plugin 'livekitwebrtcsink'
e
Copy code
export GST_PLUGIN_PATH=target/debug
try avoiding cbuild as well
Copy code
cargo build -p gst-plugin-webrtc
i
ok let me try, thanks again btw!
q
Cargo should just work
Try to check if the .so file exists and you can do
gst-inspect-1.0 /path/to/plugin.so
Where .so is .dylib on mac I guess
i
Starting over, removing target folder 1.
cargo build -p gst-plugin-webrtc
2.
gst-inspect-1.0 target/debug/libgstrswebrtc.dylib
(maybe we want a different file in here?) outputs:
Copy code
thread '<unnamed>' panicked at /Users/andresgarcia/.cargo/git/checkouts/gstreamer-rs-79e52a2d27eb91a3/4b3d9f5/gstreamer/src/auto/plugin.rs:9:1:
assertion failed: ::glib::types::instance_of::<Self>(ptr as *const _)
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
thread '<unnamed>' panicked at /Users/andresgarcia/.cargo/git/checkouts/gstreamer-rs-79e52a2d27eb91a3/4b3d9f5/gstreamer/src/log.rs:577:1:
Unable to find `DebugCategory` with name GST_PLUGIN_LOADING
fatal runtime error: failed to initiate panic, error 5
thread '<unnamed>' panicked at /Users/andresgarcia/.cargo/git/checkouts/gstreamer-rs-79e52a2d27eb91a3/4b3d9f5/gstreamer/src/auto/plugin.rs:9:1:
assertion failed: ::glib::types::instance_of::<Self>(ptr as *const _)
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
thread '<unnamed>' panicked at /Users/andresgarcia/.cargo/git/checkouts/gstreamer-rs-79e52a2d27eb91a3/4b3d9f5/gstreamer/src/log.rs:577:1:
Unable to find `DebugCategory` with name GST_PLUGIN_LOADING
fatal runtime error: failed to initiate panic, error 5
thread '<unnamed>' panicked at /Users/andresgarcia/.cargo/git/checkouts/gstreamer-rs-79e52a2d27eb91a3/4b3d9f5/gstreamer/src/auto/plugin.rs:9:1:
assertion failed: ::glib::types::instance_of::<Self>(ptr as *const _)
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
thread '<unnamed>' panicked at /Users/andresgarcia/.cargo/git/checkouts/gstreamer-rs-79e52a2d27eb91a3/4b3d9f5/gstreamer/src/log.rs:577:1:
Unable to find `DebugCategory` with name GST_PLUGIN_LOADING
fatal runtime error: failed to initiate panic, error 5
thread '<unnamed>' panicked at /Users/andresgarcia/.cargo/git/checkouts/gstreamer-rs-79e52a2d27eb91a3/4b3d9f5/gstreamer/src/auto/plugin.rs:9:1:
assertion failed: ::glib::types::instance_of::<Self>(ptr as *const _)
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
thread '<unnamed>' panicked at /Users/andresgarcia/.cargo/git/checkouts/gstreamer-rs-79e52a2d27eb91a3/4b3d9f5/gstreamer/src/log.rs:577:1:
Unable to find `DebugCategory` with name GST_PLUGIN_LOADING
fatal runtime error: failed to initiate panic, error 5
thread '<unnamed>' panicked at /Users/andresgarcia/.cargo/git/checkouts/gstreamer-rs-79e52a2d27eb91a3/4b3d9f5/gstreamer/src/auto/plugin.rs:9:1:
assertion failed: ::glib::types::instance_of::<Self>(ptr as *const _)
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
thread '<unnamed>' panicked at /Users/andresgarcia/.cargo/git/checkouts/gstreamer-rs-79e52a2d27eb91a3/4b3d9f5/gstreamer/src/log.rs:577:1:
Unable to find `DebugCategory` with name GST_PLUGIN_LOADING
fatal runtime error: failed to initiate panic, error 5
zsh: abort      gst-inspect-1.0 target/debug/libgstrswebrtc.dylib
e
which rustc version are you running?
i
Copy code
rustc --version
rustc 1.73.0 (cc66ad468 2023-10-03)
q
It looks like a Rust binding error
did you try doing a git pull? (or maybe it's a wrong rust bindings version or something like that).. if you do "gst-inspect-1.0" do you get all of hte other GStreamer plugins ?
i
yes
gst-inspect-1.0
by itself works and outputs standard plugins
I cloned today so I am on main, I just pulled and there are no changes πŸ€”
q
"Unable to find
DebugCategory
with name GST_PLUGIN_LOADING" sounds like a GStreamer install problem
i
let me uninstall and reinstall gstreamer
q
did you try something like
gst-inspect-1.0 webrtcbin
to check if the C plugins load correctly ?
i
Looks correct to me πŸ€”
q
indeed
i
I am assuming this version would be ok right? I updated today.
Copy code
gst-inspect-1.0 --version
gst-inspect-1.0 version 1.22.6
GStreamer 1.22.6
q
yeah, it'S the latest release, it should work
i
Ok this might be telling, I removed all gstreamer stuff from my machine and re-installed from the binaries.
Copy code
The following warnings were emitted during compilation:

warning: `PKG_CONFIG_ALLOW_SYSTEM_CFLAGS="1" "pkg-config" "--libs" "--cflags" "gstreamer-1.0" "gstreamer-1.0 >= 1.20"` did not exit successfully: exit status: 1

error: failed to run custom build command for `gstreamer-sys v0.22.0 (<https://gitlab.freedesktop.org/gstreamer/gstreamer-rs#4b3d9f58>)`

Caused by:
  process didn't exit successfully: `/Users/andresgarcia/playground/gst-plugins-rs/target/debug/build/gstreamer-sys-9527a455f4c7e342/build-script-build` (exit status: 1)
  --- stdout
  cargo:rerun-if-env-changed=GSTREAMER_1.0_NO_PKG_CONFIG
  cargo:rerun-if-env-changed=PKG_CONFIG_aarch64-apple-darwin
  cargo:rerun-if-env-changed=PKG_CONFIG_aarch64_apple_darwin
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG
  cargo:rerun-if-env-changed=PKG_CONFIG
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH_aarch64-apple-darwin
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH_aarch64_apple_darwin
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_PATH
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_aarch64-apple-darwin
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_aarch64_apple_darwin
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_LIBDIR
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_aarch64-apple-darwin
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_aarch64_apple_darwin
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_SYSROOT_DIR
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR
  cargo:warning=`PKG_CONFIG_ALLOW_SYSTEM_CFLAGS="1" "pkg-config" "--libs" "--cflags" "gstreamer-1.0" "gstreamer-1.0 >= 1.20"` did not exit successfully: exit status: 1
  error: could not find system library 'gstreamer-1.0' required by the 'gstreamer-sys' crate

  --- stderr
  Package gstreamer-1.0 was not found in the pkg-config search path.
  Perhaps you should add the directory containing `gstreamer-1.0.pc'
  to the PKG_CONFIG_PATH environment variable
  No package 'gstreamer-1.0' found
  Package gstreamer-1.0 was not found in the pkg-config search path.
  Perhaps you should add the directory containing `gstreamer-1.0.pc'
  to the PKG_CONFIG_PATH environment variable
  No package 'gstreamer-1.0' found
I think before I had some plugins installed through homebrew, it seems like the rust-sdk might require some of the other plugins?
e
make sure you have what you need in your paths:
Copy code
# Tell pkg-config where to find the .pc files
$ export PKG_CONFIG_PATH=/Library/Frameworks/GStreamer.framework/Versions/1.0/lib/pkgconfig

# We will use the pkg-config provided by the GStreamer.framework
$ export PATH=/Library/Frameworks/GStreamer.framework/Versions/1.0/bin:$PATH
from here: https://gstreamer.freedesktop.org/documentation/installing/on-mac-osx.html?gi-language=c
on my mac I need to set the DYLD_FALLBACK_LIBRARY_PATH to what I sent you before, but my environment may be a bit off
i
Great success!
Copy code
.... SOME WARNIGNS ... 

Factory Details:
  Rank                     none (0)
  Long-name                LiveKitWebRTCSink
  Klass                    Sink/Network/WebRTC
  Description              WebRTC sink with LiveKit signaller
  Author                   Olivier CrΓͺte <olivier.crete@collabora.com>
  Documentation            <https://gstreamer.freedesktop.org/documentation/rswebrtc/livekitwebrtcsink.html>

Plugin Details:
  Name                     rswebrtc
  Description              GStreamer plugin for high level WebRTC elements and a simple signaling server
  Filename                 target/debug/libgstrswebrtc.dylib
  Version                  0.12.0-alpha.1-a8205d5b
  License                  MPL-2.0
  Source module            gst-plugin-webrtc
  Documentation            <https://gstreamer.freedesktop.org/documentation/rswebrtc/>
  Source release date      2023-11-07
  Binary package           gst-plugin-webrtc
  Origin URL               <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs>

GObject
 +----GInitiallyUnowned
       +----GstObject
             +----GstElement
                   +----GstBin
                         +----GstBaseWebRTCSink
                               +----GstLiveKitWebRTCSink
πŸ™Œ 1
I did not need to set
DYLD_FALLBACK_LIBRARY_PATH
but I was missing the other exports/they were not set correctly.
sorry for hijacking this thread looking back might have been better for me to create a new one πŸ™ˆ
Do either of you have a pipeline where you pass in audio as well by chance? This is my current pipeline:
Copy code
gst-launch-1.0 autovideosrc ! video/x-raw,framerate=30/1,width=1280,height=720 ! queue ! \
  livekitwebrtcsink signaller::ws-url=<ws://127.0.0.1:7880> signaller::api-key=devkey signaller::secret-key=secret signaller::room-name=test
Actually I think I got it:
Copy code
gst-launch-1.0 autovideosrc ! videoconvert ! video/x-raw,framerate=30/1,width=1280,height=720 ! queue ! \
    livekitwebrtcsink name=webrtc_sink signaller::ws-url=<ws://127.0.0.1:7880> signaller::api-key=devkey signaller::secret-key=secret signaller::room-name=test \
    autoaudiosrc ! queue ! webrtc_sink.
q
Yep, exactly
πŸ™ 1