Today, We would like to tell you that OvenMediaEngine, our open-source streaming server with sub-second latency, is being used here and there. First of all, thanks to Vitrag Mehta for sharing this story with us.
This is the first story we're making public right now, and he honestly told us everything.
Here we go!
Q. Why did you need OvenMediaEngine?
A. There are some internal meetings and live casting events (internal sports events and games like tombola etc) which needs to be viewable for our internal users on their own laptops. These events need to be cast in real-time on the company’s intranet website; however, this site is also open to the public internet. There are a total of 4 such simultaneous live casts required (for simultaneous events). The event audience can access these events live casts only if they are invited or have access to them; this is not open to all employees. The event normally runs for about 4-6 hours per day for about 3-5 days in a month. Sometimes even 48 hours constant in a month. We didn't want regular involvement of the IT team; we wanted the HR and Admin team to handle this on their own as a daily operational activity.
Q. How did you set up OvenMediaEngine?
A. We created OvenMediaEngine on AWS (8-Core 16GB RAM * 1-Instance). We created 4 windows instances on AWS as well in the same network (LAN) to reduce network latency (4-Core 8GB RAM * 4-Instances) used OBS to capture the windows instances screen (used the low latency tweaks on OBS). OBS, we set to push these specific application windows as RTMP push to OvenMediaEngine server.
Since AWS bandwidth cost was too high for the given budget; We decided to use cheap servers and adopt origin-edge setup; this will pull only 1 stream (total of 4 different streams) from AWS side and users will connect to the EDGE server which is dirt cheap and our edge servers need not be heavy compute servers. Since we were exposed to the internet; we used SSL mode for the transmission. The setup is working fine on the player side we simply pulled the demo OvenPlayer and embedded it in our CSS/frame.
Q. Could you install and use OvenMediaEngine easily?
A. Apologies as we are very limited on software coding/development skills as we are core network/server/virtualization infra skilled team; hence we didn't want to make any changes to the existing code. We just tweaked the configs to our liking and sweet spot and got it working beautifully.
HR team just connects to the AWS; start working on the APP and it is cast in 0.8~1.2 sec delay to every user who has the player open. Even when the server is idle; if a user opens the player page; he will see the idle system desktop.
Q. What more did you need while using OvenMediaEngine for you?
A. The server could have some basic web interface / GUI (need not be very cosmetic) but should be able to give a near real-time stats of a number of users currently connected, with their IP address or some other info; Maybe even disconnect them if the required end of a session is something we never really do; these are online 24 * 7.
The URL of the stream and the player can be extracted by any user who has access to the web page (use debug/inspect in the browser and extract the stream URL); once this URL is extracted anyone can simply view the stream and we don't have much control of who can view the stream and who cannot view the stream. some authentication mechanisms like maybe a user/password or similar feature would really help.
We have observed that at times more users connected to the stream than we expected (3,000+) and it overwhelmed the server’s bandwidth. If we have a way to say limit that one edge server will handle only 100 streams and post that it will reject the stream, and oven player is configured to do a retry after a delay. We can have a round-robin DNS and have multiple edge servers to easily scale up what happens here is say we have 3 edge servers with 1000 user capacity each; their IP address is mapped to one a record in DNS (DNS round-robin); what happens is when the player does a DNS resolve; it tries and connected to the first IP it gets. This either ends up in edge server 1 handing 1500 sessions and getting congested, but edge server 2 remaining at 300 sessions and remaining idle, and support team getting calls that the stream isn't working as expected.
We listened to his experience and went through more tests to fix more errors, and finally released a more reliable 0.10.2 version than before. Also, we have solved the frequent memory leaks and crashes, and continued testing has confirmed that OME works stably on more than 2,000 streams. Please click HERE for detailed update information.
Thanks for reading.