Cr8-xyz requires the webrtcsink GStreamer plugin for WebRTC-based pixel streaming. This plugin is not included in standard GStreamer packages and must be built from source.
Install GStreamer 1.22.0+ with required packages:
# Debian/Ubuntu
sudo apt update
sudo apt install \
gstreamer1.0-tools \
gstreamer1.0-plugins-base \
gstreamer1.0-plugins-good \
gstreamer1.0-plugins-bad \
gstreamer1.0-plugins-ugly \
gstreamer1.0-gl \
libgstreamer1.0-dev \
libgstreamer-plugins-base1.0-dev \
libgstreamer-plugins-bad1.0-dev# Install Rust and cargo-c for building Rust-based GStreamer plugins
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env
cargo install cargo-c# Clone the gst-plugins-rs repository
git clone https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs.git
cd gst-plugins-rs
# Build and install the WebRTC plugin (user directory)
cargo cinstall -p gst-plugin-webrtc --prefix=$HOME/.local --releaseAdd to your shell configuration (~/.bashrc or ~/.zshrc):
export GST_PLUGIN_PATH="$HOME/.local/lib/x86_64-linux-gnu/gstreamer-1.0:$GST_PLUGIN_PATH"Reload your shell:
source ~/.zshrc # or ~/.bashrc# Check if webrtcsink is available
gst-inspect-1.0 webrtcsinkThis should display plugin information. If you get "No such element or plugin", the path is incorrect.
If gst-inspect-1.0 webrtcsink returns "No such element or plugin":
-
Verify plugin file exists:
ls -la ~/.local/lib/x86_64-linux-gnu/gstreamer-1.0/libgstrswebrtc.so -
Check GST_PLUGIN_PATH:
echo $GST_PLUGIN_PATH
-
Set correct path:
export GST_PLUGIN_PATH="$HOME/.local/lib/x86_64-linux-gnu/gstreamer-1.0:$GST_PLUGIN_PATH"
If installation fails with permission errors:
# Use full path to cargo with sudo
sudo /home/$USER/.cargo/bin/cargo cinstall -p gst-plugin-webrtc --prefix=/usr --releaseIf build fails, ensure you have the latest Rust toolchain:
rustup update
cargo updateThe WebRTC signaling server is a crucial component that manages peer-to-peer connections between the GStreamer producer (Blender) and consumers (web browsers). The gst-plugins-rs includes a built-in signaling server.
cd gst-plugins-rs/signalling# Run the signaling server on port 8443 (default)
cargo run --bin gst-webrtc-signalling-serverThe server should display output indicating it's listening on ws://127.0.0.1:8443.
The signaling server must remain running for WebRTC connections to work. Run it in a separate terminal or as a background process.
Once installed and verified, the plugin will be automatically used by:
- Custom Blender Build - The modified Blender with streaming capabilities
- WebRTC Streaming Pipeline - Processing viewport frames for web streaming
- Frontend Connection - Received by
@dr33m/gstwebrtc-apiin the browser
- The
webrtcsinkplugin handles WebRTC encoding and signaling internally - Compatible with GStreamer 1.22+ (Debian 12+, Ubuntu 22.04+)
- Installation is permanent unless manually removed
- Environment variable must be set in each new shell session