Streaming engine for live video streaming mobile app like bigo live with react native

Streaming engine for live video streaming mobile app like bigo live with react native

Support ForumCategory: GeneralStreaming engine for live video streaming mobile app like bigo live with react native
admin Staff asked 6 years ago
Hi, I\’m working on developing a live video streaming mobile app like Bigo Live. I will be using react native for building the mobile app. To be frank, I\’m trying to choose a media server Evostream or wowza for this. My requirement is to video streaming with 20 concurrent broadcasters with 200 viewers for each broadcaster. My comparision points are integration with react native, API, documentation, features, performance, quality etc. We would like the solution to be vertically scalable as horizontal scaling requires more licenses. I would like to know if evostream supports the following: 1) Live video streaming (multicast), multiple concurrent broadcast with multiple viewers for each broadcast 2) Displaying animations, images, text overlay on the video 3) API to get broadcast, view, get list of broadcasters, list of viewers for a broadcast 4) Integration with react native My requirement is: 20 concurrent broadcasts with avg of 100 viewers (720p or 360p) for each broadcast. We would like this to be vertically scalable. Is this achievable with one instance of streaming engine. What is the recommended hardware configuration for this requirement? Thank you, Sash



6 Answers
_Eric_S_ Staff answered 6 years ago
Hi Raj, Thank you for the clarification.   RE: Adding animation, text, etc.  First, must know that transcoding operations are CPU-intensive.  How much CPU power used depends on many variables such as:
  • Video bitrate of the source video
  • How many animations you wish to add
  • How complex the text you wish to add (e.g. is the text static?  or is it moving like in news broadcasts? 
If the machine does not have a suitable CPU and memory, it might not be able to transcode fast enough to ensure a smooth and timely playback of the stream. As such I would recommend that you have a group of machines dedicated to performing the source stream transcoding, that in turn, pushes the transcoded stream to EMS.  Don’t let the transcoder share the same machine as EMS.   RE: How many machines? For the transcoding part, I strongly recommend you setup a group of dedicated machines that would perform the transcoding. To know how many machines you need to transcode the video, a good start would be 1 cpu core per stream.  (quad core = 4 streams) For the EMS part, much would depend on the bitrate of the video streams you wish to serve. For example, lets say that your 720p video has a bitrate of up to 5Mbps. A machine with a gigabit network adapter (1000Mbps) should be able to accommodate around 200 connections of 5Mbps each. You mentioned that you will have 20 streams with up to 100 viewers per stream, then this would amount to up to 2020 streams.  This brings the maximum to 10-11 ems machines. You may want to consider using our Azure Load Balancer solution for this:
http://docs.evostream.com/ems_quick_start_guide/quick_start_guide_for_azureloadbalancer   RE: In that case, can i use webrtc on mobile app (with react native) and ERS to stream? That is correct.  Your mobile app will need to interface with our ERS app to get the ICE protocol parameters (stun server, turn server, etc.) that your webrtc library will need in order to establish a peer connection with EMS.  
admin Staff answered 6 years ago
Hi Eric, Thanks for your reply. Based on your inputs, we have decided to separate chat, animations etc out of video streaming. So, we will use EMS only for video streaming. Here is our requirement:
  • 20 streams with up to 100 viewers per stream (up to 2020 streams) – 480p
Can you please suggest hardware specification? (And how many standalone perpetual EMS licenses are we looking at?)   Thanks, Raj
_Eric_S_ Staff answered 6 years ago
Hi Raj,   If you will only be doing pure video streaming, then the main metric that you would want to measure for estimating the hardware that you would need. A 480p video would probably have 2.5Mbps.  So an Intel machine with a 1Gbps adapter (1000Mbps) should be able to handle up to 400 streams of 480p. 2020/400 would be approximately 5 machines.  (Well, the division was not exact at 5.05… but let’s leave this at 5 for now.) The typical machine you would want to use would be an i5 or i7 with 8gb of ram. So you may need 5 ems instances.   I hope this helps.  

Offcanvas

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.