From ed46048561645ddd528a29b9dd64f5832e6bfa5a Mon Sep 17 00:00:00 2001 From: s-ol Date: Wed, 19 Jun 2024 17:26:38 +0200 Subject: add webrtc wrapper around gstreamer, web client --- virtual-programs/web/webrtc.folk | 199 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 199 insertions(+) create mode 100644 virtual-programs/web/webrtc.folk (limited to 'virtual-programs/web') diff --git a/virtual-programs/web/webrtc.folk b/virtual-programs/web/webrtc.folk new file mode 100644 index 00000000..282f70e5 --- /dev/null +++ b/virtual-programs/web/webrtc.folk @@ -0,0 +1,199 @@ +try { + exec gst-webrtc-signalling-server & +} on error {e} { + error "gst-webrtc-signalling-server not found, you probably need to install gst-plugins-rs" +} + +try { + exec gst-inspect-1.0 rswebrtc +} on error {e} { + error "gstreamer plugin 'rswebrtc' not found, you probably need to install gst-plugins-rs" +} + +try { + exec gst-inspect-1.0 webrtc +} on error {e} { + error "gstreamer plugin 'webrtc' not found, you probably need to install gst-plugins-bad" +} + +When /someone/ wishes /p/ receives webrtc video /feed/ &\ + /someone/ claims webrtc video /feed/ streams from peer /peer-id/ { + set uri gstwebrtc://127.0.0.1:8443?peer-id=${peer-id} + When the gstreamer pipeline "uridecodebin uri=$uri" frame is /image/ at /ts/ { + Claim $p has webrtc video $feed frame $image at $ts + } +} + +When when /p/ has webrtc video /feed/ frame /image/ at /ts/ /lambda/ with environment /e/ { + Wish $p receives webrtc video $feed +} + +Wish the web server handles route "/webrtc$" with handler { + html { + + + + Status +

active feeds

+
+
+ + + + + + } +} + +Wish the web server handles route {/webrtc/(.*)/send$} with handler { + regexp {/webrtc/(.*)/send$} $path -> feed + html [format { + + + + + + Status +

share video to feed %s

+
+ + + +
+ + + + + + + + } $feed $feed] +} -- cgit v1.2.3