Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

video conference #367

Merged
merged 22 commits into from
Dec 20, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
9ea133f
video conference
Sep 26, 2024
97656ad
Merge branch 'master' into video-conference
mustafaboleken Oct 2, 2024
5072fac
room security and some improvement on video conference
Oct 3, 2024
28f621a
Merge branch 'video-conference' of https://github.com/ant-media/ant-m…
Oct 3, 2024
78543bc
conference security
Oct 3, 2024
873eb54
add Circle documentation
burak-58 Nov 22, 2024
72a60bc
Merge pull request #406 from ant-media/circle-doc
yashtandon113 Nov 22, 2024
93c0e00
Update circle-video-conference-solution.md
yashtandon113 Nov 22, 2024
36cf3c8
Merge branch 'master' into video-conference
yashtandon113 Nov 22, 2024
dfca952
Update circle-video-conference-solution.md
yashtandon113 Dec 19, 2024
334debd
Update circle-video-conference-solution.md
yashtandon113 Dec 19, 2024
5b3f432
Update circle-video-conference-solution.md
yashtandon113 Dec 19, 2024
53e428f
Update circle-video-conference-solution.md
yashtandon113 Dec 19, 2024
b460745
Update circle-video-conference-solution.md
yashtandon113 Dec 19, 2024
6298cc9
Merge branch 'master' into video-conference
yashtandon113 Dec 19, 2024
3df96f0
Update and rename video-conference.md to ams-conference-structure.md
yashtandon113 Dec 19, 2024
e044f52
Delete docs/guides/conference/video-conference directory
yashtandon113 Dec 19, 2024
7ee74d9
Create ams-conference-structure.md
yashtandon113 Dec 19, 2024
be41bbd
Delete docs/guides/conference/video-conference-security directory
yashtandon113 Dec 19, 2024
899ab9c
Create conference-room-security.md
yashtandon113 Dec 19, 2024
32e5c74
Update conference-room-security.md
yashtandon113 Dec 20, 2024
3dfca99
Update _category_.json
yashtandon113 Dec 20, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions docs/guides/conference/_category_.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"label": "Conference Room",
"position": 4,
"link": {
"type": "generated-index",
"description": "Conferencing with Ant Media Server"
}
}

1,893 changes: 1,893 additions & 0 deletions docs/guides/conference/ams-conference-structure.md

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
---
title: Circle - Video Conferencing Solution
description: Circle Video Conferencing Solution on top of Ant Media Server
keywords: [Conference Ant Media, Ant Media video conference, ant media conferencing, Circle]
sidebar_position: 1
---

# Circle: Free Video Conferencing Solution

Circle is a ready-to-use open-source, online video conferencing application built on top of Ant Media Server that can be deployed on-premises or on a private/public cloud. If you are concerned about privacy or being behind a firewall, this is the best solution for you.

## Key Features

* **Unlock the Number of Attendees:** Thanks to the Scalability of Ant Media Server. The Circle is built to scale the number of attendees.
* **Easy to Use:** Just let your attendees join the video call with their favorite web browsers.
* **Privacy:** Deploy it into your private/public cloud or on-premises. Make sure your live video conference is yours and it cannot be watched by anyone in the cloud.
* **Distribute Live to Your Large Audience:** Distribute your video call to tens of thousands of viewers as a single video through CDN, Youtube, Vimeo, etc.
* **Record:** Record your video conference to watch it later or for archiving.

## Installation of Circle on AMS

