OvenMediaEngine
OvenMediaEngine copied to clipboard
Video Conference Demo Service Launched
We have opened a new demo service.
https://space.ovenplayer.com
This is a simple video conference service developed using OME's WebRTC Input / WebRTC Output function. This will allow you to test OME's WebRTC Input/Output. The source code for this service will be opened soon.
This is running on AWS t3.nano instance and is located in Seoul / Korea region.
Please use it for testing purposes only. If you use this service too much, we may not be able to cover the traffic cost. (Then we may have to close this demo service.)
Everyone in the OME open source community will be grateful if someone contributes a server that will run this demo service.
You could use a Hetzner Cloud CPX11 instance located in Germany for the same hourly price, but it includes 20TB of monthly traffic and any additional traffic is super cheap. https://www.hetzner.com/cloud
@basisbit Thank you, I'll review the Hetzner Cloud.
Recently we tested something simmilar with a friend @tomek10861 OME was server, OBS streaming our webcams to OME. We spoke without any additional delays or problems :D
I'm looking at OME integration with other servers with conferencing option. Is there a signal server modification required to signal users to a particular room / app ? I've had to do something similar with Wowza notify when a publish begins and each user sets up calls to subscribe to that stream.
Instead of polling for streams, users can be notified when a publish begins in the websocket.
@danrossi OME does not support the "notification" feature.
@danrossi for such group video conferencing services, something like Kurento or (imho better) Janus WebRTC might be more suitable. Jitsi uses its own VideoBridge, BigBlueButton is currently using Kurento, but will be switching to Janus webrtc because of the required performance.
I'm integrating multiple servers into players, Kurento included. OK so its an API call to get the available streams for that particular app I presume for subscribing to. I meant if there is a custom websocket message it could possibly obtain publish events on the server and notify clients instead. Is that api method already available in the server ?
@getroot is the service is down, not able to start the meeting.
Moreover, if you want decent & super cheap VM's, then go for https://www.e2enetworks.com in India, they don't have any upper limits on traffic.
@saggiyogesh Thank you for reporting. I restored the service.
Is traffic really unlimited? It's so unbelievably great. Why do people use Amazon or Azure instead of using this? I'll take a closer look at it.
Is traffic really unlimited? It's so unbelievably great. Why do people use Amazon or Azure instead of using this? I'll take a closer look at it.
Not sure about unlimited but I think they never charge. We use this for testing purposes and use Azure for production.
Traffic is never "truely unlimited" together with low price and high reliability, just because of how network topologies work. Providers that offer unlimited tend to severely oversubscribe and/or kick out customers with too much traffic and/or use old / unreliable hardware and/or do not have enough direct network peerings with the big Tier 1 network providers because of their premium fees.
Why do people use more expensive things? Because they usually want something reliable with really good peering and lots of locations close to their customers.
@basisbit Indeed, there's definitely some catch with the cheap providers. But I never mind using them from non-critical or test environments. Even once I tried OME with 50-60 viewers(from India) and end result was very satisfactory. Thanks for the technical stuff. 👍
I tried using the demo service today, however just opening the page already took 3 minutes for it to download the relatively big .js app files. I'd suggest using a CDN to host these files closer to the users. Changing tcp congestion avoidance algorithm to bbr might also help.
I am connected over network cable to a 1Gb/s internet connection from Vodafone (second biggest ISP in Europe) here in Germany, and it seems like space.ovenplayer.com ping has ~ 270ms of roundtrip time.
I presume this polling of the api service regularly would be a problem. Hence the possibility of notifying clients via the websocket message when a stream begins publishing to a particular app / room.
Is this api endpoint available in the server already to get the publish streams ?
https://space.ovenplayer.com/getStreams
@basisbit Only OvenMediaEngine was running on AWS (Seoul) and the website was running on our test server. Our test server is at a very cheap IDC and I didn't know that the international network was so slow. The website has also been moved to AWS (Seoul). Can you please check if it's still slow? If it's still slow, I'd like to move to another AWS Region.
@danrossi OME does not have a function to notify the client when the publishing of a stream via websocket starts. I think it would be better for users to implement their own notification server using AdmissionWebhooks .
https://airensoft.gitbook.io/ovenmediaengine/v/master/access-control/admission-webhooks
@getroot the website loads rather fast now. fully loaded after ~2 seconds, compared to the 3 minutes previously.
@basisbit Thank you for checking!
@getroot No I was wondering where this "getStreams" method was on the server to get available streams. It seems if each "app" is a room you can get available streams with
http://1.2.3.4:8081/v1/vhosts/default/apps/app/streams
A webhook might be possible to an external service but not easy to demonstrate. I have one to many integration working just not possible conferencing. This streams api method might be suitable for now and have to poll it.
It seems pre-flight and cors doesn't work to those api urls. So can't build a conferencing option and poll active streams. I have an OME integration into videojs now. Hopefully the api requests for clients can be fixed then I can also integrate server side recording requests not just client side.
https://electroteque.org/plugins/videojs/rtcstreaming/demos/ovenmedia-publisher/ https://electroteque.org/plugins/videojs/rtcstreaming/demos/ovenmedia-subscriber/
@danrossi Currently, OME's API is not developed for clients (e.g. javascript client). Since sensitive privileges can be accessed through OME's API (recording start/stop, stream deletion function will be added in the future, etc.), it is assumed that access is from an authorized server with an access token. Therefore, it is necessary to call the OME API by the application server, and it is recommended to provide an alarm through a separate API or Web Socket to the user authorized by the application server.
The https://space.ovenplayer.com/getStreams you asked about is also a feature developed in a separate WAS.
I'm revisiting integrating a conferencing option for OME. I have it working for other servers. Are you saying I am unable to publicly get available stream names for an application. And I have to do it via a seperate websocket server ? Can the OME websocket not notify clients when a stream has begin publishing for that application ?
@danrossi You can get the stream list via OME's API.
http://<OME_HOST>:<API_PORT>/v1/vhosts/{vhost_name}/apps/{app_name}/streams
https://airensoft.gitbook.io/ovenmediaengine/rest-api/v1/virtualhost/application/stream
However, it is not possible for security reasons to make the web browser directly call this API with Javascript. Because anyone can access OME's API means that anyone can delete the application. Therefore, it is recommended to access the OME API through WAS or Proxy in the middle.
You can decide whether to allow stream creation and track it through AdmissionWebhooks. https://airensoft.gitbook.io/ovenmediaengine/access-control/admission-webhooks
Yes I've built a simple service for testing this, without the need of a secondary websocket, but now cannot publish more than one stream at a time.