Ant Media Server has a built-in video conference feature that is already used by lots of users. Nowadays we get some questions about extending that built-in video conference solution with new features. However, this built-in video conference solution is hard to extend by users because its source code is distributed in Ant Media Server module projects. So, we created an extendible Conference Application Project. In this post, we will introduce that Conference App.
Conference App is an SFU type multiparty WebRTC application. It is developed as a web application that can be deployed on Ant Media Server. Conference App can be used on a standalone Ant Media Server or on an Ant Media Server Cluster so that it can be also scaled with Ant Media Server. That means it can handle conference rooms with a large number of participants.
Conference App Project is also an open-source project. Here is the GitHub repository for Conference App Project.
This project depends only on other Ant Media Server projects with maven dependency. So, it can be built alone. This makes the users free to add new features to their conference application without modifying other Ant Media Server projects.
Conference App has basic features for a conference solution. However, it is not a final product but it is a sample project as a basis for featured conference projects over Ant Media Server. You can add easily new features (like raise hand, enable/disable user video/audio, chat, etc.) by extending Web Socket API or REST API.
Conference App uses Ant Media Server as a low latency WebRTC streaming server. Ant Media Server is responsible for WebRTC publishing and playing participants’ video/audio streams. Conference App makes orchestration of streams in a room. Participants are connected to a room through the Conference App by WebSocket messaging. But they publish their streams to Ant Media Server and play others’ streams from Ant Media Server. The following chart shows the message sequence.
Conference WebSocket API has some core room management messages as a sample. These are a basis for a conference APP. You can extend API with new messages.
Conference App has a REST API to control it. This REST API has some basic REST messages as a sample. You can extend the REST API with new messages to improve your conference project.
Settings are stored and used similar to other Ant Media Server built-in Applications. Conference App has also a settings file. You can configure your Applications with that settings file. Furthermore, you can add new configuration parameters to improve your Application.
Conference App has its own data store for storing data. This data store is a mapdb data store that is also used in other Ant Media Server built-in Applications. You can also extend your data store depending on your application’s needs.
Text Messaging & File transfer
Ant Media Server provides a real-time data transfer opportunity using WebRTC data channels. You can add your application text messaging or file transfer features with that Ant Media Server opportunity.
Benefits From Ant Media Server
Ant Media Server has its own stream security mechanisms as documented here. In your Conference App, you can directly use those stream security mechanisms. Besides, you can add container provided filters or your own custom filters on your web application for security purposes.
Extending the Conference App
Conference App doesn’t have only the features mentioned above, but has also lots of extension points to create a final application. Since it is an open-source project you can fork the project from GitHub repository, extend it, and create your own application.
We will be glad if you create a featured open-source application and share it with the Ant Media Server community.
Development and Customization
- Clone the project repository from: https://github.com/ant-media/ConferenceApp
- Open project with your favorite Java development environment for server side code
- Open project with your favorite web development environment for client side code
- Customize or develop new features
- Build project with the following command:
mvn clean install -DskipTests -Dgpg.skip=true
- Copy target/ConsoleApp.war to AMS_INSTALLATION_DIR/webapp
- Restart server