Circle is a web application that runs on Ant Media Server. To install Circle on Ant Media Server, you need to have a war file of the Circle application. You can either build it by yourself or you can download the latest war file. You can download [the stable version](https://github.com/ant-media/conference-call-application/releases) or [latest snapshot](https://oss.sonatype.org/#nexus-search;gav~io.antmedia.webrtc~ConferenceCall~~~~kw,versionexpand).

### Build Circle (Optional)

If you want to build it by yourself, you can follow these steps.

You should have `Maven`, `Java 17 SDK`, and `Node` installed on your system.

* **Step 1: Clone Repository:**

```bash
git clone https://github.com/ant-media/conference-call-application.git
```

* **Step 2: Build Application File:**

```bash
cd conference-call-application
./createwar.sh
```

After running the script, the `ConferenceCall.war` file should be in the `target` folder.

### Application Installation

First, log in to the Ant Media Server Management Panel.

* **Step 1:** On the Dashboard page, click the New Application button.
* **Step 2:** Click the Chose File button and browse the war file you downloaded.
* **Step 3:** Give a name to the application.
* **Step 4:** Click the Create button. That's all.

![Circla App Installation](@site/static/img/conference/circle/circle-app-installation.png)

### Usage

* Visit `https://antmediaserver-domain/Application_Name`

* Click **Create Meeting**
![](@site/static/img/conference/circle/circle-room-creation.png)

* Enter your name for yourself and join the meeting
![](@site/static/img/conference/circle/circle-room-entrance.png)

* You are in the room now
![](@site/static/img/conference/circle/circle-room.png)

### Try Now

If you want to try the Circle conference application without any installation, visit [here](https://meet.antmedia.io/Conference).

## Advanced Topics (for Developers)

### Customization:

You can make any changes to the Circle code base and customize it for your own applications without any restriction.

If you want to change only look and feel, for example, button availabilities, the ⁣`.env.production` file provides some configurations to customize general UI.

### Embedding into Website

If you want to embed Circle into your website as a component, please follow [this guide](https://antmedia.io/docs/guides/developing-antmedia-server/circle-component-usage/).

----------

In the next document, we will learn in more detail about the Ant Media Server Conferece solution structure.
100 changes: 100 additions & 0 deletions docs/guides/conference/conference-room-security.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
---
title: Room Security
description: Video Conference Room Security with AMS
keywords: [Conference Ant Media, Ant Media conference room security, ant media conference token, ant media conference room password, ant media conference room, ant media video conference room security, Ant Media video conference, ant media conferencing, Publish, Multitrack conference, Ant Media Server Documentation, Ant Media Server Tutorials]
sidebar_position: 3
---

# Room Security

In Ant Media Server, each participant and the conference room itself are treated as individual broadcasts. This means that all [Stream Security](https://antmedia.io/docs/category/stream-security/) features apply to conferencing as well.

## Secure Rooms With Tokens

To secure a conference room, enable related token security for both publishing and playing through the web panel, then generate a publish token using the room's (main track) broadcast ID.

The generated publish token must be passed to both ```.publish()``` and ```.play()``` functions in conferencing. Otherwise, the participant won't be able to join the room.

A generated token can be a [JWT](https://antmedia.io/docs/guides/stream-security/jwt-stream-security-filter/) or [One Time Token](https://antmedia.io/docs/guides/stream-security/one-time-token-control/). We use the JWT token for this document.

### Security with JSON Web Tokens

#### Step 1: Enable JWT Security

Go to the Ant Media Server web panel and enable JWT for both publish and play. For more details on how to do that, check [JWT Stream Security](https://antmedia.io/docs/guides/stream-security/jwt-stream-security-filter/) document.

#### Step 2: Generate JWT with Room ID

Generate a JWT with payload as below:

```js
{
"type":"publish",
"streamId":"roomId",
"exp": jwt_expire_timestamp
}
```

![](@site/static/img/conference/video-conference/room-security-1.png)


You can either generate the JWT token with the JWT Debugger UI or via the Rest API as defined in the document.

#### Step 3: Join The Room Using JWT

In Ant Media Server, joining a video conference room involves both publishing to the room broadcast and playing that broadcast. Therefore, it's essential to pass the generated publish token to both the⁣ ```.publish()``` and ```.play()``` functions in the Ant Media Server SDKs.

:::info
In conferencing, even though the token type is publish, it can be used for both publishing and playing.
:::

**Example:**

```js
const joinRoom = () => {
webrtcAdaptor.current.publish(localParticipantStreamId, publishToken, null, null, localParticipantStreamId, roomId, JSON.stringify(userStatusMetaData));
webrtcAdaptor.current.play(roomId, publishToken)
}
```

Check [Javascript Conference Room Sample](https://github.com/ant-media/StreamApp/blob/master/src/main/webapp/conference.html#L500) for reference.

#### Step 4: Conference Room Security In Action

In this step, we will use a conference sample to do a simple conference room security test. Here is the URL format:

```https://{ams-url}:5443/{appName}/conference.html?token={YOUR_JWT_TOKEN_HERE}```

**Example:**

```https://test.antmedia.io:5443/LiveApp/conference.html?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0eXBlIjoicHVibGlzaCIsInN0cmVhbUlkIjoidGVzdHJvb20iLCJleHAiOjk1MTYyMzkwMjJ9.Ipl8ev_jkZUfE_nPceOdj977V09qgRKu8Fc_jDCqvlA```

Conference.html sample will get the token from query parameter and pass it to ```.publish()``` and ```.play()``` functions.

Type room ID and click join room.

Remember, the room ID here must be the same as the ID you used while generating the JWT.

You should be able to successfully join the room and publish; play should start.

![](@site/static/img/conference/video-conference/room-security-2.png)

Now, open another tab. This time do not pass token as a query parameter. Optionally, you can pass a wrong token.

**Example:**

```https://test.antmedia.io:5443/live/conference.html```

Type the same room ID and click on join. Since there is no token, you won't be able to join the room.

![](@site/static/img/conference/video-conference/room-security-3.png)

### Secure Circle Conference Room

In case, you are using the Circle Conference application, the token generation steps are the same. You just need to use the below URL format to use the token with the Circle conference room.

```https://ams-domain:5443/Conference/roomId?token={YOUR_JWT_TOKEN_HERE}```

**Example:**

```https://test.antmedia.io:5443/Conference/test?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdHJlYW1JZCI6InRlc3QiLCJ0eXBlIjoicHVibGlzaCIsImV4cCI6OTk5OTk5OTk5OX0.AE9DiAxsA4N1tGbg08NC4ISnXlnPaybF84psMOoDDus```
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added static/img/conference/circle/circle-room.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.