webrtc-bench
is a WebRTC server that plays a video file from disk, and then re-distributes via WebRTC. It generates a report.csv
with the CPU Usage and connected PeerConnection count.
This repo contains a CLI WebRTC Client that will connect and perform the load test. This is done via a REST API hosted on :8080/doSignaling
. You can also watch the video/load test via the web UI at :8080/
,
it connects via the same REST API as the CLI.
git clone https://github.com/pion/webrtc-bench.git
cd webrtc-bench/server
ffmpeg -i $INPUT_FILE -g 30 -b:v 2M input.ivf
go run main.go
You can then access the Web UI at http://localhost:8080. This requires a browser that supports H264, this repo doesn't do any error handling around signaling failures.
You can also use the provided WebRTC CLI
cd webrtc-bench/client
go run main.go localhost:8080
In the server folder you will have a reports.csv
that looks like
timestamp, peerConnectionCount, cpuUsage
2020-12-15T13:59:23-08:00, 1, 17.878028
2020-12-15T13:59:26-08:00, 0, 35.101254
2020-12-15T13:59:29-08:00, 1, 12.565718
2020-12-15T13:59:32-08:00, 1, 20.600500
2020-12-15T13:59:35-08:00, 1, 17.878028
2020-12-15T13:59:38-08:00, 0, 41.795438
2020-12-15T13:59:41-08:00, 0, 37.083333
The following graph was generated from the results.csv
that was generated by the server. The client was run from another EC2 instance in the same VPC.
The Y Axis is the CPU Usage, and the X Axis is the count of PeerConnections. This was run on a m4.2xlarge (Intel(R) Xeon(R) CPU E5-2686 v4 @ 2.30GHz)
This is controlled by what video you use. You can go as high (or low) as you want.
SRTP_AEAD_AES_128_GCM
None, on purpose.
Pion by design allows the user to specify what they want. We are distributing a video feed that is already encoded, and has a very small keyframe-interval so these things don't help us.
When setting up the PeerConnection you have full control of the RTP/RTCP pipelines, so users can add TWCC/NACK/FEC in a way that works for them.
Join the Pion Slack
Pion has an active community on the Golang Slack. Sign up and join the #pion channel for discussions and support. You can also use Pion mailing list.
We are always looking to support your projects. Please reach out if you have something to build!
If you need commercial support or don't want to use public methods you can contact us at [email protected]
MIT License - see LICENSE for full text