Arbiter's SFU is built using go, using pion.
The Arbiter SFU is designed to run on AWS ECS as a container, as a part of the Backend.
However, it is still possible to run it locally on your own machine.
- Initialize a .env file with
SIGNAL_SERVER_URL
variable that references your Arbiter Signaling StackRTC_CONFIG
variable that references STUN/TURN server(s) in the following format:{"iceServers":[{"urls":"stun:url:3478"},{"urls":"turn:url:3478","username":"username","credential":"password"}]}
SFU_ID
variable that represents the unique ID of the SFU. Any string is acceptable.
- Run
go run main.go
or build is a binary executable
To run the SFU container, you will need to pass environment variables to the container upon instantiation to function properly. You need to include
SIGNAL_SERVER_URL
variable that references your Arbiter Signaling StackRTC_CONFIG
variable that references STUN/TURN server(s) in the following format:{"iceServers":[{"urls":"stun:url:3478"},{"urls":"turn:url:3478","username":"username","credential":"password"}]}
SFU_ID
variable that represents the unique ID of the SFU. Any string is acceptable.
Arbiter's SFU is designed to use a Producer/Consumer relationship of stream forwarding. The diagram below demonstrates how peer streams are forwarded. Refer to Arbiter's case study for more detailed information.
Stephen Watzman Software Engineer • Detroit, MI
Tyler Frye Software Engineer • Tampa Bay, FL
Jay Jayabose Software Engineer • New York, NY