updated to ubuntu 26
This commit is contained in:
@@ -4,14 +4,15 @@ GStreamer WebRTC Agent for CSS Streaming
|
||||
|
||||
Two tracks published to Cloudflare Calls:
|
||||
- Video: ximagesrc (Xwayland :99) → VP8 → webrtcbin
|
||||
- Game audio: pulsesrc → Opus → webrtcbin
|
||||
- Game audio: pipewiresrc → Opus → webrtcbin
|
||||
|
||||
CSS renders via Wine Wayland driver → Weston (Vulkan/DXVK) → Xwayland → X11
|
||||
ximagesrc captures from Xwayland X11 display :99
|
||||
|
||||
Dependencies:
|
||||
apt: python3-gst-1.0 gstreamer1.0-plugins-bad gstreamer1.0-plugins-good
|
||||
gstreamer1.0-plugins-ugly gstreamer1.0-libav xdotool weston xwayland
|
||||
gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-pipewire
|
||||
xdotool weston xwayland wireplumber pipewire pipewire-pulse
|
||||
pip: requests websockets
|
||||
"""
|
||||
|
||||
@@ -109,19 +110,26 @@ class CSSStreamAgent:
|
||||
|
||||
def build_pipeline(self):
|
||||
pipeline_str = (
|
||||
# Video: ximagesrc from Xwayland display → VP8
|
||||
# Video: ximagesrc → convert → scale → rate-enforce → VP8
|
||||
# videoconvert must come before caps negotiation;
|
||||
# videoscale enforces width/height; videorate enforces framerate.
|
||||
f'ximagesrc display-name={DISPLAY} use-damage=0 ! '
|
||||
f'video/x-raw,framerate={CAP_FPS}/1,width={CAP_W},height={CAP_H} ! '
|
||||
f'videoconvert ! '
|
||||
f'videoscale ! '
|
||||
f'videorate ! '
|
||||
f'video/x-raw,framerate={CAP_FPS}/1,width={CAP_W},height={CAP_H} ! '
|
||||
f'vp8enc deadline=1 target-bitrate=1500000 keyframe-max-dist=60 '
|
||||
f'error-resilient=partitions lag-in-frames=0 ! '
|
||||
f'rtpvp8pay pt=96 ! '
|
||||
f'application/x-rtp,media=video,encoding-name=VP8,payload=96 ! '
|
||||
f'webrtcbin. '
|
||||
|
||||
# Game audio: pulsesrc → Opus
|
||||
f'pulsesrc ! '
|
||||
f'audio/x-raw,rate=48000,channels=2 ! '
|
||||
# Game audio: pipewiresrc → Opus
|
||||
# pipewiresrc is the native PipeWire GStreamer source (Ubuntu 24+/26).
|
||||
# It connects to the default audio output monitor via PipeWire directly,
|
||||
# avoiding the PulseAudio compatibility layer entirely.
|
||||
f'pipewiresrc ! '
|
||||
f'audio/x-raw,format=F32LE,rate=48000,channels=2 ! '
|
||||
f'audioconvert ! '
|
||||
f'opusenc ! '
|
||||
f'rtpopuspay pt=97 ! '
|
||||
|
||||
Reference in New Issue
Block a user