feat: add PipeWire screen and system audio capture (M2)

Capture the Wayland desktop via xdg-desktop-portal + PipeWire using
go2tv.app/screencast (MIT), and stream it to OBS:
- internal/capture: Capture/FrameSource/AudioSource interfaces and the
  PipeWire backend (BGRA frames at monitor resolution, S16 48 kHz stereo
  system audio)
- protocol: EncodeBGRA fast path producing 4:2:0 YCbCr JPEGs
- cmd: --source screen|pattern, --audio, --stream-index flags; real
  capture feeds the existing sender
- share one wall-clock reference between the audio and video loops so
  OBS receives aligned A/V timestamps (avoids multi-second latency)

Verified end-to-end: real desktop at 30 fps renders in OBS with
sub-second latency.
This commit is contained in:
2026-09-18 19:19:22 +01:00
parent b6e7485786
commit 0cb96b5792
7 changed files with 489 additions and 102 deletions
+5 -1
View File
@@ -2,9 +2,13 @@ module teleportfling
go 1.26.0
require github.com/schollz/peerdiscovery v1.7.6
require (
github.com/schollz/peerdiscovery v1.7.6
go2tv.app/screencast v0.0.0-20260807191623-4cba6136251a
)
require (
github.com/godbus/dbus/v5 v5.1.0 // indirect
golang.org/x/net v0.59.0 // indirect
golang.org/x/sys v0.48.0 // indirect
)