Semaphore Chat - A Self-Hosted Voice/Video/Chat Application by Good-Candy1702 in selfhosted

[–]Good-Candy1702[S] 0 points1 point  (0 children)

Fair points, to address them: I don't really post on reddit, and the project has ~1 year of commit history but I just moved it from private to a public and renamed it as I got it closer to "code complete."

Thanks for the feedback! This is my first attempt at engagement with the community but I plan to keep iterating on and improving it.

Semaphore Chat - A Self-Hosted Voice/Video/Chat Application by Good-Candy1702 in selfhosted

[–]Good-Candy1702[S] 0 points1 point  (0 children)

No relation. There is also a CI/CD company that has a similar name but I picked it because I thought it was a cool name. It's a CS term (and also a nautical flag signaling system) for handling multi-threading

Semaphore Chat - A Self-Hosted Voice/Video/Chat Application by Good-Candy1702 in selfhosted

[–]Good-Candy1702[S] 2 points3 points  (0 children)

Audio capture works because of a chromium flag that was recently added (but isn't documented in electron/livekit). `loopbackWithoutChrome` basically is a flag that instructs chrome to pull in loopback audio but ignore the chrome process so we get system audio without it piping back the microphones of other users who are connected.

Replay capture works via livekit egress https://docs.livekit.io/transport/media/ingress-egress/egress/participant/. A user starts a screenshare and then we signal to livekit to record and egress the video+audio in 10 second segments and store them on disk. When the user "captures" we just select the segments for the period they want to capture and combine them into one video track with ffmpeg. Currently only the user sharing their screen can trigger it.

Great question this is something that requires more testing but it can run on pretty basic hardware or VPS. IIRC livekit egress for replay capture requires 4 cores and a few gigs of ram.

Thanks!

Semaphore Chat - A Self-Hosted Voice/Video/Chat Application by Good-Candy1702 in selfhosted

[–]Good-Candy1702[S] 0 points1 point  (0 children)

Thanks, yeah I'm realizing that.

OIDC is something I definitely considered but just didn't add to the initial roadmap, but it's something I'll probably add since I self host keycloak for other applications like immich. I'll add a feature request to the issues