44 pointsby Sean-Der2 hours ago4 comments
  • Sean-Der2 hours ago
    I wrote this to make Reverse Engineering WebRTC services easier. Will also let you save/send arbitrary media from WebRTC sessions. The idea is you do all your auth/interaction in the browser, but then do all WebRTC in Go. So you have lots more control. More to do with it, but it is far enough along to share at least.

    In the README is an screenshot of sending my webcam, but replacing outgoing video with a ffmpeg testsrc. Handoff sits between so it can replace with any arbitrary video.

    • czbondan hour ago
      Interesting and novel project. I don't have anything constructive to add, but well done.
      • Sean-Der43 minutes ago
        Thanks :)

        No better feeling to work on something and hear it is novel! So many projects that I think will be useful miss the mark.

  • Hakkinan hour ago
    Oh, this is interesting. I have been messing around with a WebExtension for dumping encoded WebRTC media streams by intercepting streams on RTCPeerConnection.addTrack, but it doesn't work reliably since the current WebRTC encoded stream API(s) only supports a single reader, so if the actual website is also using the API, it either breaks the site or it's impossible to intercept the media. This seems like a nice workaround, I had briefly considered some kind of proxy but I wrote it off since WebRTC traffic is encrypted, I never considered proxying the peer connection API calls themselves. Pretty clever.
    • Sean-Der31 minutes ago
      I can’t wait for https://w3c.github.io/webrtc-rtptransport/ when you talk about pulling vide out seems like the perfect fit.

      I ended up doing proxy because Google Meet doesn’t let me hook at any RTCPeerConnection APIs at all. I wanted to send synthetic media in, but couldn’t get it working. Ending up doing a virtual webcam on Linux.

  • esafak4 minutes ago
    Is this a good way to improve performance (frame rate, latency, CPU load) ?
  • hparadizan hour ago
    Would be interesting for a Wayland DM to catch this and draw to a picture in picture overlay
    • Sean-Der42 minutes ago
      Oh yes! I will pull together a demo.

      With ‘media-send’ I can send it out to ffmpeg/GStreamer and that does all the heavy lifting

      • hparadiz34 minutes ago
        I made a demo recently with my Google home camera using the official API https://github.com/hparadiz/camera-notif

        But your way of grabbing the stream is so much simpler.

        Overlay layer is super new in KDE Plasma is the only problem. You can also do v4l2loopback and make it a virtual camera.

        • Sean-Der9 minutes ago
          Have you tried doing video + pipewire yet?

          I am also using v4l2loopback, but its annoying to juggle /dev/video* devices. I wanted to do video stuff in docker containers, and it would be amazing if I could do pipewire in each container and have no global state.

          I couldn't get anything to work in Chromium. FireFox saw the device, but video didn't come across.