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
rajprince Member asked 1 year 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

8 Answers
toni answered 1 year ago

Hi Sash,
Currently, there is no app integration for react native. It is only available for android and ios.

rajprince Member answered 1 year ago

Hi Toni,
 
In that case, can i use webrtc on mobile app (with react native) and ERS to stream?
Or is there any other way to achieve react native+ems?
 
Thanks,
Raj

_Eric_S_ Evostream-Staff answered 1 year ago

Hi,
For your other questions:

  1. Evostream can do multicast streaming in MPEG-TS format.  You’ll need to make sure that your player (or player library) can receive and play MPEG-TS streams from a multicast address
  2. For adding animations, text, marquees, etc. to a stream, you will need to transcode the original video before feeding it to the Evostream Media Server.  Please refer to: http://docs.evostream.com/2.0/userguide_transcode.html
  3. Please refer to listStreams command documentation: http://docs.evostream.com/2.0/listStreams.html

 
For your requirement of 20 concurrent broadcasts with an average of 100 viewers, please clarify the following:

  • Will each stream have the animations, text, etc. that you identified in question #2?
  • Will it be 100 viewers average per stream?  Or is it 100 viewers average overall?

 
Thanks.

techq Member answered 1 year ago

Will each stream have the animations, text, etc. that you identified in question #2? – Yes, each stream will have animations, text
Will it be 100 viewers average per stream? Or is it 100 viewers average overall? – It will be 100 viewers per stream

rajprince Member answered 1 year ago

Hi Eric,
 
Will each stream have the animations, text, etc. that you identified in question #2? – Yes, each stream will have animations, text
Will it be 100 viewers average per stream? Or is it 100 viewers average overall? – It will be 100 viewers per stream
Based on above requirement, please suggest number of EMS instances required, number of machines (linux boxes) required with hardware specification , if you can.
 
Appreciate your help.
Thanks,
Raj

_Eric_S_ Evostream-Staff answered 1 year 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.
 

rajprince Member answered 1 year 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_ Evostream-Staff answered 1 year 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.