Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
14 changes: 7 additions & 7 deletions docs/about-openvidu.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
description: OpenVidu is a powerful platform to develop WebRTC real-time applications. Based on LiveKit and mediasoup, performant, fault-tolerant, scalable and observable.
---

[OpenVidu](https://openvidu.io){target=\_blank} is a powerful platform to develop WebRTC real-time applications. With it you can add real-time audio and video capabilities to your application: build any kind of videoconference experience, serve ultra-low latency livestreams to thousands of users, manage real-time videos from your drones or camera feeds and record them... The possibilities are truly endless!
[OpenVidu](https://openvidu.io?utm_source=livekit-tutorials&utm_medium=referral&utm_campaign=about-openvidu-page){target=\_blank} is a powerful platform to develop WebRTC real-time applications. With it you can add real-time audio and video capabilities to your application: build any kind of videoconference experience, serve ultra-low latency livestreams to thousands of users, manage real-time videos from your drones or camera feeds and record them... The possibilities are truly endless!

It is based on [LiveKit](https://livekit.io/){target=\_blank} and [mediasoup](https://mediasoup.org/){target=\_blank}, bringing the best of both worlds to provide a performant, fault-tolerant, scalable and observable solution.

Expand Down Expand Up @@ -42,7 +42,7 @@ d="M4,1H20A1,1 0 0,1 21,2V6A1,1 0 0,1 20,7H4A1,1 0 0,1 3,6V2A1,1 0 0,1 4,1M4,9H2
<h4>On-Premises</h4>
</div>
<p class="feature-description">
OpenVidu is provided as a software that you install <strong><a href="https://openvidu.io/latest/docs/self-hosting/production-ready/" target="_blank">on your own
OpenVidu is provided as a software that you install <strong><a href="https://openvidu.io/latest/docs/self-hosting/production-ready/?utm_source=livekit-tutorials&utm_medium=referral&utm_campaign=about-openvidu-page" target="_blank">on your own
servers</a></strong>. You can easily deploy and manage a fully fledged live-video solution
in your own infrastructure, including the most popular cloud providers.</p>
</div>
Expand All @@ -59,7 +59,7 @@ in your own infrastructure, including the most popular cloud providers.</p>
</div>
<p class="feature-description">
OpenVidu is built to be incredibly powerful. It uses LiveKit at its core, but it goes much further
providing up to <strong><a href="https://openvidu.io/latest/docs/self-hosting/production-ready/performance/" target="_blank">2x performance</a></strong> of LiveKit. You can
providing up to <strong><a href="https://openvidu.io/latest/docs/self-hosting/production-ready/performance/?utm_source=livekit-tutorials&utm_medium=referral&utm_campaign=about-openvidu-page" target="_blank">2x performance</a></strong> of LiveKit. You can
host double the users in your video rooms just by using OpenVidu.
</p>
</div>
Expand All @@ -77,7 +77,7 @@ d="M21 8C19.5 8 18.7 9.4 19.1 10.5L15.5 14.1C15.2 14 14.8 14 14.5 14.1L11.9 11.5
</div>
<p class="feature-description">
OpenVidu has been designed from the outset with <strong><a
href="https://openvidu.io/latest/docs/self-hosting/production-ready/scalability/" target="_blank">scalability</a></strong>
href="https://openvidu.io/latest/docs/self-hosting/production-ready/scalability/?utm_source=livekit-tutorials&utm_medium=referral&utm_campaign=about-openvidu-page" target="_blank">scalability</a></strong>
in mind. Add nodes to increase the capacity of
your cluster when necessary and remove them when no longer needed to optimize your resources.
</p>
Expand All @@ -95,7 +95,7 @@ d="M18 12C19 12 20 12.2 20.9 12.7C21 12.1 21 11.6 21 11V5L12 1L3 5V11C3 16.5 6.8
<h4>Fault Tolerant</h4>
</div>
<p class="feature-description">
OpenVidu offers <strong><a href="https://openvidu.io/latest/docs/self-hosting/production-ready/fault-tolerance/" target="_blank">fault tolerance</a></strong> in all its
OpenVidu offers <strong><a href="https://openvidu.io/latest/docs/self-hosting/production-ready/fault-tolerance/?utm_source=livekit-tutorials&utm_medium=referral&utm_campaign=about-openvidu-page" target="_blank">fault tolerance</a></strong> in all its
components. Deploy a reliable cluster knowing that if one of your node goes down, others will be
able to continue working with no downtime.
</p>
Expand All @@ -112,7 +112,7 @@ d="M9.46,6.28L11.05,9C8.47,9.26 6.5,11.41 6.5,14A5,5 0 0,0 11.5,19C13.55,19 15.3
</div>
<p class="feature-description">
OpenVidu provides different tools and APIs to <strong><a
href="https://openvidu.io/latest/docs/self-hosting/production-ready/observability/" target="_blank">monitor</a></strong>
href="https://openvidu.io/latest/docs/self-hosting/production-ready/observability/?utm_source=livekit-tutorials&utm_medium=referral&utm_campaign=about-openvidu-page" target="_blank">monitor</a></strong>
the status, health, performance and history of
your deployment. It automatically collects logs and metrics and offers a dashboard to visualize
them.
Expand All @@ -128,6 +128,6 @@ OpenVidu is available in two editions:
- **OpenVidu** <span class="openvidu-tag openvidu-community-tag">COMMUNITY</span>: free to use. It is a single-server deployment and provides a custom LiveKit distribution with Egress, Ingress, S3 storage and monitoring. Ideal for development and testing, but also for small-scale production deployments. You can host hundreds of simultaneous participants in your rooms by running OpenVidu Community in a sufficiently powerful server!
- **OpenVidu** <span class="openvidu-tag openvidu-pro-tag">PRO</span>: OpenVidu commercial edition. It is a multi-server deployment with all the features of OpenVidu Community plus 2x performance, scalability, fault tolerance and improved monitoring and observability. Ideal for large-scale production deployments with heavy traffic that require the highest standards. You can start with OpenVidu Community and upgrade to OpenVidu Pro when needed.

Visit [openvidu.io](https://openvidu.io) to learn more about what OpenVidu has to offer.
Visit [openvidu.io](https://openvidu.io?utm_source=livekit-tutorials&utm_medium=referral&utm_campaign=about-openvidu-page) to learn more about what OpenVidu has to offer.

<br>
2 changes: 1 addition & 1 deletion docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ Every application client below is interchangeable with the others, because:
Every application server below has two specific purposes:

- Generate LiveKit tokens on demand for any [application client](#application-client-tutorials).
- Receive LiveKit [webhook events](https://docs.livekit.io/home/server/webhooks/){target=\_blank}.
- Receive LiveKit [webhook events](https://openvidu.io/latest/docs/reference/webhooks/){target=\_blank}.

To do so they all define two REST endpoints:

Expand Down
8 changes: 4 additions & 4 deletions docs/openvidu-vs-livekit.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,13 @@ Whenever you are ready to deploy your real-time application, OpenVidu for produc

## Egress and Ingress out of the box

LiveKit allows you to export media from a Room (for example recording it) or import media into a Room (for example ingesting a video file), using [Egress](https://docs.livekit.io/home/egress/overview/){target="_blank"} and [Ingress](https://docs.livekit.io/home/ingress/overview/){target="_blank"} services respectively. These modules are independent of LiveKit Server and must be correctly configured and connected via a shared Redis.
LiveKit allows you to export media from a Room (for example recording it) or import media into a Room (for example ingesting a video file), using [Egress](https://openvidu.io/latest/docs/reference/egress/?utm_source=livekit-tutorials&utm_medium=referral&utm_campaign=comparison-page){target="_blank"} and [Ingress](https://openvidu.io/latest/docs/reference/ingress/?utm_source=livekit-tutorials&utm_medium=referral&utm_campaign=comparison-page){target="_blank"} services respectively. These modules are independent of LiveKit Server and must be correctly configured and connected via a shared Redis.

When running OpenVidu locally you will have all these services properly integrated, so you can focus on developing your app without worrying about anything else.

## S3 compatible storage

If you are planning to make use of the [Egress](https://docs.livekit.io/home/egress/overview/){target="_blank"} service to export media out of your Rooms, you will need an S3 compatible bucket to store the generated files, and configure your LiveKit deployment to use it.
If you are planning to make use of the [Egress](https://openvidu.io/latest/docs/reference/egress/?utm_source=livekit-tutorials&utm_medium=referral&utm_campaign=comparison-page){target="_blank"} service to export media out of your Rooms, you will need an S3 compatible bucket to store the generated files, and configure your LiveKit deployment to use it.

When running OpenVidu locally you will have an S3 compatible storage available right away ([MinIO](https://min.io/){target="_blank"}).

Expand Down Expand Up @@ -60,7 +60,7 @@ This setup is straightforward, but what if you need to test your app from multip
1. LiveKit Server open source does not natively support HTTPS. You'll need a reverse proxy to serve LiveKit Server over HTTPS.
2. Even with HTTPS, your SSL certificate might not be valid for local network addresses. You'll need to accept it in the browser for web apps, and install it on mobile devices.

[OpenVidu Local Deployment](https://openvidu.io/latest/docs/self-hosting/local/){:target="\_blank"} addresses these issues by providing a magic domain name `openvidu-local.dev` that resolves to any IP specified as a subdomain and provides a valid wildcard certificate for HTTPS. This is similar to services like [nip.io](https://nip.io){:target="\_blank"}, [traefik.me](https://traefik.me){:target="\_blank"}, or [localtls](https://github.com/Corollarium/localtls){:target="\_blank}.
[OpenVidu Local Deployment](https://openvidu.io/latest/docs/self-hosting/local/?utm_source=livekit-tutorials&utm_medium=referral&utm_campaign=comparison-page){:target="\_blank"} addresses these issues by providing a magic domain name `openvidu-local.dev` that resolves to any IP specified as a subdomain and provides a valid wildcard certificate for HTTPS. This is similar to services like [nip.io](https://nip.io){:target="\_blank"}, [traefik.me](https://traefik.me){:target="\_blank"}, or [localtls](https://github.com/Corollarium/localtls){:target="\_blank}.

When using OpenVidu Local Deployment, you can access OpenVidu Server (which is 100% LiveKit compatible) and your app from any device on your local network with a valid HTTPS certificate. The following table shows the URLs to access the deployment and your application locally and from other devices on your network:

Expand Down Expand Up @@ -99,4 +99,4 @@ This setup simplifies the configuration of local OpenVidu deployments with SSL,

The HTTPS offered by `openvidu-local.dev` is intended for development or testing purposes with the only goal of making your local devices trust your application (which is mandatory in WebRTC applications). For any other use case, it should be treated with the same security considerations as plain HTTP.

For production deployments, you should follow the [official OpenVidu installation guide](https://openvidu.io/latest/docs/self-hosting/deployment-types/){target="_blank"}.
For production deployments, you should follow the [official OpenVidu installation guide](https://openvidu.io/latest/docs/self-hosting/deployment-types/?utm_source=livekit-tutorials&utm_medium=referral&utm_campaign=comparison-page){target="_blank"}.
7 changes: 7 additions & 0 deletions docs/overrides/main.html
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
<!-- Elements added to main will be displayed on all pages -->
{% extends "base.html" %}

{% block announce %}
<a href="https://openvidu.io/?utm_source=livekit-tutorials&utm_medium=referral&utm_campaign=announce-cta" target="_blank" style="color: inherit;">
These are vanilla LiveKit tutorials. Want the same LiveKit-compatible API, self-hosted and production-ready out of the box? <strong>Try OpenVidu &rarr;</strong>
</a>
{% endblock %}

{% block libs %}

{{ super() }}
Expand Down Expand Up @@ -63,6 +69,7 @@
{% block extrahead %}
<!-- Add head tags that need to be applied before here -->
{{ super() }}
{% include "partials/json-ld.html" %}
<!-- Add head tags that need to be applied afterwards here -->
{% endblock %}

Expand Down
14 changes: 11 additions & 3 deletions docs/overrides/partials/footer.html
Original file line number Diff line number Diff line change
Expand Up @@ -92,11 +92,19 @@

<div class="grid-container footer-grid">

<div class="grid-33 push-66">
<div class="grid-25 tablet-grid-50 mobile-grid-50">
<div class="md-copyright">
<a href="/about-openvidu/">What is OpenVidu?</a> &middot;
<a href="/openvidu-vs-livekit/">OpenVidu vs LiveKit</a> &middot;
<a href="https://openvidu.io?utm_source=livekit-tutorials&utm_medium=referral&utm_campaign=footer" target="_blank" rel="noopener">openvidu.io</a>
</div>
</div>

<div class="grid-25 tablet-grid-50 mobile-grid-50">
{% include "partials/social.html" %}
</div>

<div class="grid-33 pull-33 tablet-grid-50">
<div class="grid-25 tablet-grid-50 mobile-grid-50">
<div class="grid-container footer-conditions-list">
<div class="grid-33 tablet-grid-33 mobile-grid-33">
<a href="/conditions/privacy-policy/">Privacy policy</a>
Expand All @@ -110,7 +118,7 @@
</div>
</div>

<div class="grid-33 pull-33 tablet-grid-50">
<div class="grid-25 tablet-grid-50 mobile-grid-50">
{% include "partials/copyright.html" %}
</div>
</div>
Expand Down
65 changes: 65 additions & 0 deletions docs/overrides/partials/json-ld.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
{#-
JSON-LD structured data (schema.org) for search engines and AI crawlers.

Emits Organization + WebSite + WebPage on every page. The Organization
node deliberately reuses the exact same @id, name, description, logo,
sameAs and contactPoint as the main openvidu.io site's own JSON-LD
(docs/overrides/partials/json-ld.html there) rather than declaring a
separate one for this subdomain — the whole point is that this LiveKit
tutorial content gets attributed to the same publisher as openvidu.io,
not read as an unrelated LiveKit fan site (openvidu-marketing issue #39).

Per-page-type richness (TechArticle/HowTo step markup, BreadcrumbList,
FAQPage) is a deliberate follow-up, not attempted here.
-#}

{%- if page and page.canonical_url %}
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "Organization",
"@id": "https://openvidu.io/#organization",
"name": "OpenVidu",
"url": "https://openvidu.io/",
"description": "Self-hosted videoconferencing and custom WebRTC solutions: OpenVidu Meet, a ready-to-use video calling solution, and OpenVidu Platform, SDKs to build custom real-time applications. Self-hosted, performant, scalable and fault tolerant.",
"logo": {
"@type": "ImageObject",
"url": "https://openvidu.io/assets/images/openvidu_vert_white_bg_trans_cropped2.png"
},
"sameAs": [
"https://github.com/OpenVidu",
"https://x.com/openvidu",
"https://openvidu.medium.com/",
"https://www.youtube.com/@openvidu"
],
"contactPoint": {
"@type": "ContactPoint",
"contactType": "customer support",
"url": "https://openvidu.io/support/"
}
},
{
"@type": "WebSite",
"@id": "https://livekit-tutorials.openvidu.io/#website",
"name": {{ config.site_name | tojson }},
"url": "https://livekit-tutorials.openvidu.io/",
"inLanguage": "en",
"publisher": { "@id": "https://openvidu.io/#organization" }
},
{
"@type": "WebPage",
"@id": {{ page.canonical_url | tojson }},
"url": {{ page.canonical_url | tojson }},
"name": {{ (page.meta.title if page.meta and page.meta.title else page.title) | string | tojson }},
{%- if page.meta and page.meta.description %}
"description": {{ page.meta.description | tojson }},
{%- endif %}
"isPartOf": { "@id": "https://livekit-tutorials.openvidu.io/#website" },
"publisher": { "@id": "https://openvidu.io/#organization" }
}
]
}
</script>
{%- endif %}
2 changes: 1 addition & 1 deletion docs/tutorials/advanced-features/recording-basic.md
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ There are three new environment variables:

Besides, the `index.js` file configures the server to serve static files from the `public` directory.

It also initializes the `EgressClient`, which will help interacting with [Egress API](https://docs.livekit.io/home/egress/api/){:target="\_blank"} to manage recordings, and the `S3Service`, which will help interacting with the S3 bucket:
It also initializes the `EgressClient`, which will help interacting with [Egress API](https://openvidu.io/latest/docs/reference/egress/){:target="\_blank"} to manage recordings, and the `S3Service`, which will help interacting with the S3 bucket:

```javascript title="<a href='https://github.com/OpenVidu/openvidu-livekit-tutorials/blob/master/advanced-features/openvidu-recording-basic-node/src/index.js#L34-L39' target='_blank'>index.js</a>" linenums="34"
const egressClient = new EgressClient(
Expand Down
Loading