bbc / brave

Basic Real-time AV Editor - allowing you to preview, mix, and route live audio and video streams on the cloud
Apache License 2.0
653 stars 148 forks source link

Machine Specs #77

Open ArturFortunato opened 3 years ago

ArturFortunato commented 3 years ago

Hello! Thank you for this project, it's fantastic!

I ran it on an AWS EC2 t2.micro (1CPU, 1GB RAM) and it reaches 100% CPU usages (so it crashes). I then tried it on my machine (intel core i5 8th generation, 8GB RAM) and it works well with one RTMP input and one RTMP output, but if I add a mixer in the middle, brave crashes. Have any of you successfully tested Brave and care to share your machine's specs?

Thank you!

PKuebler commented 3 years ago

Hi,

with 1920x1080 rtmp streams we reaches 100% by a Digital Ocean CPU-Optimized Droplet

with 1280x720 we reaches with 2 inputs, 1 mixer, 1 output 50% on this machine.

it's use a lot cpu power.

removogel commented 3 years ago

Interesting discussion, i'am thinking about EC2 pilot to. At my local machine (i7/8550u) i can combine 3-4 streams. Would be interesting to see if EC2-GPU helps. On the other hand, got lots of stability issues with Brave, not shure if Cloud Deployment is really making sence.

ArturFortunato commented 3 years ago

I tried running Brave on an AWS r5n.large instance and got 60-80% CPU usage, with very rare stability issues. It would be interesting to create a table with test results from multiple instance configurations for future reference. Are there any plans for creating a stable production version?

ArturFortunato commented 3 years ago

Interesting discussion, i'am thinking about EC2 pilot to. At my local machine (i7/8550u) i can combine 3-4 streams. Would be interesting to see if EC2-GPU helps. On the other hand, got lots of stability issues with Brave, not shure if Cloud Deployment is really making sence.

Would it make sense to use EC2-GPU instances if there are (at least from what I saw) no optimization for GPU usage in the project?

PKuebler commented 3 years ago

When I switch the inputs for a mixer I often have that the sound or the picture is not taken.

More CPU has reduced the problem, but it still occurs.

Thought Brave does not need a GPU? Have used CPU optimized VM's so far.

removogel commented 3 years ago

From a high level perspective it might work. Brave is based on GStreamer. I assume that GStreamer can use OpenGL/Vulkan or CUDA. If so, I don't know if GStreamer has to be coded differently or if a configuration is enough. The remaining final challenge would be the integration of the EC2 GPU.

ArturFortunato commented 3 years ago

From a high-level perspective it might work. Brave is based on GStreamer. I assume that GStreamer can use OpenGL/Vulkan or CUDA. If so, I don't know if GStreamer has to be coded differently or if a configuration is enough. The remaining final challenge would be the integration of the EC2 GPU.

I hope this is part of the author's plans as, for now, it seems like it's too unstable to be used in production.

I will test a load balancer with multiple powerful instances, but the price will increase drastically.

compiaffe commented 3 years ago

GStreamer has plenty of hardware decoders and encoders such as vaapih265enc or there is svthevcenc just to name a few. There are also encoders and decoders for the Intel Media SDK or nvidia - all depending on what hardware you have...

To my knowledge there is no vaapi support on AWS EC2, but you could of course add a NVIDA GPU. I have no knowledge though how brave selects these encoders or what it configures on them. For example the vp9enc does not perform very well for live transcoding with the default config, but configured correctly is rather useful.

moschopsuk commented 3 years ago

Just to also chime in here we deploy brave to large CPU (compute) instances.

Brave uses playbin for some media which will try to use any hardware decoders.

The video mixing in brave is compositor which uses CPU for mixing. There is a GPU based element called glvideomixer which would help reduce GPU load, but we don't use it here.

ArturFortunato commented 3 years ago

Just to also chime in here we deploy brave to large CPU (compute) instances.

Brave uses playbin for some media which will try to use any hardware decoders.

The video mixing in brave is compositor which uses CPU for mixing. There is a GPU based element called glvideomixer which would help reduce GPU load, but we don't use it here.

Interesting! Would you care to share your machine specs and the CPU usage for your use cases?

moschopsuk commented 3 years ago

We use a fleet of c5.4xlarge instances.

These are usually around 50% when they are being used for events.

ArturFortunato commented 3 years ago

We use a fleet of c5.4xlarge instances.

These are usually around 50% when they are being used for events.

And how many events (mixers) do you have in one instance? We manage to get 60-70% CPU usage for one mixer on a r5n.large

moschopsuk commented 3 years ago

We also use a single brave mixer for each instance.