From f68e7ac2c473084bae2f0125560376c492e3ef1c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 3 Jan 2025 19:17:28 +0000 Subject: [PATCH] Version 3.0.0-beta3 updated. Non-versioned pages untouched --- 3.0.0-beta3/404.html | 3860 ------------ .../docs/comparing-openvidu/index.html | 4227 ------------- .../how-to/index.html | 4482 ------------- .../developing-your-openvidu-app/index.html | 4147 ------------- 3.0.0-beta3/docs/getting-started/index.html | 4380 ------------- .../docs/openvidu-call/docs/index.html | 4621 -------------- 3.0.0-beta3/docs/openvidu-call/index.html | 4146 ------------- .../classes/ParticipantModel.html | 852 --- .../components/ActivitiesPanelComponent.html | 488 -- .../components/AdminDashboardComponent.html | 402 -- .../components/AdminLoginComponent.html | 333 - .../BroadcastingActivityComponent.html | 352 -- .../components/ChatPanelComponent.html | 326 - .../components/LayoutComponent.html | 427 -- .../components/PanelComponent.html | 446 -- .../ParticipantPanelItemComponent.html | 358 -- .../ParticipantsPanelComponent.html | 345 -- .../RecordingActivityComponent.html | 421 -- .../components/StreamComponent.html | 467 -- .../components/ToolbarComponent.html | 600 -- .../components/VideoconferenceComponent.html | 1035 ---- ...iesPanelBroadcastingActivityDirective.html | 686 -- .../directives/ActivitiesPanelDirective.html | 472 -- ...vitiesPanelRecordingActivityDirective.html | 686 -- .../directives/AdditionalPanelsDirective.html | 405 -- ...AdminDashboardRecordingsListDirective.html | 608 -- .../AdminDashboardTitleDirective.html | 608 -- .../directives/AdminLoginErrorDirective.html | 608 -- .../directives/AdminLoginTitleDirective.html | 608 -- .../directives/AudioEnabledDirective.html | 249 - .../directives/ChatPanelDirective.html | 534 -- .../directives/LangDirective.html | 262 - .../directives/LangOptionsDirective.html | 253 - .../directives/LayoutDirective.html | 554 -- .../directives/LivekitUrlDirective.html | 250 - .../directives/MinimalDirective.html | 249 - .../directives/PanelDirective.html | 369 -- .../directives/ParticipantNameDirective.html | 248 - .../ParticipantPanelItemDirective.html | 495 -- ...ParticipantPanelItemElementsDirective.html | 500 -- ...rticipantPanelItemMuteButtonDirective.html | 686 -- .../ParticipantsPanelDirective.html | 530 -- .../directives/PrejoinDirective.html | 249 - .../directives/StreamDirective.html | 489 -- .../StreamDisplayAudioDetectionDirective.html | 681 -- ...StreamDisplayParticipantNameDirective.html | 681 -- .../StreamVideoControlsDirective.html | 681 -- .../directives/TokenDirective.html | 250 - .../directives/TokenErrorDirective.html | 249 - ...ToolbarActivitiesPanelButtonDirective.html | 251 - .../ToolbarAdditionalButtonsDirective.html | 358 -- ...arAdditionalButtonsPossitionDirective.html | 251 - ...oolbarAdditionalPanelButtonsDirective.html | 343 - ...olbarBackgroundEffectsButtonDirective.html | 251 - .../ToolbarBroadcastingButtonDirective.html | 251 - .../ToolbarChatPanelButtonDirective.html | 251 - .../directives/ToolbarDirective.html | 351 -- .../ToolbarDisplayLogoDirective.html | 251 - .../ToolbarDisplayRoomNameDirective.html | 251 - .../ToolbarFullscreenButtonDirective.html | 251 - .../ToolbarLeaveButtonDirective.html | 251 - ...olbarParticipantsPanelButtonDirective.html | 251 - .../ToolbarRecordingButtonDirective.html | 251 - .../ToolbarScreenshareButtonDirective.html | 251 - .../ToolbarSettingsButtonDirective.html | 251 - .../directives/VideoEnabledDirective.html | 249 - .../fonts/ionicons.eot | Bin 112650 -> 0 bytes .../fonts/ionicons.svg | 2090 ------- .../fonts/ionicons.ttf | Bin 112472 -> 0 bytes .../fonts/ionicons.woff | Bin 65912 -> 0 bytes .../fonts/ionicons.woff2 | Bin 50632 -> 0 bytes .../fonts/roboto-v15-latin-300.eot | Bin 16205 -> 0 bytes .../fonts/roboto-v15-latin-300.svg | 314 - .../fonts/roboto-v15-latin-300.ttf | Bin 32664 -> 0 bytes .../fonts/roboto-v15-latin-300.woff | Bin 18520 -> 0 bytes .../fonts/roboto-v15-latin-300.woff2 | Bin 14524 -> 0 bytes .../fonts/roboto-v15-latin-700.eot | Bin 16208 -> 0 bytes .../fonts/roboto-v15-latin-700.svg | 310 - .../fonts/roboto-v15-latin-700.ttf | Bin 32500 -> 0 bytes .../fonts/roboto-v15-latin-700.woff | Bin 18568 -> 0 bytes .../fonts/roboto-v15-latin-700.woff2 | Bin 14552 -> 0 bytes .../fonts/roboto-v15-latin-italic.eot | Bin 17534 -> 0 bytes .../fonts/roboto-v15-latin-italic.svg | 323 - .../fonts/roboto-v15-latin-italic.ttf | Bin 33404 -> 0 bytes .../fonts/roboto-v15-latin-italic.woff | Bin 19880 -> 0 bytes .../fonts/roboto-v15-latin-italic.woff2 | Bin 11500 -> 0 bytes .../fonts/roboto-v15-latin-regular.eot | Bin 16227 -> 0 bytes .../fonts/roboto-v15-latin-regular.svg | 308 - .../fonts/roboto-v15-latin-regular.ttf | Bin 32652 -> 0 bytes .../fonts/roboto-v15-latin-regular.woff | Bin 18520 -> 0 bytes .../fonts/roboto-v15-latin-regular.woff2 | Bin 14584 -> 0 bytes .../graph/dependencies.svg | 1140 ---- .../images/compodoc-vectorise-inverted.png | Bin 21782 -> 0 bytes .../images/compodoc-vectorise-inverted.svg | 201 - .../images/compodoc-vectorise.png | Bin 21325 -> 0 bytes .../images/compodoc-vectorise.svg | 201 - .../images/favicon.ico | Bin 5430 -> 0 bytes .../openvidu-components-angular/index.html | 238 - .../injectables/BroadcastingService.html | 361 -- .../injectables/OpenViduService.html | 470 -- .../injectables/PanelService.html | 618 -- .../injectables/ParticipantService.html | 1145 ---- .../injectables/RecordingService.html | 361 -- .../injectables/TranslateService.html | 522 -- .../ActivitiesPanelStatusEvent.html | 216 - .../interfaces/BroadcastingEvent.html | 277 - .../BroadcastingStartRequestedEvent.html | 276 - .../interfaces/BroadcastingStatusInfo.html | 361 -- .../BroadcastingStopRequestedEvent.html | 276 - .../interfaces/ChatPanelStatusEvent.html | 216 - .../interfaces/LangOption.html | 309 - .../interfaces/PanelStatusEvent.html | 277 - .../interfaces/PanelStatusInfo.html | 436 -- .../interfaces/ParticipantProperties.html | 386 -- .../ParticipantTrackPublication.html | 565 -- .../ParticipantsPanelStatusEvent.html | 216 - .../RecordingDeleteRequestedEvent.html | 216 - .../RecordingDownloadClickedEvent.html | 216 - .../interfaces/RecordingEvent.html | 322 - .../interfaces/RecordingInfo.html | 748 --- .../interfaces/RecordingPlayClickedEvent.html | 216 - .../RecordingStartRequestedEvent.html | 216 - .../interfaces/RecordingStatusInfo.html | 406 -- .../RecordingStopRequestedEvent.html | 216 - .../interfaces/SettingsPanelStatusEvent.html | 216 - .../js/compodoc.js | 14 - .../js/lazy-load-graphs.js | 44 - .../js/libs/EventDispatcher.js | 5 - .../js/libs/bootstrap-native.js | 2 - .../js/libs/clipboard.min.js | 7 - .../js/libs/custom-elements-es5-adapter.js | 15 - .../js/libs/custom-elements.min.js | 38 - .../js/libs/d3.v3.min.js | 2 - .../js/libs/deep-iterator.js | 2 - .../js/libs/es6-shim.min.js | 12 - .../js/libs/htmlparser.js | 23 - .../js/libs/innersvg.js | 9 - .../js/libs/lit-html.js | 1 - .../js/libs/prism.js | 46 - .../js/libs/promise.min.js | 6 - .../js/libs/svg-pan-zoom.min.js | 3 - .../js/libs/tablesort.min.js | 6 - .../js/libs/tablesort.number.min.js | 6 - .../js/libs/vis.min.js | 47 - .../js/libs/zepto.min.js | 2 - .../openvidu-components-angular/js/menu-wc.js | 423 -- .../js/menu-wc_es5.js | 40 - .../openvidu-components-angular/js/menu.js | 269 - .../openvidu-components-angular/js/routes.js | 301 - .../js/search/lunr.min.js | 6 - .../js/search/search-lunr.js | 65 - .../js/search/search.js | 273 - .../js/search/search_index.js | 4 - .../js/sourceCode.js | 58 - .../js/svg-pan-zoom.controls.js | 53 - .../openvidu-components-angular/js/tabs.js | 21 - .../openvidu-components-angular/js/tree.js | 147 - .../openvidu-components-angular/license.html | 353 -- .../miscellaneous/enumerations.html | 495 -- .../miscellaneous/typealiases.html | 234 - .../miscellaneous/variables.html | 226 - .../openvidu-components-angular/modules.html | 216 - .../modules/ApiDirectiveModule.html | 1271 ---- .../ApiDirectiveModule/dependencies.svg | 834 --- .../OpenViduComponentsDirectiveModule.html | 641 -- .../dependencies.svg | 330 - .../openvidu-components-angular/overview.html | 1394 ----- .../pipes/RemoteParticipantTracksPipe.html | 295 - .../properties.html | 182 - .../styles/bootstrap-card.css | 219 - .../styles/bootstrap.min.css | 6 - .../styles/compodoc.css | 1124 ---- .../styles/dark.css | 121 - .../styles/ionicons.min.css | 11 - .../styles/laravel.css | 113 - .../styles/material.css | 131 - .../styles/original.css | 51 - .../styles/postmark.css | 238 - .../styles/prism.css | 301 - .../styles/readthedocs.css | 117 - .../styles/reset.css | 129 - .../styles/stripe.css | 106 - .../styles/style.css | 110 - .../styles/tablesort.css | 33 - .../styles/vagrant.css | 130 - 3.0.0-beta3/docs/releases/index.html | 4548 -------------- .../configuration/changing-config/index.html | 4246 ------------- .../configuration/in-depth/index.html | 4101 ------------ .../configuration/reference/index.html | 4557 -------------- .../self-hosting/deployment-types/index.html | 4341 ------------- .../self-hosting/elastic/aws/admin/index.html | 4361 ------------- .../elastic/aws/install/index.html | 4442 ------------- .../docs/self-hosting/elastic/index.html | 3984 ------------ .../elastic/on-premises/admin/index.html | 4278 ------------- .../elastic/on-premises/install/index.html | 4646 -------------- 3.0.0-beta3/docs/self-hosting/faq/index.html | 4119 ------------ .../docs/self-hosting/ha/aws/admin/index.html | 4366 ------------- .../self-hosting/ha/aws/install/index.html | 4474 ------------- 3.0.0-beta3/docs/self-hosting/ha/index.html | 3985 ------------ .../ha/on-premises/admin/index.html | 4280 ------------- .../ha/on-premises/install-dlb/index.html | 4702 -------------- .../ha/on-premises/install-nlb/index.html | 4718 -------------- .../index.html | 4133 ------------ .../enable-disable-modules/index.html | 4006 ------------ .../how-to-guides/enable-webhooks/index.html | 4133 ------------ .../how-to-guides/external-s3/index.html | 4196 ------------- .../how-to-guides/force-443-tls/index.html | 4098 ------------ .../self-hosting/how-to-guides/index.html | 3982 ------------ .../docs/self-hosting/local/index.html | 4395 ------------- .../fault-tolerance/index.html | 4270 ------------- .../self-hosting/production-ready/index.html | 4009 ------------ .../observability/grafana-stack/index.html | 4324 ------------- .../production-ready/observability/index.html | 3984 ------------ .../openvidu-dashboard/index.html | 4268 ------------- .../production-ready/performance/index.html | 4290 ------------- .../production-ready/scalability/index.html | 4154 ------------- .../single-node/aws/admin/index.html | 4156 ------------- .../single-node/aws/install/index.html | 4324 ------------- .../docs/self-hosting/single-node/index.html | 3984 ------------ .../single-node/on-premises/admin/index.html | 4175 ------------- .../on-premises/install/index.html | 4414 ------------- .../tutorials/advanced-features/index.html | 3979 ------------ .../recording-advanced/index.html | 5135 --------------- .../recording-basic/index.html | 5520 ----------------- .../tutorials/angular-components/index.html | 3997 ------------ .../openvidu-additional-panels/index.html | 4793 -------------- .../openvidu-admin-dashboard/index.html | 4687 -------------- .../index.html | 4720 -------------- .../openvidu-custom-chat-panel/index.html | 4797 -------------- .../openvidu-custom-layout/index.html | 4812 -------------- .../openvidu-custom-panels/index.html | 4741 -------------- .../index.html | 4737 -------------- .../index.html | 4759 -------------- .../index.html | 4774 -------------- .../openvidu-custom-stream/index.html | 4728 -------------- .../openvidu-custom-toolbar/index.html | 4734 -------------- .../openvidu-custom-ui/index.html | 4716 -------------- .../openvidu-toggle-hand/index.html | 4773 -------------- .../openvidu-toolbar-buttons/index.html | 4745 -------------- .../openvidu-toolbar-panel-buttons/index.html | 4730 -------------- .../application-client/android/index.html | 5091 --------------- .../application-client/angular/index.html | 5005 --------------- .../application-client/electron/index.html | 4822 -------------- .../tutorials/application-client/index.html | 4002 ------------ .../application-client/ionic/index.html | 5213 ---------------- .../application-client/ios/index.html | 4940 --------------- .../application-client/javascript/index.html | 4863 --------------- .../application-client/react/index.html | 4965 --------------- .../application-client/vue/index.html | 4956 --------------- .../application-server/dotnet/index.html | 4870 --------------- .../application-server/go/index.html | 4734 -------------- .../tutorials/application-server/index.html | 3995 ------------ .../application-server/java/index.html | 4701 -------------- .../application-server/node/index.html | 4721 -------------- .../application-server/php/index.html | 4748 -------------- .../application-server/python/index.html | 4754 -------------- .../application-server/ruby/index.html | 4718 -------------- .../application-server/rust/index.html | 4880 --------------- .../angular-components/index.html | 4255 ------------- .../ui-components/react-components/index.html | 4212 ------------- 3.0.0-beta3/index.html | 4201 +------------ 3.0.0-beta3/overrides/home.html | 61 - 3.0.0-beta3/overrides/main.html | 133 - 3.0.0-beta3/overrides/partials/footer.html | 121 - 3.0.0-beta3/overrides/partials/header.html | 158 - 3.0.0-beta3/search/search_index.json | 2 +- 3.0.0-beta3/sitemap.xml | 28 - 3.0.0-beta3/sitemap.xml.gz | Bin 931 -> 911 bytes sitemap_index.xml | 4 + 269 files changed, 18 insertions(+), 423420 deletions(-) delete mode 100644 3.0.0-beta3/404.html delete mode 100644 3.0.0-beta3/docs/comparing-openvidu/index.html delete mode 100644 3.0.0-beta3/docs/developing-your-openvidu-app/how-to/index.html delete mode 100644 3.0.0-beta3/docs/developing-your-openvidu-app/index.html delete mode 100644 3.0.0-beta3/docs/getting-started/index.html delete mode 100644 3.0.0-beta3/docs/openvidu-call/docs/index.html delete mode 100644 3.0.0-beta3/docs/openvidu-call/index.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/classes/ParticipantModel.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/components/ActivitiesPanelComponent.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/components/AdminDashboardComponent.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/components/AdminLoginComponent.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/components/BroadcastingActivityComponent.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/components/ChatPanelComponent.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/components/LayoutComponent.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/components/PanelComponent.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/components/ParticipantPanelItemComponent.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/components/ParticipantsPanelComponent.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/components/RecordingActivityComponent.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/components/StreamComponent.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/components/ToolbarComponent.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/components/VideoconferenceComponent.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/directives/ActivitiesPanelBroadcastingActivityDirective.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/directives/ActivitiesPanelDirective.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/directives/ActivitiesPanelRecordingActivityDirective.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/directives/AdditionalPanelsDirective.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/directives/AdminDashboardRecordingsListDirective.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/directives/AdminDashboardTitleDirective.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/directives/AdminLoginErrorDirective.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/directives/AdminLoginTitleDirective.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/directives/AudioEnabledDirective.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/directives/ChatPanelDirective.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/directives/LangDirective.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/directives/LangOptionsDirective.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/directives/LayoutDirective.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/directives/LivekitUrlDirective.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/directives/MinimalDirective.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/directives/PanelDirective.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/directives/ParticipantNameDirective.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/directives/ParticipantPanelItemDirective.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/directives/ParticipantPanelItemElementsDirective.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/directives/ParticipantPanelItemMuteButtonDirective.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/directives/ParticipantsPanelDirective.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/directives/PrejoinDirective.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/directives/StreamDirective.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/directives/StreamDisplayAudioDetectionDirective.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/directives/StreamDisplayParticipantNameDirective.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/directives/StreamVideoControlsDirective.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/directives/TokenDirective.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/directives/TokenErrorDirective.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/directives/ToolbarActivitiesPanelButtonDirective.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/directives/ToolbarAdditionalButtonsDirective.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/directives/ToolbarAdditionalButtonsPossitionDirective.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/directives/ToolbarAdditionalPanelButtonsDirective.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/directives/ToolbarBackgroundEffectsButtonDirective.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/directives/ToolbarBroadcastingButtonDirective.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/directives/ToolbarChatPanelButtonDirective.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/directives/ToolbarDirective.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/directives/ToolbarDisplayLogoDirective.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/directives/ToolbarDisplayRoomNameDirective.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/directives/ToolbarFullscreenButtonDirective.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/directives/ToolbarLeaveButtonDirective.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/directives/ToolbarParticipantsPanelButtonDirective.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/directives/ToolbarRecordingButtonDirective.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/directives/ToolbarScreenshareButtonDirective.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/directives/ToolbarSettingsButtonDirective.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/directives/VideoEnabledDirective.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/fonts/ionicons.eot delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/fonts/ionicons.svg delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/fonts/ionicons.ttf delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/fonts/ionicons.woff delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/fonts/ionicons.woff2 delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/fonts/roboto-v15-latin-300.eot delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/fonts/roboto-v15-latin-300.svg delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/fonts/roboto-v15-latin-300.ttf delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/fonts/roboto-v15-latin-300.woff delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/fonts/roboto-v15-latin-300.woff2 delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/fonts/roboto-v15-latin-700.eot delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/fonts/roboto-v15-latin-700.svg delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/fonts/roboto-v15-latin-700.ttf delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/fonts/roboto-v15-latin-700.woff delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/fonts/roboto-v15-latin-700.woff2 delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/fonts/roboto-v15-latin-italic.eot delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/fonts/roboto-v15-latin-italic.svg delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/fonts/roboto-v15-latin-italic.ttf delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/fonts/roboto-v15-latin-italic.woff delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/fonts/roboto-v15-latin-italic.woff2 delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/fonts/roboto-v15-latin-regular.eot delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/fonts/roboto-v15-latin-regular.svg delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/fonts/roboto-v15-latin-regular.ttf delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/fonts/roboto-v15-latin-regular.woff delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/fonts/roboto-v15-latin-regular.woff2 delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/graph/dependencies.svg delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/images/compodoc-vectorise-inverted.png delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/images/compodoc-vectorise-inverted.svg delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/images/compodoc-vectorise.png delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/images/compodoc-vectorise.svg delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/images/favicon.ico delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/index.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/injectables/BroadcastingService.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/injectables/OpenViduService.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/injectables/PanelService.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/injectables/ParticipantService.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/injectables/RecordingService.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/injectables/TranslateService.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/interfaces/ActivitiesPanelStatusEvent.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/interfaces/BroadcastingEvent.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/interfaces/BroadcastingStartRequestedEvent.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/interfaces/BroadcastingStatusInfo.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/interfaces/BroadcastingStopRequestedEvent.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/interfaces/ChatPanelStatusEvent.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/interfaces/LangOption.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/interfaces/PanelStatusEvent.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/interfaces/PanelStatusInfo.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/interfaces/ParticipantProperties.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/interfaces/ParticipantTrackPublication.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/interfaces/ParticipantsPanelStatusEvent.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/interfaces/RecordingDeleteRequestedEvent.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/interfaces/RecordingDownloadClickedEvent.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/interfaces/RecordingEvent.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/interfaces/RecordingInfo.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/interfaces/RecordingPlayClickedEvent.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/interfaces/RecordingStartRequestedEvent.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/interfaces/RecordingStatusInfo.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/interfaces/RecordingStopRequestedEvent.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/interfaces/SettingsPanelStatusEvent.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/js/compodoc.js delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/js/lazy-load-graphs.js delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/js/libs/EventDispatcher.js delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/js/libs/bootstrap-native.js delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/js/libs/clipboard.min.js delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/js/libs/custom-elements-es5-adapter.js delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/js/libs/custom-elements.min.js delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/js/libs/d3.v3.min.js delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/js/libs/deep-iterator.js delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/js/libs/es6-shim.min.js delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/js/libs/htmlparser.js delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/js/libs/innersvg.js delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/js/libs/lit-html.js delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/js/libs/prism.js delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/js/libs/promise.min.js delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/js/libs/svg-pan-zoom.min.js delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/js/libs/tablesort.min.js delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/js/libs/tablesort.number.min.js delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/js/libs/vis.min.js delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/js/libs/zepto.min.js delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/js/menu-wc.js delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/js/menu-wc_es5.js delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/js/menu.js delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/js/routes.js delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/js/search/lunr.min.js delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/js/search/search-lunr.js delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/js/search/search.js delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/js/search/search_index.js delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/js/sourceCode.js delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/js/svg-pan-zoom.controls.js delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/js/tabs.js delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/js/tree.js delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/license.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/miscellaneous/enumerations.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/miscellaneous/typealiases.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/miscellaneous/variables.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/modules.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/modules/ApiDirectiveModule.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/modules/ApiDirectiveModule/dependencies.svg delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/modules/OpenViduComponentsDirectiveModule.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/modules/OpenViduComponentsDirectiveModule/dependencies.svg delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/overview.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/pipes/RemoteParticipantTracksPipe.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/properties.html delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/styles/bootstrap-card.css delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/styles/bootstrap.min.css delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/styles/compodoc.css delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/styles/dark.css delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/styles/ionicons.min.css delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/styles/laravel.css delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/styles/material.css delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/styles/original.css delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/styles/postmark.css delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/styles/prism.css delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/styles/readthedocs.css delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/styles/reset.css delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/styles/stripe.css delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/styles/style.css delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/styles/tablesort.css delete mode 100644 3.0.0-beta3/docs/reference-docs/openvidu-components-angular/styles/vagrant.css delete mode 100644 3.0.0-beta3/docs/releases/index.html delete mode 100644 3.0.0-beta3/docs/self-hosting/configuration/changing-config/index.html delete mode 100644 3.0.0-beta3/docs/self-hosting/configuration/in-depth/index.html delete mode 100644 3.0.0-beta3/docs/self-hosting/configuration/reference/index.html delete mode 100644 3.0.0-beta3/docs/self-hosting/deployment-types/index.html delete mode 100644 3.0.0-beta3/docs/self-hosting/elastic/aws/admin/index.html delete mode 100644 3.0.0-beta3/docs/self-hosting/elastic/aws/install/index.html delete mode 100644 3.0.0-beta3/docs/self-hosting/elastic/index.html delete mode 100644 3.0.0-beta3/docs/self-hosting/elastic/on-premises/admin/index.html delete mode 100644 3.0.0-beta3/docs/self-hosting/elastic/on-premises/install/index.html delete mode 100644 3.0.0-beta3/docs/self-hosting/faq/index.html delete mode 100644 3.0.0-beta3/docs/self-hosting/ha/aws/admin/index.html delete mode 100644 3.0.0-beta3/docs/self-hosting/ha/aws/install/index.html delete mode 100644 3.0.0-beta3/docs/self-hosting/ha/index.html delete mode 100644 3.0.0-beta3/docs/self-hosting/ha/on-premises/admin/index.html delete mode 100644 3.0.0-beta3/docs/self-hosting/ha/on-premises/install-dlb/index.html delete mode 100644 3.0.0-beta3/docs/self-hosting/ha/on-premises/install-nlb/index.html delete mode 100644 3.0.0-beta3/docs/self-hosting/how-to-guides/create-configure-AWS-certificate/index.html delete mode 100644 3.0.0-beta3/docs/self-hosting/how-to-guides/enable-disable-modules/index.html delete mode 100644 3.0.0-beta3/docs/self-hosting/how-to-guides/enable-webhooks/index.html delete mode 100644 3.0.0-beta3/docs/self-hosting/how-to-guides/external-s3/index.html delete mode 100644 3.0.0-beta3/docs/self-hosting/how-to-guides/force-443-tls/index.html delete mode 100644 3.0.0-beta3/docs/self-hosting/how-to-guides/index.html delete mode 100644 3.0.0-beta3/docs/self-hosting/local/index.html delete mode 100644 3.0.0-beta3/docs/self-hosting/production-ready/fault-tolerance/index.html delete mode 100644 3.0.0-beta3/docs/self-hosting/production-ready/index.html delete mode 100644 3.0.0-beta3/docs/self-hosting/production-ready/observability/grafana-stack/index.html delete mode 100644 3.0.0-beta3/docs/self-hosting/production-ready/observability/index.html delete mode 100644 3.0.0-beta3/docs/self-hosting/production-ready/observability/openvidu-dashboard/index.html delete mode 100644 3.0.0-beta3/docs/self-hosting/production-ready/performance/index.html delete mode 100644 3.0.0-beta3/docs/self-hosting/production-ready/scalability/index.html delete mode 100644 3.0.0-beta3/docs/self-hosting/single-node/aws/admin/index.html delete mode 100644 3.0.0-beta3/docs/self-hosting/single-node/aws/install/index.html delete mode 100644 3.0.0-beta3/docs/self-hosting/single-node/index.html delete mode 100644 3.0.0-beta3/docs/self-hosting/single-node/on-premises/admin/index.html delete mode 100644 3.0.0-beta3/docs/self-hosting/single-node/on-premises/install/index.html delete mode 100644 3.0.0-beta3/docs/tutorials/advanced-features/index.html delete mode 100644 3.0.0-beta3/docs/tutorials/advanced-features/recording-advanced/index.html delete mode 100644 3.0.0-beta3/docs/tutorials/advanced-features/recording-basic/index.html delete mode 100644 3.0.0-beta3/docs/tutorials/angular-components/index.html delete mode 100644 3.0.0-beta3/docs/tutorials/angular-components/openvidu-additional-panels/index.html delete mode 100644 3.0.0-beta3/docs/tutorials/angular-components/openvidu-admin-dashboard/index.html delete mode 100644 3.0.0-beta3/docs/tutorials/angular-components/openvidu-custom-activities-panel/index.html delete mode 100644 3.0.0-beta3/docs/tutorials/angular-components/openvidu-custom-chat-panel/index.html delete mode 100644 3.0.0-beta3/docs/tutorials/angular-components/openvidu-custom-layout/index.html delete mode 100644 3.0.0-beta3/docs/tutorials/angular-components/openvidu-custom-panels/index.html delete mode 100644 3.0.0-beta3/docs/tutorials/angular-components/openvidu-custom-participant-panel-item-element/index.html delete mode 100644 3.0.0-beta3/docs/tutorials/angular-components/openvidu-custom-participant-panel-item/index.html delete mode 100644 3.0.0-beta3/docs/tutorials/angular-components/openvidu-custom-participants-panel/index.html delete mode 100644 3.0.0-beta3/docs/tutorials/angular-components/openvidu-custom-stream/index.html delete mode 100644 3.0.0-beta3/docs/tutorials/angular-components/openvidu-custom-toolbar/index.html delete mode 100644 3.0.0-beta3/docs/tutorials/angular-components/openvidu-custom-ui/index.html delete mode 100644 3.0.0-beta3/docs/tutorials/angular-components/openvidu-toggle-hand/index.html delete mode 100644 3.0.0-beta3/docs/tutorials/angular-components/openvidu-toolbar-buttons/index.html delete mode 100644 3.0.0-beta3/docs/tutorials/angular-components/openvidu-toolbar-panel-buttons/index.html delete mode 100644 3.0.0-beta3/docs/tutorials/application-client/android/index.html delete mode 100644 3.0.0-beta3/docs/tutorials/application-client/angular/index.html delete mode 100644 3.0.0-beta3/docs/tutorials/application-client/electron/index.html delete mode 100644 3.0.0-beta3/docs/tutorials/application-client/index.html delete mode 100644 3.0.0-beta3/docs/tutorials/application-client/ionic/index.html delete mode 100644 3.0.0-beta3/docs/tutorials/application-client/ios/index.html delete mode 100644 3.0.0-beta3/docs/tutorials/application-client/javascript/index.html delete mode 100644 3.0.0-beta3/docs/tutorials/application-client/react/index.html delete mode 100644 3.0.0-beta3/docs/tutorials/application-client/vue/index.html delete mode 100644 3.0.0-beta3/docs/tutorials/application-server/dotnet/index.html delete mode 100644 3.0.0-beta3/docs/tutorials/application-server/go/index.html delete mode 100644 3.0.0-beta3/docs/tutorials/application-server/index.html delete mode 100644 3.0.0-beta3/docs/tutorials/application-server/java/index.html delete mode 100644 3.0.0-beta3/docs/tutorials/application-server/node/index.html delete mode 100644 3.0.0-beta3/docs/tutorials/application-server/php/index.html delete mode 100644 3.0.0-beta3/docs/tutorials/application-server/python/index.html delete mode 100644 3.0.0-beta3/docs/tutorials/application-server/ruby/index.html delete mode 100644 3.0.0-beta3/docs/tutorials/application-server/rust/index.html delete mode 100644 3.0.0-beta3/docs/ui-components/angular-components/index.html delete mode 100644 3.0.0-beta3/docs/ui-components/react-components/index.html delete mode 100644 3.0.0-beta3/overrides/home.html delete mode 100644 3.0.0-beta3/overrides/main.html delete mode 100644 3.0.0-beta3/overrides/partials/footer.html delete mode 100644 3.0.0-beta3/overrides/partials/header.html diff --git a/3.0.0-beta3/404.html b/3.0.0-beta3/404.html deleted file mode 100644 index 2d43f682..00000000 --- a/3.0.0-beta3/404.html +++ /dev/null @@ -1,3860 +0,0 @@ - - - - -
- - - - - - - - - - - - - - - - -This section compares OpenVidu to other videoconference/streaming solutions, to better understand what it is, what it is not, and what advantages and disadvantages it may have over them.
-First of all, and perhaps the most obvious question, how does OpenVidu differ from LiveKit, and what kind of relationship is there between them? This can be answer with four simple points:
-LiveKit comes in two flavors: LiveKit Open Source and LiveKit Cloud.
-LiveKit Open Source is probably the most advanced and feature-rich open source WebRTC stack available today. It has a simple but very versatile API design, and has a large collection of SDKs to integrate into your application on both the frontend and backend. Regardless of your technology stack, there is sure to be a LiveKit Open Source SDK available for you! This is why OpenVidu is fully compatible with LiveKit protocols. You can use any LiveKit SDK to build your application, and it will work seamlessly with an OpenVidu deployment.
-What does OpenVidu Community bring over LiveKit Open Source?
-With OpenVidu Community you get a handful of features on top of LiveKit Open Source that will help with the development of your application:
-Deploying LiveKit Open Source in production requires devops/SRE experience to operate your own network of media servers, load balance between them, maintain high uptime and monitor the health of your deployment. OpenVidu Pro makes this an easy process, hiding most of the complexities of such an advanced deployment. With OpenVidu Pro you can self-host a fault-tolerant, scalable and observable cluster, while doubling the original LiveKit Open Source performance to handle twice as many media streams with the same hardware.
-LiveKit Cloud is the official SaaS solution for LiveKit. They manage the infrastructure, with a pricing model based on the total bandwidth consumed by your application. It offers certain advantages over LiveKit Open Source:
-Where does OpenVidu Pro stand in relation to LiveKit Cloud? OpenVidu Pro aims to deliver the same advanced benefits as LiveKit Cloud, but as a self-hosted solution. We intend to provide a performant, fault tolerant, scalable and observable cluster that is easy to deploy, configure and administrate in your own infrastructure. For now, OpenVidu Pro brings:
-This includes many services like Agora, GetStream, Daily, Vonage, Jitsi as a Service, Whereby, Zoom SDK, Dolby Millicast, Amazon Chime SDK.
-The main difference between OpenVidu and these services is who owns the infrastructure, and where your users' data flows. All these SaaS solutions provide:
-Using a SaaS provider is a great option for some use cases, but not all. OpenVidu is designed to be self-hosted. This allows you to have full control over your infrastructure and data, taking the most out of your own resources and complying with the most strict regulations. While having the best features provided by SaaS: scalability, fault tolerance, observability. See Production ready for more information.
-This includes projects such as Kurento, mediasoup, Pion, Janus, Jitsi Videobridge or Medooze.
-These are all media servers. More specifically, they fall under the umbrella of the so-called SFUs (Selective Forwarding Units): they are able to receive media streams from different clients and selectively forward them to other clients, usually without transcoding or mixing the media.
-SFUs are generally low-level tools. Using them directly to implement real-time applications requires a deep understanding of signaling protocols, codecs, networking and other low-level concepts. OpenVidu is a higher-level abstraction compared to SFUs. It internally uses SFUs to rely the media streams (more specifically Pion and mediasoup), but hides all complexities to offer a simpler way to develop videoconferencing and live streaming applications.
-mediasoup is a WebRTC SFU. It is a minimalist media server with a super low level API that allows building custom real-time applications. Compared to other SFUs, mediasoup is well known for its outstanding performance.
-OpenVidu uses mediasoup internally to transmit media streams. We have embedded mediasoup as the WebRTC engine right at the core of LiveKit Open Source, which allows OpenVidu to offer the fantastic APIs and SDKs of LiveKit while providing the cutting-edge performance of mediasoup. Learn more about mediasoup integration in section Performance.
-All these well-known video conferencing tools are final applications that provide little to no customization at all. They are proprietary, closed-source apps designed to be used as-is, and they are not intended to be integrated into other systems.
-OpenVidu is inherently different, as it provides a set of APIs and SDKs to integrate real-time video capabilities into your own application. In other words: with OpenVidu you can easily build your own custom Microsoft Teams, Google Meet or Zoom-like application. See Use cases for some examples of what you can build with OpenVidu.
- - - - - - - - - - - - - - - - - - -This page is a collection of the most common operations you may want to perform in your application while integrating OpenVidu. Depending on the scope of the operation, these operations will be performed on the client side using a LiveKit Client SDK, or on the server side using a LiveKit Server SDK (or directly using the HTTP server API). Consider the architecture of an OpenVidu application:
-You can use this page as a cheat sheet to know at a glance how to do something, and you have links to the LiveKit reference documentation of each operation for a more detailed explanation.
---All client side operations are exemplified using the LiveKit JS Client SDK. For other client SDKs, refer to the corresponding LiveKit reference documentation.
-
The application client needs an access token to connect to a Room. This token must be generated by the application server. Visit LiveKit reference documentation to learn how to generate access tokens:
-- --
To connect to a Room you need the URL of your OpenVidu deployment (which is a WebSocket URL) and the access token generated by your application server.
-import { Room } from "livekit-client";
-
-const room = new Room();
-await room.connect(wsUrl, token);
-
- --
- --
You can directly publish the default camera and microphone of the device using methods setCameraEnabled
and setMicrophoneEnabled
of the LocalParticipant
object:
// Publish a video track from the default camera
-await room.localParticipant.setCameraEnabled(true);
-// Publish an audio track from the default microphone
-await room.localParticipant.setMicrophoneEnabled(true);
-
It is also possible to publish both of them at the same time using method LocalParticipant.enableCameraAndMicrophone
, which has the advantage of showing a single permission dialog to the user:
// Publish both default video and audio tracks triggering a single permission dialog
-await room.localParticipant.enableCameraAndMicrophone();
-
To craft a custom Track, you can use the LocalParticipant.createTracks
method and publish them with LocalParticipant.publishTrack
:
var tracks = await room.localParticipant.createTracks({
- audio: {
- deviceId: "default",
- autoGainControl: true,
- echoCancellation: true,
- noiseSuppression: true
- },
- video: {
- deviceId: 'frontcamera';
- facingMode: 'user'
- },
-});
-await Promise.all([
- room.localParticipant.publishTrack(tracks[0]),
- room.localParticipant.publishTrack(tracks[1]),
-]);
-
- --
To mute the default camera and microphone Tracks:
-await room.localParticipant.setCameraEnabled(false);
-await room.localParticipant.setMicrophoneEnabled(false);
-
To mute/unmute a custom Track:
- -- --
To completely stop sending a Track to the Room, you must unpublish it:
- -The second boolean parameter indicates if the local Track should be stopped. This usually means freeing the device capturing it (switching off the camera LED, for example).
-- --
You can share information between Participants of a Room in different ways.
-First of all, you can set Room metadata that will be available for all clients in the Room
object. You do so in your application server when calling the CreateRoom
API (available for all LiveKit Server SDKs and the HTTP Server API). The Room metadata will be available in the client side like this:
You can update the Room metadata at any time from your application server with the UpdateRoomMetadata
API (available for all LiveKit Server SDKs and the HTTP Server API). The client side will be notified of the change with the roomMetadataChanged
event of the Room
object:
Secondly, you can also set Participant metadata. You do so when creating an access token in your application server, setting metadata
field of the JWT.
Participants can also update their own metadata from the client side, if their access token was created with grant canUpdateOwnMetadata
.
The client side will be notified of the change with the participantMetadataChanged
event of the Room
and/or Participant
object:
// To handle all metadata changes of all participants
-room.on(RoomEvent.ParticipantMetadataChanged, (previousMetadata: string, participant) => {
- console.log('New metadata for participant', participant.identity, participant.metadata);
-});
-
-// To handle only metadata changes of a specific participant
-participant.on(ParticipantEvent.ParticipantMetadataChanged, (previousMetadata) => {
- console.log('New metadata for participant', participant.identity, participant.metadata);
-});
-
Finally, you can send messages to Participants in the Room using the LocalParticipant.publishData
method:
const data: Uint8Array = new TextEncoder().encode(JSON.stringify(''));
-room.localParticipant.publishData(data, { reliable: true, topic: 'chat', destinationIdentities: ['participant-identity'] });
-
The DataPublishOptions
allow setting the reliability of the message (depending on the nature of the message it can be sent as a reliable or lossy message), a topic to easily filter messages, and the participants that will receive the message.
The client side will be notified of the message with the dataReceived
event of the Room
and/or Participant
object:
// To receive all messages from the Room
-room.on(RoomEvent.DataReceived, (payload: Uint8Array, participant: Participant, kind: DataPacket_Kind) => {
- const strData = new TextDecoder().decode(payload);
- console.log('Received data from', participant.identity, strData);
-});
-
-// To receive messages only from a specific participant
-participant.on(ParticipantEvent.DataReceived, (payload: Uint8Array, kind: DataPacket_Kind) => {
- const strData = new TextDecoder().decode(payload);
- console.log('Received data from', participant.identity, strData);
-});
-
- --
Except for the generation of access tokens, it is possible for all the logic of your application to be contained entirely on the client side. Nonetheless, some use cases may require the management of the Rooms from the server side.
-These operations are only available in the server SDKs, and not in the client SDKs:
-You have here the complete list of the server-side operations, documented for the HTTP Server API. All the LiveKit Server SDKs have the same operations.
-To quickly publish a screen sharing Track:
- -You can also create custom screen tracks, for example capturing the audio of the screen and fine-tuning the video capture options (checkout the ScreenTrackOptions interface for detailed information):
-const screenTracks = await room.localParticipant.createScreenTracks({
- audio: true,
- contentHint: "detail",
- preferCurrentTab: true,
- video: {
- displaySurface: "window"
- }
-});
-await Promise.all([
- room.localParticipant.publishTrack(screenTracks[0]),
- room.localParticipant.publishTrack(screenTracks[1]),
-]);
-
- --
It is possible to apply a virtual background to video tracks. In this way you can blur the background or replace it with an image.
-It is necessary to install an additional dependency to use this feature:
- -To blur the background:
-import { BackgroundBlur } from '@livekit/track-processors';
-
-const videoTrack = await createLocalVideoTrack();
-const blur = BackgroundBlur(10);
-await videoTrack.setProcessor(blur);
-
To replace the background with an image:
-import { VirtualBackground } from '@livekit/track-processors';
-
-const videoTrack = await createLocalVideoTrack();
-const image = VirtualBackground('https://picsum.photos/400');
-await videoTrack.setProcessor(image);
-
- --
You can record your Rooms using the Egress module. Egress allows exporting media from a Room in different formats, including
-Visit the LiveKit reference documentation for a detailed explanation of Egress:
-- --
Your application server may receive webhooks coming from the OpenVidu deployment. These webhooks inform about events happening in the Rooms, including when a Room is created and finished, when a Participant joins and leaves a Room, when a Track is published and unpublished, and when Egress/Ingress operations take place in a Room.
-Every application server tutorial here is ready to receive webhooks: Application Server Tutorials.
-Visit the LiveKit reference documentation for a detailed explanation of each webhook event:
-- -- - - - - - - - - - - - - - - - - - -
Here's a high-level overview of the steps involved in building an OpenVidu application:
-The quickest way is to use OpenVidu local deployment.
-OpenVidu is fully compatibly with LiveKit APIs. This means that any LiveKit Server SDK can be used in your application server.
-The only mandatory task to perform in your application server is:
-There are also other optional tasks that you can perform from your application server, depending on your requirements:
-RoomServiceClient
exposed by the Server API. These methods are also available in all LiveKit Server SDKs.To get you started, here is a list of all available LiveKit Server SDKs and an application server tutorial using them. These tutorials are all set up to generate access tokens and receive webhook events, so they are perfect starting points for your application server.
---There is no .NET SDK for LiveKit available. Visit the tutorial to learn how to create tokens and receive Webhook events directly from your .NET application server.
-
If your backend technology does not have its own SDK, you have two different options:
-Consume the Server API directly: Reference Docs
-Use the livekit-cli: GitHub Repository
-There are two main strategies to build the UI of your client application:
-The table below summarizes the key differences between these two strategies to help you make an informed decision:
-- | UI Components | -Low-level client SDKs | -
---|---|---|
What is it? | -Frontend libraries offering videoconferencing components to build your own application. There are Angular Components or React Components | -Integrate OpenVidu from scratch in your web, mobile or desktop application using LiveKit Client SDKs | -
Pros | -
|
-
|
-
Cons | -
|
-
|
-
Tutorials | -Angular Components tutorials | -Application client tutorials | -
Whatever strategy you choose to build the UI of your application, most common steps to perform are:
-Of course, depending on the use case, this may not be necessary for all users, or other additional steps may need to be taken. For example, in a live streaming application, only presenters will publish Tracks, while all other viewers will only subscribe to them. Or it is possible that users may need exchange messages through a chat. Each specific application will need to refine its use of the UI Components or client SDKs to meet its requirements.
-Here is the list of all LiveKit Client SDKs: LiveKit Client SDKs. Below is a list of application client tutorials, which are perfect starting points for your client application.
- -You have different options to deploy OpenVidu in a production-ready environment, depending on the level of scalability, fault tolerance and observability you need. See Deployment types for more information.
- - - - - - - - - - - - - - - - - - -OpenVidu is a platform that allows you to implement real-time applications. You can build your brand new OpenVidu app from scratch, but it is also very easy to integrate OpenVidu in your already existing application.
-OpenVidu is based on WebRTC technology and allows developing any kind of use case you can imagine: one-to-one calls, video conference rooms, massive live streaming events, management and processing of drones and camera feeds...
-OpenVidu is built on the best open source technologies: LiveKit, from which it inherits all its amazing SDKs to integrate it into your front-end and back-end applications, and mediasoup, from which it inherits the best performance and optimization for media routing.
-
-
-
OpenVidu is a super versatile platform that can be used to build just about any kind of real-time application you can think of. Most common use cases can be classified into one of the following categories:
-Video conferencing rooms are virtual spaces where two or more users can send video and audio and interact with each other in real-time. They can scale in size, from a simple 1-to-1 call to a massive video conference with thousands of participants. For example:
-Live streaming applications allow one publisher to broadcast video to many viewers. It can be a single video feed, multiple video feeds (webcam and screen share) or there could be even multiple publishers. The general rule is that the ratio of viewers to publishers is very high, in the order of thousands.
-Ultra-low latency live streaming (below 300ms) allows for actual real-time interaction between the viewers and the publishers. This differs from traditional live streaming platforms where the latency is usually in the order of seconds. In this way you can build applications like:
-The future lies in the integration of cameras and sensors in all kinds of devices, everywhere: industry, homes, public spaces, emergency services... OpenVidu can be used to receive and process video and audio streams from these devices, and doing so in real-time. For example:
-Any OpenVidu application has 3 different parts:
-A Room is a virtual space where Participants can connect to send and receive media Tracks. Two Participants can only communicate if they are connected to the same Room.
-A Participant is a user connected to a specific Room. Each Participant can publish as many video and audio Tracks as needed, and subscribe to any other Participant's Tracks, as long as they are connected to the same Room.
-A Track is a data flow of audio or video. Participants create them from a local media source (a webcam, a microphone, a screen share) and publish them into a Room. Other Participants of the same Room can subscribe to them.
-With these three concepts you can build any kind of real-time application you can think of. The figure below shows two simple examples.
-OpenVidu is available in two editions:
-Type of deployment | -OpenVidu Local (development) |
-OpenVidu Single Node |
-OpenVidu Elastic |
-OpenVidu High Availability |
-
---|---|---|---|---|
OpenVidu Edition | -COMMUNITY PRO | -COMMUNITY | -PRO | -PRO | -
Suitability | -For local development in your laptop | -For applications with medium user load | -For applications with dynamic user load that require scalability | -For applications where both scalability and fault tolerance are critical | -
Features | -Friendly Docker Compose setup with Redis, Egress, Ingress, S3 storage and observability. With automatic certificate management to test across devices in your network | -Custom LiveKit distribution with Redis, Egress, Ingress, S3 storage and observability | -Same benefits as OpenVidu Single Node plus 2x performance, scalability and advanced observability | -Same benefits as OpenVidu Single Node and OpenVidu Elastic plus fault tolerance | -
Number of servers | -Your laptop | -1 Node | -1 Master Node + N Media Nodes |
-4 Master Nodes + N Media Nodes |
-
Installation instructions | -Install | -Install | -Install | -Install | -
Introducing OpenVidu Call, the premier videoconference application that showcases the full potential of the OpenVidu platform. OpenVidu Call is not just any videoconferencing tool; it’s the default and flagship app built with the robust and versatile OpenVidu Components.
-Download OpenVidu
- -Configure the local deployment
- -Run OpenVidu
- -To use a production-ready OpenVidu deployment, visit the official deployment guide.
-Configure Webhooks
-OpenVidu Call have an endpoint to receive webhooks from OpenVidu. For this reason, when using a production deployment you need to configure webhooks to point to your local application server in order to make it work. Check the Send Webhooks to a Local Application Server section for more information.
-Accessible via openvidu-local-deployment
-A pre-built OpenVidu Call application is launched as part of the openvidu-local-deployment and it can be accessible by visiting http://localhost:7880/openvidu-call/
.
If you want to explore and run the OpenVidu Call code locally, follow the instructions below.
-Navigate to the backend
directory:
Install the dependencies:
- -Start the application:
- -Launching another terminal, under the openvidu-call
directory:
Navigate to the frontend
directory:
Install the dependencies:
- -Start the application:
- -The application will be available at http://localhost:5080
.
The OpenVidu Call architecture is divided into two main components:
-The client-side application built with Angular that provides the user interface for the videoconference. It uses the OpenVidu Components library to create the videoconference layout with ease.
-The project architecture is divided into the following directories:
-guards
: Contains the guards that handle the authentication.models
: Contains the models that define the data structures.pages
: Contains the components that define the different pages of the application.services
: Contains the services that interact with the backend in a RESTful manner.Additionally, the project hosts the following files:
-app.component.ts
: The main file that initializes the Angular application.app-routes.ts
: Contains the routes that define the application navigation.app,config.ts
: Contains the configuration settings for the application. This file is where import for the OpenVidu Angular Components are defined.The server-side application built with Node.js and Express that manages the communication between the OpenVidu Server and the frontend.
-It uses the LiveKit Server SDK library to interact with the OpenVidu Server and handle the authentication, videoconference rooms, recordings, broadcasts, and other features.
-The project architecture is divided into the following directories:
-controllers
: Contains the controllers that handle the HTTP requests.services
: Contains the services that interact with the OpenVidu Server.models
: Contains the models that define the data structures.helpers
: Contains the helper functions.Additionally, the project hosts the following files:
-server.ts
: The main file that initializes the Express application.routes.ts
: Contains the routes that define the API endpoints.config.ts
: Contains the configuration settings for the application.OpenVidu Call provides user authentication to ensure that only authorized users can access the videoconference rooms. The authentication process is handled by the backend, which uses Basic Authentication to verify the user credentials.
-OpenVidu Call offers essential features that make video conferencing simple and intuitive for users. These features include:
-Multilingual
-Supports for multiple languages, allowing users to select their preferred language for the interface
-Device Selection
-Users can choose their preferred audio and video devices before and during the call
-Fullscreen Mode
-Offers a fullscreen mode for users to focus on the videoconference without any distractions
-Screen Sharing
-Allow users to share their screen and their camera at the same time with other participants in the call
-Powerful Layout
-Offers a powerful layout where users can view multiple participants simultaneously in a grid layout or focus on a single participant
-Chat Integration
-Built-in chat functionality enabling participants to send text messages to the group
-The advanced features of OpenVidu Call enhance the video conferencing experience by providing additional functionalities that improve collaboration and productivity.
-Speaker Detection
-Highlights the active speaker automatically, making it easier for participants to follow the conversation
-Automatic Reconnection
-Ensures that users are automatically reconnected to the call in case of temporary network issues
-Recording
-Supports recording of video conferences for later playback
-Broadcasting (Live Streaming)
-Allows live streaming of the video conference to platforms like YouTube, Twitch, and others for a wider audience
-Virtual Backgrounds
-Enables users to use virtual backgrounds during the call, enhancing privacy and professionalism
-An admin dashboard is integrated into OpenVidu Call to provide additional functionalities for the admin user.
-Admin Authentication
-Provides admin authentication to ensure that only authorized users can access the admin dashboard
-Recording Management
-Allows the admin user to view, download, and delete the recordings stored in the OpenVidu Server
-The process to build a Docker image of OpenVidu call is really easy, you just need to run the following instructions:
-Build the Docker image:
- -This script will create a Docker image with the name openvidu-call
.
Run the Docker container:
-docker run -p 6080:6080 \
--e LIVEKIT_URL=wss://your-livekit-server-url \
--e LIVEKIT_API_KEY=your-livekit-api-key \
--e LIVEKIT_API_SECRET=your-livekit-api-secret \
-openvidu-call
-
Once the container is running, you can access the OpenVidu Call application by visiting http://localhost:6080
.
To build the OpenVidu Call application without using Docker, you can follow the instructions:
-Build the frontend application:
- -Build the backend application:
- -Start the backend application:
- -Ready to use
-Experience all the features you need only with a click: multiparty videoconferences, screen sharing, chat, and more
- -Fully Customizable
-Built on an open-source license, OpenVidu Call offers full customization to fit your needs
- -Deploy Anywhere
-Install OpenVidu Call on your own servers or any cloud provider.
- -Secure room access
-OpenVidu Call offers a straightforward authentication system enabling users to join rooms with a single click.
-Additionally, it automatically generates unique room names, providing a distinct URL for each room. This allows users to easily share the URL with friends and colleagues to join the room.
-Setting up your room
-OpenVidu Call provides users with various options and configurations to personalize their experience before and after entering a room.
-This includes testing and selecting audio and video devices, choosing a nickname, and adjusting the preferred language.
-Multi-party videoconference
-OpenVidu Call offers a multi-party videoconference feature that allows users to connect with multiple participants in a single room.
-Flexible and easy to use, it allows you to see all participants at once, making it ideal for team meetings, webinars, and more.
-Chatting time!
-Chatting is an essential feature for any videoconference application.
-OpenVidu Call offers a chat feature that allows users to communicate with each other during a videoconference.
-Recording your sessions for posterity
-Recording your videoconference sessions is a great way to keep a record of important meetings, webinars, and more.
-Record, playback, download and share your videoconference sessions with OpenVidu Call's recording feature.
-Background effects
-Virtual backgrounds are a fun and useful feature that allows users to change their background during a videoconference.
-OpenVidu Call offers a virtual background feature that allows users to choose from a variety of backgrounds for enhancing privacy and professionalism.
-Recording Management
-Allow administrators to manage recordings, including deleting, downloading, and sharing them.
-The admin dashboard provides a simple interface to manage all recordings.
-Broadcasting (Live Streaming)
-Allows live streaming of the video conference to platforms like YouTube, Twitch, and others for a wider audience
-Automatic Reconnection
-Ensures that users are automatically reconnected to the call in case of temporary network issues
-Speaker Detection
-Highlights the active speaker automatically, making it easier for participants to follow the conversation
-Screen Sharing
-Allow users to share their screen and their camera at the same time with other participants in the call
-Fullscreen Mode
-Offers a fullscreen mode for users to focus on the videoconference without any distractions
-Powerful Layout
-Offers a powerful layout where users can view multiple participants simultaneously in a grid layout or focus on a single participant
--
- projects/openvidu-components-angular/src/lib/models/participant.model.ts
-
-
-
Class that represents a participant in the room.
- - - - - - -
- Properties- |
-
-
|
-
- Methods- |
-
-
|
-
- Accessors- |
-
-
|
-
-constructor(props: ParticipantProperties)
- |
- ||||||
-
- Parameters :
-
-
|
-
- - - colorProfile - - - | -
- Type : string
-
- |
-
- The color profile associated with the participant. -It specifies the visual representation of the participant in the user interface. - |
-
- - sid - | -
- getsid()
- |
-
- Returns the server assigned unique identifier for the participant. -
-
-
- Returns :
- string
-
- |
-
- - name - | -
- getname()
- |
-
- Returns the participant name. -
-
-
- Returns :
- string | undefined
-
- |
-
- - isCameraEnabled - | -
- getisCameraEnabled()
- |
-
- Returns if the participant has enabled its camera. -
- Returns :
- boolean
-
- |
-
- - isMicrophoneEnabled - | -
- getisMicrophoneEnabled()
- |
-
- Returns if the participant has enabled its microphone. -
- Returns :
- boolean
-
- |
-
- - isScreenShareEnabled - | -
- getisScreenShareEnabled()
- |
-
- Returns if the participant has enabled its screen share. -
- Returns :
- boolean
-
- |
-
- - isSpeaking - | -
- getisSpeaking()
- |
-
- Returns if the participant is speaking. -
- Returns :
- boolean
-
- |
-
- - tracks - | -
- gettracks()
- |
-
- Returns all the participant tracks. -
-
-
- Returns :
- ParticipantTrackPublication[]
-
- |
-
- - videoTracks - | -
- getvideoTracks()
- |
-
- Returns all the participant video tracks. -
-
-
- Returns :
- ParticipantTrackPublication[]
-
- |
-
- - audioTracks - | -
- getaudioTracks()
- |
-
- Returns all the participant audio tracks. -
-
-
- Returns :
- ParticipantTrackPublication[]
-
- |
-
- - cameraTracks - | -
- getcameraTracks()
- |
-
- Returns all the participant camera tracks. -
-
-
- Returns :
- ParticipantTrackPublication[]
-
- |
-
- - isLocal - | -
- getisLocal()
- |
-
- Returns if the participant is local. -
- Returns :
- boolean
-
- |
-
- - onlyHasAudioTracks - | -
- getonlyHasAudioTracks()
- |
-
- Returns if the participant has only audio tracks. -
- Returns :
- boolean
-
- |
-
- - onlyHasScreenTracks - | -
- getonlyHasScreenTracks()
- |
-
- Returns if the participant has only screen tracks. -
- Returns :
- boolean
-
- |
-
-
- projects/openvidu-components-angular/src/lib/components/panel/activities-panel/activities-panel.component.ts
-
-
-
The ActivitiesPanelComponent is the component that allows showing the activities panel. -This panel shows the recording and broadcasting activities.
- - - - --
- OnInit
-
changeDetection | -ChangeDetectionStrategy.OnPush |
-
selector | -ov-activities-panel |
-
styleUrls | -../panel.component.scss, |
-
templateUrl | -./activities-panel.component.html |
-
- - onBroadcastingStartRequested - | -
- Type : EventEmitter<BroadcastingStartRequestedEvent>
-
- |
-
- Provides event notifications that fire when start broadcasting button is clicked. -It provides the BroadcastingStartRequestedEvent payload as event data. - |
-
- - onBroadcastingStopRequested - | -
- Type : EventEmitter<BroadcastingStopRequestedEvent>
-
- |
-
- Provides event notifications that fire when stop broadcasting button is clicked. -It provides the BroadcastingStopRequestedEvent payload as event data. - |
-
- - onRecordingDeleteRequested - | -
- Type : EventEmitter<RecordingDeleteRequestedEvent>
-
- |
-
- Provides event notifications that fire when delete recording button has been clicked. -It provides the RecordingDeleteRequestedEvent payload as event data. - |
-
- - onRecordingDownloadClicked - | -
- Type : EventEmitter<RecordingDownloadClickedEvent>
-
- |
-
- Provides event notifications that fire when download recording button has been clicked. -It provides the RecordingDownloadClickedEvent payload as event data. - |
-
- - onRecordingPlayClicked - | -
- Type : EventEmitter<RecordingPlayClickedEvent>
-
- |
-
- Provides event notifications that fire when play recording button has been clicked. -It provides the RecordingPlayClickedEvent payload as event data. - |
-
- - onRecordingStartRequested - | -
- Type : EventEmitter<RecordingStartRequestedEvent>
-
- |
-
- This event is fired when the user clicks on the start recording button. -It provides the RecordingStartRequestedEvent payload as event data. - |
-
- - onRecordingStopRequested - | -
- Type : EventEmitter<RecordingStopRequestedEvent>
-
- |
-
- Provides event notifications that fire when stop recording button has been clicked. -It provides the RecordingStopRequestedEvent payload as event data. - |
-
With the following directives you can modify the default User Interface with the aim of fully customizing your videoconference application.
- -Parameter | -Type | -Reference | -
---|---|---|
recordingActivity | -boolean |
-ActivitiesPanelRecordingActivityDirective | -
broadcastingActivity | -boolean |
-ActivitiesPanelBroadcastingActivityDirective | -
-
- projects/openvidu-components-angular/src/lib/admin/admin-dashboard/admin-dashboard.component.ts
-
-
- OnInit
- OnDestroy
-
selector | -ov-admin-dashboard |
-
styleUrls | -./admin-dashboard.component.scss |
-
templateUrl | -./admin-dashboard.component.html |
-
- - onLoadMoreRecordingsRequested - | -
- Type : EventEmitter<void>
-
- |
-
- Provides event notifications that fire when load more button has been clicked. -The recordings should be updated using the REST API with the continuation token. - |
-
- - onLogoutRequested - | -
- Type : EventEmitter<void>
-
- |
-
- Provides event notifications that fire when logout button has been clicked. - |
-
- - onRecordingDeleteRequested - | -
- Type : EventEmitter<RecordingDeleteRequestedEvent>
-
- |
-
- Provides event notifications that fire when delete recording button has been clicked. -The recording should be deleted using the REST API. - |
-
- - onRefreshRecordingsRequested - | -
- Type : EventEmitter<void>
-
- |
-
- Provides event notifications that fire when refresh recordings button has been clicked. -The recordings should be updated using the REST API. - |
-
With the following directives you can modify the default User Interface with the aim of fully customizing your videoconference application.
- -Parameter | -Type | -Reference | -
---|---|---|
recordingsList | -RecordingInfo |
-AdminDashboardRecordingsListDirective | -
-
- projects/openvidu-components-angular/src/lib/admin/admin-login/admin-login.component.ts
-
-
- OnInit
-
selector | -ov-admin-login |
-
styleUrls | -./admin-login.component.scss |
-
templateUrl | -./admin-login.component.html |
-
- - onLoginRequested - | -
- Type : EventEmitter<literal type>
-
- |
-
- Provides event notifications that fire when login button has been clicked. -The event will contain the credentials value. - |
-
With the following directives you can modify the default User Interface with the aim of fully customizing your videoconference application.
- -Parameter | -Type | -Reference | -
---|---|---|
error | -any |
-AdminLoginErrorDirective | -
-
- projects/openvidu-components-angular/src/lib/components/panel/activities-panel/broadcasting-activity/broadcasting-activity.component.ts
-
-
-
The BroadcastingActivityComponent is the component that allows showing the broadcasting activity.
- - - - --
- OnInit
-
changeDetection | -ChangeDetectionStrategy.OnPush |
-
selector | -ov-broadcasting-activity |
-
styleUrls | -./broadcasting-activity.component.scss, |
-
templateUrl | -./broadcasting-activity.component.html |
-
- - onBroadcastingStartRequested - | -
- Type : EventEmitter<BroadcastingStartRequestedEvent>
-
- |
-
- Provides event notifications that fire when start broadcasting button is clicked. -It provides the BroadcastingStartRequestedEvent payload as event data. - |
-
- - onBroadcastingStopRequested - | -
- Type : EventEmitter<BroadcastingStopRequestedEvent>
-
- |
-
- Provides event notifications that fire when stop broadcasting button is clicked. -It provides the BroadcastingStopRequestedEvent payload as event data. - |
-
With the following directives you can modify the default User Interface with the aim of fully customizing your videoconference application.
- -No API directives available for this component.
- --
- projects/openvidu-components-angular/src/lib/components/panel/chat-panel/chat-panel.component.ts
-
-
-
The ChatPanelComponent is an integral part of the PanelComponent and serves as the interface for displaying the session chat.
- - - - --
- OnInit
- AfterViewInit
-
changeDetection | -ChangeDetectionStrategy.OnPush |
-
selector | -ov-chat-panel |
-
styleUrls | -../panel.component.scss, |
-
templateUrl | -./chat-panel.component.html |
-
- - -
Directive | -Reference | -
---|---|
*ovChatPanel | -ChatPanelDirective | -
With the following directives you can modify the default User Interface with the aim of fully customizing your videoconference application.
- -No API directives available for this component.
- - --
- projects/openvidu-components-angular/src/lib/components/layout/layout.component.ts
-
-
-
The LayoutComponent is hosted inside of the VideoconferenceComponent. -It is in charge of displaying the participants streams layout.
- - - - --
- OnInit
- OnDestroy
- AfterViewInit
-
changeDetection | -ChangeDetectionStrategy.OnPush |
-
selector | -ov-layout |
-
styleUrls | -./layout.component.scss |
-
templateUrl | -./layout.component.html |
-
- Properties- |
-
-
|
-
- - - localParticipant - - - | -
- Type : ParticipantModel | undefined
-
- |
-
- - - remoteParticipants - - - | -
- Type : ParticipantModel[]
-
- |
-
- Default value : []
- |
-
- - -
Directive | -Reference | -
---|---|
*ovLayout | -LayoutDirective | -
It is also providing us a way to replace the {@link StreamComponent Stream Component} (which is hosted inside of it) with a custom one. -It will recognise the following directive in a child element.
-Directive | -Reference | -
---|---|
*ovStream | -StreamDirective | -
With the following directives you can modify the default User Interface with the aim of fully customizing your videoconference application.
- -No API directives available for this component.
- - --
- projects/openvidu-components-angular/src/lib/components/panel/panel.component.ts
-
-
-
The PanelComponent is hosted inside of the VideoconferenceComponent. -It is in charge of displaying the videoconference panels providing functionalities to the videoconference app -such as the chat (ChatPanelComponent) and list of participants (ParticipantsPanelComponent)
- - - - --
- OnInit
-
changeDetection | -ChangeDetectionStrategy.OnPush |
-
selector | -ov-panel |
-
styleUrls | -./panel.component.scss |
-
templateUrl | -./panel.component.html |
-
- - onActivitiesPanelStatusChanged - | -
- Type : EventEmitter<ActivitiesPanelStatusEvent>
-
- |
-
- This event is fired when the activities panel status has been changed. -It provides the new status of the activities panel represented by the ActivitiesPanelStatusEvent object. - |
-
- - onChatPanelStatusChanged - | -
- Type : EventEmitter<ChatPanelStatusEvent>
-
- |
-
- This event is fired when the chat panel status has been changed. -It provides the new status of the chat panel represented by the ChatPanelStatusEvent object. - |
-
- - onParticipantsPanelStatusChanged - | -
- Type : EventEmitter<ParticipantsPanelStatusEvent>
-
- |
-
- This event is fired when the participants panel status has been changed. -It provides the new status of the participants panel represented by the ParticipantsPanelStatusEvent object. - |
-
- - onSettingsPanelStatusChanged - | -
- Type : EventEmitter<SettingsPanelStatusEvent>
-
- |
-
- This event is fired when the settings panel status has been changed. -It provides the new status of the settings panel represented by the SettingsPanelStatusEvent object. - |
-
- - -
With these kind of directives you can replace the default PanelComponent with your own component. You can also add your own components to the default ones.
-Directive | -Reference | -
---|---|
*ovPanel | -PanelDirective | -
It is also providing us a way to replace the children panels to the default panel. -It will recognise the following directive in a child element.
-Directive | -Reference | -
---|---|
*ovChatPanel | -ChatPanelDirective | -
*ovParticipantsPanel | -ParticipantsPanelDirective | -
*ovAdditionalPanels | -AdditionalPanelsDirective | -
With the following directives you can modify the default User Interface with the aim of fully customizing your videoconference application.
- -No API directives available for this component.
- - --
- projects/openvidu-components-angular/src/lib/components/panel/participants-panel/participant-panel-item/participant-panel-item.component.ts
-
-
-
The ParticipantPanelItemComponent is hosted inside of the ParticipantsPanelComponent. -It is in charge of displaying the participants information inside of the ParticipansPanelComponent.
- - - - --
- OnInit
- OnDestroy
-
changeDetection | -ChangeDetectionStrategy.OnPush |
-
selector | -ov-participant-panel-item |
-
styleUrls | -./participant-panel-item.component.scss |
-
templateUrl | -./participant-panel-item.component.html |
-
- - -
Directive | -Reference | -
---|---|
*ovParticipantPanelItem | -ParticipantPanelItemDirective | -
It is also providing us a way to add additional buttons to the default participant panel item. -It will recognise the following directive in a child element.
-Directive | -Reference | -
---|---|
*ovParticipantPanelItemElements | -ParticipantPanelItemElementsDirective | -
With the following directives you can modify the default User Interface with the aim of fully customizing your videoconference application.
- -Parameter | -Type | -Reference | -
---|---|---|
muteButton | -boolean |
-ParticipantPanelItemMuteButtonDirective | -
-
- projects/openvidu-components-angular/src/lib/components/panel/participants-panel/participants-panel/participants-panel.component.ts
-
-
-
The ParticipantsPanelComponent is hosted inside of the PanelComponent. -It is in charge of displaying the participants connected to the session. -This component is composed by the ParticipantPanelItemComponent.
- - - - --
- OnInit
- OnDestroy
- AfterViewInit
-
changeDetection | -ChangeDetectionStrategy.OnPush |
-
selector | -ov-participants-panel |
-
styleUrls | -../../panel.component.scss, |
-
templateUrl | -./participants-panel.component.html |
-
- - -
Directive | -Reference | -
---|---|
*ovParticipantsPanel | -ParticipantsPanelDirective | -
As the ParticipantsPanelComponent is composed by ParticipantPanelItemComponent, it is also providing us a way to replace the participant item with a custom one. -It will recognise the following directive in a child element.
-Directive | -Reference | -
---|---|
*ovParticipantPanelItem | -ParticipantPanelItemDirective | -
With the following directives you can modify the default User Interface with the aim of fully customizing your videoconference application.
- -No API directives available for this component.
- - --
- projects/openvidu-components-angular/src/lib/components/panel/activities-panel/recording-activity/recording-activity.component.ts
-
-
-
The RecordingActivityComponent is the component that allows showing the recording activity.
- - - - --
- OnInit
-
changeDetection | -ChangeDetectionStrategy.OnPush |
-
selector | -ov-recording-activity |
-
styleUrls | -./recording-activity.component.scss, |
-
templateUrl | -./recording-activity.component.html |
-
- - onRecordingDeleteRequested - | -
- Type : EventEmitter<RecordingDeleteRequestedEvent>
-
- |
-
- Provides event notifications that fire when delete recording button has been clicked. -It provides the RecordingDeleteRequestedEvent payload as event data. - |
-
- - onRecordingDownloadClicked - | -
- Type : EventEmitter<RecordingDownloadClickedEvent>
-
- |
-
- Provides event notifications that fire when download recording button has been clicked. -It provides the RecordingDownloadClickedEvent payload as event data. - |
-
- - onRecordingPlayClicked - | -
- Type : EventEmitter<RecordingPlayClickedEvent>
-
- |
-
- Provides event notifications that fire when play recording button has been clicked. -It provides the RecordingPlayClickedEvent payload as event data. - |
-
- - onRecordingStartRequested - | -
- Type : EventEmitter<RecordingStartRequestedEvent>
-
- |
-
- This event is fired when the user clicks on the start recording button. -It provides the RecordingStartRequestedEvent payload as event data. - |
-
- - onRecordingStopRequested - | -
- Type : EventEmitter<RecordingStopRequestedEvent>
-
- |
-
- Provides event notifications that fire when stop recording button has been clicked. -It provides the RecordingStopRequestedEvent payload as event data. - |
-
With the following directives you can modify the default User Interface with the aim of fully customizing your videoconference application.
- -No API directives available for this component.
- --
- projects/openvidu-components-angular/src/lib/components/stream/stream.component.ts
-
-
-
The StreamComponent is hosted inside of the LayoutComponent. -It is in charge of displaying the participant video stream in the videoconference layout.
- - - - --
- OnInit
- OnDestroy
-
selector | -ov-stream |
-
styleUrls | -./stream.component.scss |
-
templateUrl | -./stream.component.html |
-
- Inputs- |
-
-
|
-
- Accessors- |
-
-
|
-
- - track - | -
- Type : ParticipantTrackPublication
-
- |
-
- - track - | -||||||
- settrack(track: ParticipantTrackPublication)
- |
- ||||||
-
-
- Parameters :
-
-
-
-
- Returns :
- void
-
- |
-
- - -
With these kind of directives you can replace the default StreamComponent with your own component. You can also add your own components to the default ones.
-Directive | -Reference | -
---|---|
*ovStream | -StreamDirective | -
With the following directives you can modify the default User Interface with the aim of fully customizing your videoconference application.
- -Parameter | -Type | -Reference | -
---|---|---|
displayParticipantName | -boolean |
-StreamDisplayParticipantNameDirective | -
displayAudioDetection | -boolean |
-StreamDisplayAudioDetectionDirective | -
videoControls | -boolean |
-StreamVideoControlsDirective | -
-
- projects/openvidu-components-angular/src/lib/components/toolbar/toolbar.component.ts
-
-
-
The ToolbarComponent is hosted inside of the VideoconferenceComponent. -It is in charge of displaying the participants controlls for handling the media, panels and more videoconference features.
- - - - --
- OnInit
- OnDestroy
- AfterViewInit
-
changeDetection | -ChangeDetectionStrategy.OnPush |
-
selector | -ov-toolbar |
-
styleUrls | -./toolbar.component.scss |
-
templateUrl | -./toolbar.component.html |
-
- - onAudioEnabledChanged - | -
- Type : EventEmitter<boolean>
-
- |
-
- This event is emitted when the video state changes, providing information about if the video is enabled (true) or disabled (false). - |
-
- - onBroadcastingStopRequested - | -
- Type : EventEmitter<BroadcastingStopRequestedEvent>
-
- |
-
- Provides event notifications that fire when stop broadcasting has been requested. -It provides the BroadcastingStopRequestedEvent payload as event data. - |
-
- - onFullscreenEnabledChanged - | -
- Type : EventEmitter<boolean>
-
- |
-
- This event is emitted when the fullscreen state changes, providing information about if the fullscreen is enabled (true) or disabled (false). - |
-
- - onRecordingStartRequested - | -
- Type : EventEmitter<RecordingStartRequestedEvent>
-
- |
-
- This event is fired when the user clicks on the start recording button. -It provides the RecordingStartRequestedEvent payload as event data. - |
-
- - onRecordingStopRequested - | -
- Type : EventEmitter<RecordingStopRequestedEvent>
-
- |
-
- Provides event notifications that fire when stop recording has been requested. -It provides the RecordingStopRequestedEvent payload as event data. - |
-
- - onRoomDisconnected - | -
- Type : EventEmitter<void>
-
- |
-
- This event is emitted when the room has been disconnected. - |
-
- - onScreenShareEnabledChanged - | -
- Type : EventEmitter<boolean>
-
- |
-
- This event is emitted when the screen share state changes, providing information about if the screen share is enabled (true) or disabled (false). - |
-
- - onVideoEnabledChanged - | -
- Type : EventEmitter<boolean>
-
- |
-
- This event is emitted when the video state changes, providing information about if the video is enabled (true) or disabled (false). - |
-
- - -
With these kind of directives you can replace the default ToolbarComponent with your own component. You can also add your own components to the default ones.
-Directive | -Reference | -
---|---|
*ovToolbar | -ToolbarDirective | -
It is also providing us a way to add additional buttons to the default toolbar. -It will recognise the following directive in a child element.
-Directive | -Reference | -
---|---|
*ovToolbarAdditionalButtons | -ToolbarAdditionalButtonsDirective | -
*ovToolbarAdditionalPanelButtons | -ToolbarAdditionalPanelButtonsDirective | -
With the following directives you can modify the default User Interface with the aim of fully customizing your videoconference application.
- -Parameter | -Type | -Reference | -
---|---|---|
screenshareButton | -boolean |
-ToolbarScreenshareButtonDirective | -
recordingButton | -boolean |
-ToolbarRecordingButtonDirective | -
broadcastingButton | -boolean |
-ToolbarBroadcastingButtonDirective | -
fullscreenButton | -boolean |
-ToolbarFullscreenButtonDirective | -
backgroundEffectsButton | -boolean |
-ToolbarBackgroundEffectsButtonDirective | -
settingsButton | -boolean |
-ToolbarSettingsButtonDirective | -
leaveButton | -boolean |
-ToolbarLeaveButtonDirective | -
participantsPanelButton | -boolean |
-ToolbarParticipantsPanelButtonDirective | -
chatPanelButton | -boolean |
-ToolbarChatPanelButtonDirective | -
activitiesPanelButton | -boolean |
-ToolbarActivitiesPanelButtonDirective | -
displayRoomName | -boolean |
-ToolbarDisplayRoomNameDirective | -
displayLogo | -boolean |
-ToolbarDisplayLogoDirective | -
-
- projects/openvidu-components-angular/src/lib/components/videoconference/videoconference.component.ts
-
-
-
The VideoconferenceComponent is the parent of all OpenVidu components. -It allow us to create a modern, useful and powerful videoconference apps with ease.
- - - - --
- OnInit
- OnDestroy
- AfterViewInit
-
selector | -ov-videoconference |
-
styleUrls | -./videoconference.component.scss |
-
templateUrl | -./videoconference.component.html |
-
- - onActivitiesPanelStatusChanged - | -
- Type : EventEmitter<ActivitiesPanelStatusEvent>
-
- |
-
- This event is fired when the activities panel status has been changed. -It provides the new status of the activities panel as ActivitiesPanelStatusEvent payload. - |
-
- - onAudioDeviceChanged - | -
- Type : EventEmitter<CustomDevice>
-
- |
-
- This event is emitted when the selected audio device changes, providing information about the new custom device that has been selected. - |
-
- - onAudioEnabledChanged - | -
- Type : EventEmitter<boolean>
-
- |
-
- This event is emitted when the audio state changes, providing information about if the audio is enabled (true) or disabled (false). - |
-
- - onBroadcastingStartRequested - | -
- Type : EventEmitter<BroadcastingStartRequestedEvent>
-
- |
-
- Provides event notifications that fire when start broadcasting button is clicked. -It provides the BroadcastingStartRequestedEvent payload as event data. - |
-
- - onBroadcastingStopRequested - | -
- Type : EventEmitter<BroadcastingStopRequestedEvent>
-
- |
-
- Provides event notifications that fire when stop broadcasting button is clicked. -It provides the BroadcastingStopRequestedEvent payload as event data. - |
-
- - onChatPanelStatusChanged - | -
- Type : EventEmitter<ChatPanelStatusEvent>
-
- |
-
- This event is fired when the chat panel status has been changed. -It provides the new status of the chat panel as ChatPanelStatusEvent payload. - |
-
- - onFullscreenEnabledChanged - | -
- Type : EventEmitter<boolean>
-
- |
-
- The event is emitted when the fullscreen state changes, providing information about if the fullscreen is enabled (true) or disabled (false). - |
-
- - onLangChanged - | -
- Type : EventEmitter<LangOption>
-
- |
-
- This event is emitted when the language changes, providing information about the new language that has been selected. - |
-
- - onParticipantCreated - | -
- Type : EventEmitter<ParticipantModel>
-
- |
-
- Provides event notifications that fire when local participant is created. -It provides the ParticipantModel payload as event data. - |
-
- - onParticipantsPanelStatusChanged - | -
- Type : EventEmitter<ParticipantsPanelStatusEvent>
-
- |
-
- This event is fired when the participants panel status has been changed. -It provides the new status of the participants panel as ParticipantsPanelStatusEvent payload. - |
-
- - onReadyToJoin - | -
- Type : EventEmitter<void>
-
- |
-
- Provides event notifications that fire when the participant is ready to join to the room. This event is only emitted when the prejoin page has been shown. - |
-
- - onRecordingDeleteRequested - | -
- Type : EventEmitter<RecordingDeleteRequestedEvent>
-
- |
-
- Provides event notifications that fire when delete recording button has been clicked. -It provides the RecordingDeleteRequestedEvent payload as event data. - |
-
- - onRecordingDownloadClicked - | -
- Type : EventEmitter<RecordingDownloadClickedEvent>
-
- |
-
- Provides event notifications that fire when download recording button is clicked from ActivitiesPanelComponent. -It provides the RecordingDownloadClickedEvent payload as event data. - |
-
- - onRecordingPlayClicked - | -
- Type : EventEmitter<RecordingPlayClickedEvent>
-
- |
-
- Provides event notifications that fire when play recording button is clicked from ActivitiesPanelComponent. -It provides the RecordingPlayClickedEvent payload as event data. - |
-
- - onRecordingStartRequested - | -
- Type : EventEmitter<RecordingStartRequestedEvent>
-
- |
-
- This event is fired when the user clicks on the start recording button. -It provides the RecordingStartRequestedEvent payload as event data. - |
-
- - onRecordingStopRequested - | -
- Type : EventEmitter<RecordingStopRequestedEvent>
-
- |
-
- Provides event notifications that fire when stop recording button has been clicked. -It provides the RecordingStopRequestedEvent payload as event data. - |
-
- - onRoomCreated - | -
- Type : EventEmitter<Room>
-
- |
-
- Provides event notifications that fire when OpenVidu Room is created. -It provides the Room payload as event data. - |
-
- - onRoomDisconnected - | -
- Type : EventEmitter<void>
-
- |
-
- Provides event notifications that fire when the room has been disconnected. - |
-
- - onScreenShareEnabledChanged - | -
- Type : EventEmitter<boolean>
-
- |
-
- This event is emitted when the screen share state changes, providing information about if the screen share is enabled (true) or disabled (false). - |
-
- - onSettingsPanelStatusChanged - | -
- Type : EventEmitter<SettingsPanelStatusEvent>
-
- |
-
- This event is fired when the settings panel status has been changed. -It provides the new status of the settings panel as SettingsPanelStatusEvent payload. - |
-
- - onTokenRequested - | -
- Type : EventEmitter<string>
-
- |
-
- Provides event notifications that fire when videconference is ready to received the token. -This event emits the participant name as data. - |
-
- - onVideoDeviceChanged - | -
- Type : EventEmitter<CustomDevice>
-
- |
-
- This event is emitted when the selected video device changes, providing information about the new custom device that has been selected. - |
-
- - onVideoEnabledChanged - | -
- Type : EventEmitter<boolean>
-
- |
-
- This event is emitted when the video state changes, providing information about if the video is enabled (true) or disabled (false). - |
-
- -
The VideoconferenceComponent also offers the option to tailor the default templates to your preferences using a custom template.
-Directive | -Reference | -
---|---|
*ovToolbar | -ToolbarDirective | -
*ovToolbarAdditionalButtons | -ToolbarAdditionalButtonsDirective | -
*ovToolbarAdditionalPanelButtons | -ToolbarAdditionalPanelButtonsDirective | -
*ovPanel | -PanelDirective | -
*ovAdditionalPanels | -AdditionalPanelsDirective | -
*ovChatPanel | -ChatPanelDirective | -
*ovParticipantsPanel | -ParticipantsPanelDirective | -
*ovParticipantPanelItem | -ParticipantPanelItemDirective | -
*ovParticipantPanelItemElements | -ParticipantPanelItemElementsDirective | -
*ovLayout | -LayoutDirective | -
*ovStream | -StreamDirective | -
With the following directives you can modify the default User Interface with the aim of fully customizing your videoconference application.
- -Parameter | -Type | -Reference | -
---|---|---|
livekitUrl | -string |
-LivekitUrlDirective | -
token | -string |
-TokenDirective | -
tokenError | -any |
-TokenErrorDirective | -
minimal | -boolean |
-MinimalDirective | -
lang | -string |
-LangDirective | -
langOptions | -LangOption |
-LangOptionsDirective | -
participantName | -string |
-ParticipantNameDirective | -
prejoin | -boolean |
-PrejoinDirective | -
videoEnabled | -boolean |
-VideoEnabledDirective | -
audioEnabled | -boolean |
-AudioEnabledDirective | -
toolbarScreenshareButton | -boolean |
-ToolbarScreenshareButtonDirective | -
toolbarRecordingButton | -boolean |
-ToolbarRecordingButtonDirective | -
toolbarBroadcastingButton | -boolean |
-ToolbarBroadcastingButtonDirective | -
toolbarFullscreenButton | -boolean |
-ToolbarFullscreenButtonDirective | -
toolbarBackgroundEffectsButton | -boolean |
-ToolbarBackgroundEffectsButtonDirective | -
toolbarSettingsButton | -boolean |
-ToolbarSettingsButtonDirective | -
toolbarLeaveButton | -boolean |
-ToolbarLeaveButtonDirective | -
toolbarParticipantsPanelButton | -boolean |
-ToolbarParticipantsPanelButtonDirective | -
toolbarChatPanelButton | -boolean |
-ToolbarChatPanelButtonDirective | -
toolbarActivitiesPanelButton | -boolean |
-ToolbarActivitiesPanelButtonDirective | -
toolbarDisplayRoomName | -boolean |
-ToolbarDisplayRoomNameDirective | -
toolbarDisplayLogo | -boolean |
-ToolbarDisplayLogoDirective | -
streamDisplayParticipantName | -boolean |
-StreamDisplayParticipantNameDirective | -
streamDisplayAudioDetection | -boolean |
-StreamDisplayAudioDetectionDirective | -
streamVideoControls | -boolean |
-StreamVideoControlsDirective | -
participantPanelItemMuteButton | -boolean |
-ParticipantPanelItemMuteButtonDirective | -
activitiesPanelRecordingActivity | -boolean |
-ActivitiesPanelRecordingActivityDirective | -
activitiesPanelBroadcastingActivity | -boolean |
-ActivitiesPanelBroadcastingActivityDirective | -
-
- projects/openvidu-components-angular/src/lib/directives/api/activities-panel.directive.ts
-
-
-
The broadcastingActivity directive allows show/hide the broadcasting activity in ActivitiesPanelComponent.
-Default: true
It can be used in the parent element VideoconferenceComponent specifying the name of the activitiesPanel
component:
<ov-videoconference [activitiesPanelBroadcastingActivity]="false"></ov-videoconference>
And it also can be used in the ActivitiesPanelComponent.
<ov-activities-panel *ovActivitiesPanel [broadcastingActivity]="false"></ov-activities-panel>
-
- AfterViewInit
- OnDestroy
-
Selector | -ov-videoconference[activitiesPanelBroadcastingActivity], ov-activities-panel[broadcastingActivity] |
-
- Properties- |
-
-
|
-
- Methods- |
-
- - | -
- Inputs- |
-
-
|
-
- Accessors- |
-
-
|
-
-constructor(elementRef: ElementRef, libService: OpenViduComponentsConfigService)
- |
- |||||||||
-
- Parameters :
-
-
|
-
- - activitiesPanelBroadcastingActivity - | -
- Type : boolean
-
- |
-
- - broadcastingActivity - | -
- Type : boolean
-
- |
-
- - - clear - - - | -
-clear()
- |
-
-
-
- Returns :
- void
-
- |
-
- - - update - - - | -||||||
-update(value: boolean)
- |
- ||||||
-
-
- Parameters :
-
-
-
- Returns :
- void
-
-
-
-
- |
-
- - - broadcastingActivityValue - - - | -
- Type : boolean
-
- |
-
- Default value : true
- |
-
- - - Public - elementRef - - - | -
- Type : ElementRef
-
- |
-
- - activitiesPanelBroadcastingActivity - | -||||||
- setactivitiesPanelBroadcastingActivity(value: boolean)
- |
- ||||||
-
-
- Parameters :
-
-
-
-
- Returns :
- void
-
- |
-
- - broadcastingActivity - | -||||||
- setbroadcastingActivity(value: boolean)
- |
- ||||||
-
-
- Parameters :
-
-
-
-
- Returns :
- void
-
- |
-
-
- projects/openvidu-components-angular/src/lib/directives/template/openvidu-components-angular.directive.ts
-
-
-
The *ovActivitiesPanel directive empowers you to effortlessly substitute the default activities panel template with a custom one.
-In the example below, we showcase how to replace the activities template with a custom one.
- -Example :import { HttpClient } from '@angular/common/http';
-import { Component } from '@angular/core';
-import { lastValueFrom } from 'rxjs';
-import { OpenViduComponentsModule } from 'openvidu-components-angular';
-
-@Component({
- selector: 'app-root',
- template: `
- <ov-videoconference
- [token]="token"
- [livekitUrl]="LIVEKIT_URL"
- (onTokenRequested)="onTokenRequested($event)"
- >
- <!-- Custom activities panel -->
- <div *ovActivitiesPanel id="my-panel">
- <h3>ACTIVITIES</h3>
- <div>CUSTOM ACTIVITIES</div>
- </div>
- </ov-videoconference>
- `,
- styles: `
- #my-panel {
- background: #aafffc;
- height: 100%;
- overflow: hidden;
- text-align: center;
- }
- `,
- standalone: true,
- imports: [OpenViduComponentsModule],
-})
-export class AppComponent {
- // For local development, leave these variables empty
- // For production, configure them with correct URLs depending on your deployment
- APPLICATION_SERVER_URL = '';
- LIVEKIT_URL = '';
- roomName = 'custom-activities-panel';
- token!: string;
-
- constructor(private httpClient: HttpClient) {
- this.configureUrls();
- }
-
- configureUrls() {
- // If APPLICATION_SERVER_URL is not configured, use default value from local development
- if (!this.APPLICATION_SERVER_URL) {
- if (window.location.hostname === 'localhost') {
- this.APPLICATION_SERVER_URL = 'http://localhost:6080/';
- } else {
- this.APPLICATION_SERVER_URL =
- 'https://' + window.location.hostname + ':6443/';
- }
- }
-
- // If LIVEKIT_URL is not configured, use default value from local development
- if (!this.LIVEKIT_URL) {
- if (window.location.hostname === 'localhost') {
- this.LIVEKIT_URL = 'ws://localhost:7880/';
- } else {
- this.LIVEKIT_URL = 'wss://' + window.location.hostname + ':7443/';
- }
- }
- }
-
- async onTokenRequested(participantName: string) {
- const { token } = await this.getToken(this.roomName, participantName);
- this.token = token;
- }
-
- getToken(roomName: string, participantName: string): Promise<any> {
- try {
- return lastValueFrom(
- this.httpClient.post<any>(this.APPLICATION_SERVER_URL + 'token', {
- roomName,
- participantName,
- })
- );
- } catch (error: any) {
- if (error.status === 404) {
- throw {
- status: error.status,
- message: 'Cannot connect with backend. ' + error.url + ' not found',
- };
- }
- throw error;
- }
- }
-}
-
For a step-by-step tutorial on how to replace the activities template with just a few lines of code, -check out our comprehensive guide: Customizing the Activities Panel.
- - - - - - -Selector | -[ovActivitiesPanel] |
-
- Properties- |
-
-
|
-
-constructor(template: TemplateRef
- |
- |||||||||
-
- Parameters :
-
-
|
-
- - - Public - template - - - | -
- Type : TemplateRef<any>
-
- |
-
- - - Public - viewContainer - - - | -
- Type : ViewContainerRef
-
- |
-
-
- projects/openvidu-components-angular/src/lib/directives/api/activities-panel.directive.ts
-
-
-
The recordingActivity directive allows show/hide the recording activity in ActivitiesPanelComponent.
-Default: true
It can be used in the parent element VideoconferenceComponent specifying the name of the activitiesPanel
component:
<ov-videoconference [activitiesPanelRecordingActivity]="false"></ov-videoconference>
And it also can be used in the ActivitiesPanelComponent.
<ov-activities-panel *ovActivitiesPanel [recordingActivity]="false"></ov-activities-panel>
-
- AfterViewInit
- OnDestroy
-
Selector | -ov-videoconference[activitiesPanelRecordingActivity], ov-activities-panel[recordingActivity] |
-
- Properties- |
-
-
|
-
- Methods- |
-
- - | -
- Inputs- |
-
-
|
-
- Accessors- |
-
-
|
-
-constructor(elementRef: ElementRef, libService: OpenViduComponentsConfigService)
- |
- |||||||||
-
- Parameters :
-
-
|
-
- - activitiesPanelRecordingActivity - | -
- Type : boolean
-
- |
-
- - recordingActivity - | -
- Type : boolean
-
- |
-
- - - clear - - - | -
-clear()
- |
-
-
-
- Returns :
- void
-
- |
-
- - - update - - - | -||||||
-update(value: boolean)
- |
- ||||||
-
-
- Parameters :
-
-
-
- Returns :
- void
-
-
-
-
- |
-
- - - Public - elementRef - - - | -
- Type : ElementRef
-
- |
-
- - - recordingActivityValue - - - | -
- Type : boolean
-
- |
-
- Default value : true
- |
-
- - activitiesPanelRecordingActivity - | -||||||
- setactivitiesPanelRecordingActivity(value: boolean)
- |
- ||||||
-
-
- Parameters :
-
-
-
-
- Returns :
- void
-
- |
-
- - recordingActivity - | -||||||
- setrecordingActivity(value: boolean)
- |
- ||||||
-
-
- Parameters :
-
-
-
-
- Returns :
- void
-
- |
-
-
- projects/openvidu-components-angular/src/lib/directives/template/openvidu-components-angular.directive.ts
-
-
-
The *ovAdditionalPanels directive enables you to effortlessly integrate additional panels with the PanelComponent.
-In the example below, we showcase how to add a custom panel to the PanelComponent using the ovAdditionalPanels directive.
- -Example :import { HttpClient } from '@angular/common/http';
-import { Component } from '@angular/core';
-import { lastValueFrom } from 'rxjs';
-
-import {
- PanelStatusInfo,
- PanelService,
- OpenViduComponentsModule,
-} from 'openvidu-components-angular';
-
-import { MatIcon } from '@angular/material/icon';
-import { MatIconButton } from '@angular/material/button';
-
-
-@Component({
- selector: 'app-root',
- template: `
- <!-- OpenVidu Video Conference Component -->
- <ov-videoconference
- [token]="token"
- [livekitUrl]="LIVEKIT_URL"
- [toolbarDisplayRoomName]="false"
- (onTokenRequested)="onTokenRequested($event)"
- >
- <!-- Additional Toolbar Buttons -->
- <div *ovToolbarAdditionalPanelButtons style="text-align: center;">
- <button mat-icon-button (click)="toggleMyPanel('my-panel1')">
- <mat-icon>360</mat-icon>
- </button>
- <button mat-icon-button (click)="toggleMyPanel('my-panel2')">
- <mat-icon>star</mat-icon>
- </button>
- </div>
-
- <!-- Additional Panels -->
- <div *ovAdditionalPanels id="my-panels">
- @if (showExternalPanel) {
- <div id="my-panel1">
- <h2>NEW PANEL 1</h2>
- <p>This is my new additional panel</p>
- </div>
- } @if (showExternalPanel2) {
- <div id="my-panel2">
- <h2>NEW PANEL 2</h2>
- <p>This is another new panel</p>
- </div>
- }
- </div>
- </ov-videoconference>
- `,
- styles: `
- #my-panels {
- height: 100%;
- overflow: hidden;
- }
- #my-panel1,
- #my-panel2 {
- text-align: center;
- height: calc(100% - 40px);
- margin: 20px;
- }
- #my-panel1 {
- background: #c9ffb2;
- }
- #my-panel2 {
- background: #ddf2ff;
- }
- `,
- standalone: true,
- imports: [OpenViduComponentsModule, MatIconButton, MatIcon],
-})
-export class AppComponent {
- // For local development, leave these variables empty
- // For production, configure them with correct URLs depending on your deployment
- APPLICATION_SERVER_URL = '';
- LIVEKIT_URL = '';
-
- // Define the name of the room and initialize the token variable
- roomName = 'additional-panels';
- token!: string;
-
- // Flags to control the visibility of external panels
- showExternalPanel: boolean = false;
- showExternalPanel2: boolean = false;
-
- constructor(
- private httpClient: HttpClient,
- private panelService: PanelService
- ) {
- this.configureUrls();
- }
-
- ngOnInit() {
- this.subscribeToPanelToggling();
- }
-
- private configureUrls() {
- // If APPLICATION_SERVER_URL is not configured, use default value from local development
- if (!this.APPLICATION_SERVER_URL) {
- if (window.location.hostname === 'localhost') {
- this.APPLICATION_SERVER_URL = 'http://localhost:6080/';
- } else {
- this.APPLICATION_SERVER_URL =
- 'https://' + window.location.hostname + ':6443/';
- }
- }
-
- // If LIVEKIT_URL is not configured, use default value from local development
- if (!this.LIVEKIT_URL) {
- if (window.location.hostname === 'localhost') {
- this.LIVEKIT_URL = 'ws://localhost:7880/';
- } else {
- this.LIVEKIT_URL = 'wss://' + window.location.hostname + ':7443/';
- }
- }
- }
-
- // Function to request a token when a participant joins the room
- async onTokenRequested(participantName: any) {
- const { token } = await this.getToken(this.roomName, participantName);
- this.token = token;
- }
-
- // Subscribe to panel toggling events
- subscribeToPanelToggling() {
- this.panelService.panelStatusObs.subscribe((ev: PanelStatusInfo) => {
- this.showExternalPanel = ev.isOpened && ev.panelType === 'my-panel1';
- this.showExternalPanel2 = ev.isOpened && ev.panelType === 'my-panel2';
- });
- }
-
- // Toggle the visibility of external panels
- toggleMyPanel(type: string) {
- this.panelService.togglePanel(type);
- }
-
- // Function to get a token from the server
- async getToken(roomName: string, participantName: string): Promise<any> {
- try {
- // Send a POST request to the server to obtain a token
- return lastValueFrom(
- this.httpClient.post<any>(this.APPLICATION_SERVER_URL + 'token', {
- roomName,
- participantName,
- })
- );
- } catch (error: any) {
- // Handle errors, e.g., if the server is not reachable
- if (error.status === 404) {
- throw {
- status: error.status,
- message:
- 'Cannot connect with the backend. ' + error.url + ' not found',
- };
- }
- throw error;
- }
- }
-}
-
For detailed instructions, refer to the tutorial available here.
- - - - - - -Selector | -[ovAdditionalPanels] |
-
-
- projects/openvidu-components-angular/src/lib/directives/api/admin.directive.ts
-
-
-
The recordingsList directive allows show all recordings saved in your OpenVidu deployment in AdminDashboardComponent.
-Default: []
<ov-admin-dashboard [recordingsList]="recordings"></ov-admin-dashboard>
-
- AfterViewInit
- OnDestroy
-
Selector | -ov-admin-dashboard[recordingsList] |
-
- Properties- |
-
-
|
-
- Methods- |
-
- - | -
- Inputs- |
-
-
|
-
- Accessors- |
-
-
|
-
-constructor(elementRef: ElementRef, libService: OpenViduComponentsConfigService)
- |
- |||||||||
-
- Parameters :
-
-
|
-
- - recordingsList - | -
- Type : RecordingInfo[]
-
- |
-
- - - clear - - - | -
-clear()
- |
-
-
-
- Returns :
- void
-
- |
-
- - - update - - - | -||||||
-update(value: RecordingInfo[])
- |
- ||||||
-
-
- Parameters :
-
-
-
- Returns :
- void
-
-
-
-
- |
-
- - - Public - elementRef - - - | -
- Type : ElementRef
-
- |
-
- - - recordingsValue - - - | -
- Type : RecordingInfo[]
-
- |
-
- Default value : []
- |
-
- - recordingsList - | -||||||
- setrecordingsList(value: RecordingInfo[])
- |
- ||||||
-
-
- Parameters :
-
-
-
-
- Returns :
- void
-
- |
-
-
- projects/openvidu-components-angular/src/lib/directives/api/admin.directive.ts
-
-
-
The navbarTitle directive allows customize the title of the navbar in AdminLoginComponent.
-Default: 'OpenVidu Call Dashboard'
<ov-admin-dashboard [navbarTitle]="'My Dashboard'"></ov-admin-dashboard>
-
- AfterViewInit
- OnDestroy
-
Selector | -ov-admin-dashboard[navbarTitle] |
-
- Properties- |
-
-
|
-
- Methods- |
-
- - | -
- Inputs- |
-
-
|
-
- Accessors- |
-
-
|
-
-constructor(elementRef: ElementRef, libService: OpenViduComponentsConfigService)
- |
- |||||||||
-
- Parameters :
-
-
|
-
- - navbarTitle - | -
- Type : any
-
- |
-
- - - clear - - - | -
-clear()
- |
-
-
-
- Returns :
- void
-
- |
-
- - - update - - - | -||||||
-update(value: any)
- |
- ||||||
-
-
- Parameters :
-
-
-
- Returns :
- void
-
-
-
-
- |
-
- - - Public - elementRef - - - | -
- Type : ElementRef
-
- |
-
- - - navbarTitleValue - - - | -
- Type : any
-
- |
-
- Default value : null
- |
-
- - navbarTitle - | -||||||
- setnavbarTitle(value: any)
- |
- ||||||
-
-
- Parameters :
-
-
-
-
- Returns :
- void
-
- |
-
-
- projects/openvidu-components-angular/src/lib/directives/api/admin.directive.ts
-
-
-
The error directive allows show the authentication error in AdminLoginComponent.
-Default: null
<ov-admin-login [error]="error"></ov-admin-login>
-
- AfterViewInit
- OnDestroy
-
Selector | -ov-admin-login[error] |
-
- Properties- |
-
-
|
-
- Methods- |
-
- - | -
- Inputs- |
-
-
|
-
- Accessors- |
-
-
|
-
-constructor(elementRef: ElementRef, libService: OpenViduComponentsConfigService)
- |
- |||||||||
-
- Parameters :
-
-
|
-
- - error - | -
- Type : any
-
- |
-
- - - clear - - - | -
-clear()
- |
-
-
-
- Returns :
- void
-
- |
-
- - - update - - - | -||||||
-update(value: any)
- |
- ||||||
-
-
- Parameters :
-
-
-
- Returns :
- void
-
-
-
-
- |
-
- - - Public - elementRef - - - | -
- Type : ElementRef
-
- |
-
- - - errorValue - - - | -
- Type : any
-
- |
-
- Default value : null
- |
-
- - error - | -||||||
- seterror(value: any)
- |
- ||||||
-
-
- Parameters :
-
-
-
-
- Returns :
- void
-
- |
-
-
- projects/openvidu-components-angular/src/lib/directives/api/admin.directive.ts
-
-
-
The navbarTitle directive allows customize the title of the navbar in AdminLoginComponent.
-Default: 'OpenVidu Call Dashboard'
<ov-admin-login [navbarTitle]="'My login'"></ov-admin-login>
-
- AfterViewInit
- OnDestroy
-
Selector | -ov-admin-login[navbarTitle] |
-
- Properties- |
-
-
|
-
- Methods- |
-
- - | -
- Inputs- |
-
-
|
-
- Accessors- |
-
-
|
-
-constructor(elementRef: ElementRef, libService: OpenViduComponentsConfigService)
- |
- |||||||||
-
- Parameters :
-
-
|
-
- - navbarTitle - | -
- Type : any
-
- |
-
- - - clear - - - | -
-clear()
- |
-
-
-
- Returns :
- void
-
- |
-
- - - update - - - | -||||||
-update(value: any)
- |
- ||||||
-
-
- Parameters :
-
-
-
- Returns :
- void
-
-
-
-
- |
-
- - - Public - elementRef - - - | -
- Type : ElementRef
-
- |
-
- - - navbarTitleValue - - - | -
- Type : any
-
- |
-
- Default value : null
- |
-
- - navbarTitle - | -||||||
- setnavbarTitle(value: any)
- |
- ||||||
-
-
- Parameters :
-
-
-
-
- Returns :
- void
-
- |
-
-
- projects/openvidu-components-angular/src/lib/directives/api/videoconference.directive.ts
-
-
-
The audioEnabled directive allows to join the room with microphone enabled or disabled.
-It is only available for VideoconferenceComponent.
-Default: true
<ov-videoconference [audioEnabled]="false"></ov-videoconference>
-
- OnDestroy
-
Selector | -ov-videoconference[audioEnabled] |
-
-
- projects/openvidu-components-angular/src/lib/directives/template/openvidu-components-angular.directive.ts
-
-
-
The *ovChatPanel directive empowers you to effortlessly substitute the default chat panel template with a custom one.
-In the example below, we showcase how to replace the chat template with a custom one.
- -Example :import { HttpClient } from '@angular/common/http';
-import { Component } from '@angular/core';
-import { lastValueFrom } from 'rxjs';
-
-import {
- DataPacket_Kind,
- DataPublishOptions,
- DataTopic,
- ParticipantService,
- RemoteParticipant,
- Room,
- RoomEvent,
- OpenViduComponentsModule,
-} from 'openvidu-components-angular';
-
-@Component({
- selector: 'app-root',
- template: `
- <!-- OpenVidu Video Conference Component -->
- <ov-videoconference
- [token]="token"
- [livekitUrl]="LIVEKIT_URL"
- [toolbarDisplayRoomName]="false"
- (onTokenRequested)="onTokenRequested($event)"
- (onRoomCreated)="onRoomCreated($event)"
- >
- <!-- Chat Panel -->
- <div *ovChatPanel id="my-panel">
- <h3>Chat</h3>
- <div>
- <ul>
- @for (msg of messages; track msg) {
- <li>{{ msg }}</li>
- }
- </ul>
- </div>
- <input value="Hello" #input />
- <button (click)="send(input.value)">Send</button>
- </div>
- </ov-videoconference>
- `,
- styles: `
- #my-panel {
- background: #aafffc;
- height: 100%;
- overflow: hidden;
- text-align: center;
- }
- `,
- standalone: true,
- imports: [OpenViduComponentsModule],
-})
-export class AppComponent {
- // For local development, leave these variables empty
- // For production, configure them with correct URLs depending on your deployment
- APPLICATION_SERVER_URL = '';
- LIVEKIT_URL = '';
-
- // Define the name of the room and initialize the token variable
- roomName = 'chat-panel-directive-example';
- token!: string;
- messages: string[] = [];
-
- constructor(
- private httpClient: HttpClient,
- private participantService: ParticipantService
- ) {
- this.configureUrls();
- }
-
- private configureUrls() {
- // If APPLICATION_SERVER_URL is not configured, use default value from local development
- if (!this.APPLICATION_SERVER_URL) {
- if (window.location.hostname === 'localhost') {
- this.APPLICATION_SERVER_URL = 'http://localhost:6080/';
- } else {
- this.APPLICATION_SERVER_URL =
- 'https://' + window.location.hostname + ':6443/';
- }
- }
-
- // If LIVEKIT_URL is not configured, use default value from local development
- if (!this.LIVEKIT_URL) {
- if (window.location.hostname === 'localhost') {
- this.LIVEKIT_URL = 'ws://localhost:7880/';
- } else {
- this.LIVEKIT_URL = 'wss://' + window.location.hostname + ':7443/';
- }
- }
- }
-
- // Function to request a token when a participant joins the room
- async onTokenRequested(participantName: string) {
- const { token } = await this.getToken(this.roomName, participantName);
- this.token = token;
- }
-
- // Event handler for room creation
- onRoomCreated(room: Room) {
- room.on(
- RoomEvent.DataReceived,
- (
- payload: Uint8Array,
- participant?: RemoteParticipant,
- _?: DataPacket_Kind,
- topic?: string
- ) => {
- if (topic === DataTopic.CHAT) {
- const { message } = JSON.parse(new TextDecoder().decode(payload));
- const participantName = participant?.name || 'Unknown';
- this.messages.push(message);
- console.log(`Message received from ${participantName}:`, message);
- }
- }
- );
- }
-
- // Function to send a chat message
- async send(message: string): Promise<void> {
- const strData = JSON.stringify({ message });
- const data: Uint8Array = new TextEncoder().encode(strData);
- const options: DataPublishOptions = { topic: DataTopic.CHAT };
- await this.participantService.publishData(data, options);
- this.messages.push(message);
- }
-
- // Function to get a token from the server
- getToken(roomName: string, participantName: string): Promise<any> {
- try {
- // Send a POST request to the server to obtain a token
- return lastValueFrom(
- this.httpClient.post<any>(this.APPLICATION_SERVER_URL + 'token', {
- roomName,
- participantName,
- })
- );
- } catch (error: any) {
- // Handle errors, e.g., if the server is not reachable
- if (error.status === 404) {
- throw {
- status: error.status,
- message:
- 'Cannot connect with the backend. ' + error.url + ' not found',
- };
- }
- throw error;
- }
- }
-}
-
For a step-by-step tutorial on how to replace the chat template with just a few lines of code, -check out our comprehensive guide: Customizing the Chat Panel.
- - - - - - -Selector | -[ovChatPanel] |
-
- Properties- |
-
-
|
-
-constructor(template: TemplateRef
- |
- |||||||||
-
- Parameters :
-
-
|
-
- - - Public - template - - - | -
- Type : TemplateRef<any>
-
- |
-
- - - Public - viewContainer - - - | -
- Type : ViewContainerRef
-
- |
-
-
- projects/openvidu-components-angular/src/lib/directives/api/videoconference.directive.ts
-
-
-
The lang directive allows set the UI language to a default language.
-It is only available for VideoconferenceComponent.
-Default: English en
Available:
-en
es
de
fr
cn
hi
it
ja
nl
pt
<ov-videoconference [lang]="'es'"></ov-videoconference>
-
- OnDestroy
-
Selector | -ov-videoconference[lang] |
-
-
- projects/openvidu-components-angular/src/lib/directives/api/videoconference.directive.ts
-
-
-
The langOptions directive allows to set the application language options. -It will override the application languages provided by default. -This propety is an array of objects which must comply with the LangOption interface.
-It is only available for VideoconferenceComponent.
-Default: [ { name: 'English', lang: 'en' }, { name: 'Español', lang: 'es' }, { name: 'Deutsch', lang: 'de' }, { name: 'Français', lang: 'fr' }, { name: '中国', lang: 'cn' }, { name: 'हिन्दी', lang: 'hi' }, { name: 'Italiano', lang: 'it' }, { name: 'やまと', lang: 'ja' }, { name: 'Dutch', lang: 'nl' }, { name: 'Português', lang: 'pt' } ]
Note: If you want to add a new language, you must add a new object with the name and the language code (e.g. { name: 'Custom', lang: 'cus' }
)
-and then add the language file in the assets/lang
folder with the name cus.json
.
<ov-videoconference [langOptions]="[{name:'Spanish', lang: 'es'}]"></ov-videoconference>
-
- OnDestroy
-
Selector | -ov-videoconference[langOptions] |
-
-
- projects/openvidu-components-angular/src/lib/directives/template/openvidu-components-angular.directive.ts
-
-
-
The *ovLayout directive empowers you to replace the default room layout with a customized one.
-To ensure that the default StreamComponent functions correctly with participant tracks, you can access all local tracks using the tracks accessor. -Extracting streams from remote participants can be more complex, but openvidu-angular simplifies the process with the RemoteParticipantTracksPipe, which facilitates the extraction of each participant's stream.
-In the example below, take note of the HTML template's structure. The *ngFor
statements employ the | tracks
pipe to handle tracks effectively.
import { HttpClient } from '@angular/common/http';
-import { Component, OnDestroy, OnInit } from '@angular/core';
-import { lastValueFrom, Subscription } from 'rxjs';
-import {
- ParticipantModel,
- ParticipantService,
- OpenViduComponentsModule,
-} from 'openvidu-components-angular';
-import { NgClass } from '@angular/common';
-
-@Component({
- selector: 'app-root',
- template: `
- <!-- OpenVidu Video Conference Component -->
- <ov-videoconference
- [token]="token"
- [livekitUrl]="LIVEKIT_URL"
- (onTokenRequested)="onTokenRequested($event)"
- >
- <!-- Custom Layout for Video Streams -->
- <div *ovLayout>
- <div class="container">
- <!-- Local Participant's Tracks -->
- @for (track of localParticipant.tracks; track track) {
- <div
- class="item"
- [ngClass]="{
- hidden:
- track.isAudioTrack && !track.participant.onlyHasAudioTracks
- }"
- >
- <ov-stream [track]="track"></ov-stream>
- </div>
- }
-
- <!-- Remote Participants' Tracks -->
- @for (track of remoteParticipants | tracks; track track) {
- <div
- class="item"
- [ngClass]="{
- hidden:
- track.isAudioTrack && !track.participant.onlyHasAudioTracks
- }"
- >
- <ov-stream [track]="track"></ov-stream>
- </div>
- }
- </div>
- </div>
- </ov-videoconference>
- `,
- styles: `
- .container {
- display: flex;
- flex-wrap: wrap;
- justify-content: space-between;
- }
- .item {
- flex: 0 50%;
- height: 250px;
- margin-bottom: 2%;
- }
- .hidden {
- display: none;
- }
- `,
- standalone: true,
- imports: [OpenViduComponentsModule, NgClass],
-})
-export class AppComponent implements OnInit, OnDestroy {
- // For local development, leave these variables empty
- // For production, configure them with correct URLs depending on your deployment
- APPLICATION_SERVER_URL = '';
- LIVEKIT_URL = '';
-
- // Define the name of the room and initialize the token variable
- roomName = 'custom-layout';
- token!: string;
-
- // Participant-related properties
- localParticipant!: ParticipantModel;
- remoteParticipants!: ParticipantModel[];
- localParticipantSubs!: Subscription;
- remoteParticipantsSubs!: Subscription;
-
- constructor(
- private httpClient: HttpClient,
- private participantService: ParticipantService
- ) {
- this.configureUrls();
- }
-
- private configureUrls() {
- // If APPLICATION_SERVER_URL is not configured, use default value from local development
- if (!this.APPLICATION_SERVER_URL) {
- if (window.location.hostname === 'localhost') {
- this.APPLICATION_SERVER_URL = 'http://localhost:6080/';
- } else {
- this.APPLICATION_SERVER_URL =
- 'https://' + window.location.hostname + ':6443/';
- }
- }
-
- // If LIVEKIT_URL is not configured, use default value from local development
- if (!this.LIVEKIT_URL) {
- if (window.location.hostname === 'localhost') {
- this.LIVEKIT_URL = 'ws://localhost:7880/';
- } else {
- this.LIVEKIT_URL = 'wss://' + window.location.hostname + ':7443/';
- }
- }
- }
-
- ngOnInit() {
- // Subscribe to participants' updates
- this.subscribeToParticipants();
- }
-
- // Function to request a token when a participant joins the room
- async onTokenRequested(participantName: string) {
- const { token } = await this.getToken(this.roomName, participantName);
- this.token = token;
- }
-
- ngOnDestroy() {
- // Unsubscribe from participant updates to prevent memory leaks
- this.localParticipantSubs.unsubscribe();
- this.remoteParticipantsSubs.unsubscribe();
- }
-
- // Subscribe to updates for local and remote participants
- subscribeToParticipants() {
- this.localParticipantSubs =
- this.participantService.localParticipant$.subscribe((p) => {
- if (p) this.localParticipant = p;
- });
-
- this.remoteParticipantsSubs =
- this.participantService.remoteParticipants$.subscribe(
- (participants) => {
- this.remoteParticipants = participants;
- }
- );
- }
-
- // Function to get a token from the server
- getToken(roomName: string, participantName: string): Promise<any> {
- try {
- // Send a POST request to the server to obtain a token
- return lastValueFrom(
- this.httpClient.post<any>(this.APPLICATION_SERVER_URL + 'token', {
- roomName,
- participantName,
- })
- );
- } catch (error: any) {
- // Handle errors, e.g., if the server is not reachable
- if (error.status === 404) {
- throw {
- status: error.status,
- message:
- 'Cannot connect with the backend. ' + error.url + ' not found',
- };
- }
- throw error;
- }
- }
-}
-
For a comprehensive guide on implementing custom layouts, please refer to the associated tutorial here.
- - - - - - -Selector | -[ovLayout] |
-
- Properties- |
-
- - | -
-constructor(template: TemplateRef
- |
- |||||||||
-
- Parameters :
-
-
|
-
- - - Public - container - - - | -
- Type : ViewContainerRef
-
- |
-
- - - Public - template - - - | -
- Type : TemplateRef<any>
-
- |
-
-
- projects/openvidu-components-angular/src/lib/directives/api/videoconference.directive.ts
-
-
-
The livekitUrl directive sets the livekitUrl to grant a participant access to a Room. -This Livekit Url will be use by each participant when connecting to a Room.
-It is only available for VideoconferenceComponent.
- Default: ""
<ov-videoconference [livekitUrl]="http://localhost:1234"></ov-videoconference>
-
- OnDestroy
-
Selector | -ov-videoconference[livekitUrl] |
-
-
- projects/openvidu-components-angular/src/lib/directives/api/videoconference.directive.ts
-
-
-
The minimal directive applies a minimal UI hiding all controls except for cam and mic.
-It is only available for VideoconferenceComponent.
-Default: false
<ov-videoconference [minimal]="true"></ov-videoconference>
-
- OnDestroy
-
Selector | -ov-videoconference[minimal] |
-
-
- projects/openvidu-components-angular/src/lib/directives/template/openvidu-components-angular.directive.ts
-
-
-
The *ovPanel directive empowers you to seamlessly replace default panels with custom ones. -It also provides the flexibility to insert elements tagged with the ChatPanelDirective, ParticipantsPanelDirective, and AdditionalPanelsDirective.
-In the example below, we showcase how to entirely replace the PanelComponent using the ChatPanelDirective. -Within it, you can tailor the appearance and behavior of the ParticipantsPanelComponent and ChatPanelComponent using their respective directives.
- -Example :import { HttpClient } from '@angular/common/http';
-import { Component } from '@angular/core';
-import { lastValueFrom } from 'rxjs';
-
-import { OpenViduComponentsModule } from 'openvidu-components-angular';
-
-@Component({
- selector: 'app-root',
- template: `
- <!-- OpenVidu Video Conference Component -->
- <ov-videoconference
- [token]="token"
- [livekitUrl]="LIVEKIT_URL"
- (onTokenRequested)="onTokenRequested($event)"
- >
- <!-- Custom Panels -->
- <ov-panel *ovPanel>
- <!-- Custom Chat Panel -->
- <div *ovChatPanel id="my-chat-panel">This is my custom chat panel</div>
-
- <!-- Custom Participants Panel -->
- <div *ovParticipantsPanel id="my-participants-panel">
- This is my custom participants panel
- </div>
-
- <!-- Custom Activities Panel -->
- <div *ovActivitiesPanel id="my-activities-panel">
- This is my custom activities panel
- </div>
- </ov-panel>
- </ov-videoconference>
- `,
- styles: `
- #my-chat-panel,
- #my-participants-panel,
- #my-activities-panel {
- text-align: center;
- height: calc(100% - 40px);
- margin: 20px;
- }
-
- #my-chat-panel {
- background: #c9ffb2;
- }
-
- #my-participants-panel {
- background: #ddf2ff;
- }
-
- #my-activities-panel {
- background: #ffddc9;
- }
- `,
- standalone: true,
- imports: [OpenViduComponentsModule],
-})
-export class AppComponent {
- // For local development, leave these variables empty
- // For production, configure them with correct URLs depending on your deployment
- APPLICATION_SERVER_URL = '';
- LIVEKIT_URL = '';
-
- // Define the name of the room and initialize the token variable
- roomName = 'custom-panels';
- token!: string;
-
- constructor(private httpClient: HttpClient) {
- this.configureUrls();
- }
-
- private configureUrls() {
- // If APPLICATION_SERVER_URL is not configured, use default value from local development
- if (!this.APPLICATION_SERVER_URL) {
- if (window.location.hostname === 'localhost') {
- this.APPLICATION_SERVER_URL = 'http://localhost:6080/';
- } else {
- this.APPLICATION_SERVER_URL =
- 'https://' + window.location.hostname + ':6443/';
- }
- }
-
- // If LIVEKIT_URL is not configured, use default value from local development
- if (!this.LIVEKIT_URL) {
- if (window.location.hostname === 'localhost') {
- this.LIVEKIT_URL = 'ws://localhost:7880/';
- } else {
- this.LIVEKIT_URL = 'wss://' + window.location.hostname + ':7443/';
- }
- }
- }
-
- // Function to request a token when a participant joins the room
- async onTokenRequested(participantName: string) {
- const { token } = await this.getToken(this.roomName, participantName);
- this.token = token;
- }
-
- // Function to get a token from the server
- getToken(roomName: string, participantName: string): Promise<any> {
- try {
- // Send a POST request to the server to obtain a token
- return lastValueFrom(
- this.httpClient.post<any>(this.APPLICATION_SERVER_URL + 'token', {
- roomName,
- participantName,
- })
- );
- } catch (error: any) {
- // Handle errors, e.g., if the server is not reachable
- if (error.status === 404) {
- throw {
- status: error.status,
- message:
- 'Cannot connect with the backend. ' + error.url + ' not found',
- };
- }
- throw error;
- }
- }
-}
-
For a comprehensive tutorial on implementing custom panels, please refer to the associated guide here.
- - - - - - -Selector | -[ovPanel] |
-
-
- projects/openvidu-components-angular/src/lib/directives/api/videoconference.directive.ts
-
-
-
The participantName directive sets the participant name. It can be useful for aplications which doesn't need the prejoin page.
-It is only available for VideoconferenceComponent.
-Example :<ov-videoconference [participantName]="'OpenVidu'"></ov-videoconference>
-
- OnInit
-
Selector | -ov-videoconference[participantName] |
-
-
- projects/openvidu-components-angular/src/lib/directives/template/openvidu-components-angular.directive.ts
-
-
-
The *ovParticipantPanelItem directive allows you to customize the default participant panel item template within the ParticipantsPanelComponent.
-With the ovParticipantPanelItem directive, you can access the participant object from its context using the let
keyword and referencing the participant
-variable as follows: *ovParticipantPanelItem="let participant"
. This allows you to access the ParticipantModel object.
In the example below, we demonstrate how to replace the participant panel item template with just a few lines of code.
- -Example :import { HttpClient } from '@angular/common/http';
-import { Component } from '@angular/core';
-import { lastValueFrom } from 'rxjs';
-
-import { MatIcon } from '@angular/material/icon';
-import { MatMenuTrigger, MatMenu, MatMenuItem } from '@angular/material/menu';
-import { MatIconButton } from '@angular/material/button';
-import { OpenViduComponentsModule } from 'openvidu-components-angular';
-
-@Component({
- selector: 'app-root',
- template: `
- <!-- OpenVidu Video Conference Component -->
- <ov-videoconference
- [token]="token"
- [livekitUrl]="LIVEKIT_URL"
- (onTokenRequested)="onTokenRequested($event)"
- >
- <!-- Participant Panel Items -->
- <div *ovParticipantPanelItem="let participant" style="display: flex">
- <p>{{ participant.name }}</p>
-
- <!-- More Options Menu -->
- <button mat-icon-button [matMenuTriggerFor]="menu">
- <mat-icon>more_vert</mat-icon>
- </button>
-
- <!-- Menu Content -->
- <mat-menu #menu="matMenu">
- <button mat-menu-item>Button 1</button>
- <button mat-menu-item>Button 2</button>
- </mat-menu>
- </div>
- </ov-videoconference>
- `,
- styles: [],
- standalone: true,
- imports: [
- OpenViduComponentsModule,
- MatIconButton,
- MatMenuTrigger,
- MatIcon,
- MatMenu,
- MatMenuItem,
- ],
-})
-export class AppComponent {
- // For local development, leave these variables empty
- // For production, configure them with correct URLs depending on your deployment
- APPLICATION_SERVER_URL = '';
- LIVEKIT_URL = '';
-
- // Define the name of the room and initialize the token variable
- roomName = 'participant-panel-item';
- token!: string;
-
- constructor(private httpClient: HttpClient) {
- this.configureUrls();
- }
-
- private configureUrls() {
- // If APPLICATION_SERVER_URL is not configured, use default value from local development
- if (!this.APPLICATION_SERVER_URL) {
- if (window.location.hostname === 'localhost') {
- this.APPLICATION_SERVER_URL = 'http://localhost:6080/';
- } else {
- this.APPLICATION_SERVER_URL =
- 'https://' + window.location.hostname + ':6443/';
- }
- }
-
- // If LIVEKIT_URL is not configured, use default value from local development
- if (!this.LIVEKIT_URL) {
- if (window.location.hostname === 'localhost') {
- this.LIVEKIT_URL = 'ws://localhost:7880/';
- } else {
- this.LIVEKIT_URL = 'wss://' + window.location.hostname + ':7443/';
- }
- }
- }
-
- // Function to request a token when a participant joins the room
- async onTokenRequested(participantName: string) {
- const { token } = await this.getToken(this.roomName, participantName);
- this.token = token;
- }
-
- // Function to get a token from the server
- getToken(roomName: string, participantName: string): Promise<any> {
- try {
- // Send a POST request to the server to obtain a token
- return lastValueFrom(
- this.httpClient.post<any>(this.APPLICATION_SERVER_URL + 'token', {
- roomName,
- participantName,
- })
- );
- } catch (error: any) {
- // Handle errors, e.g., if the server is not reachable
- if (error.status === 404) {
- throw {
- status: error.status,
- message:
- 'Cannot connect with the backend. ' + error.url + ' not found',
- };
- }
- throw error;
- }
- }
-}
-
For a detailed tutorial on customizing participant panel items, please visit this link.
- - - - - - -Selector | -[ovParticipantPanelItem] |
-
- Properties- |
-
-
|
-
-constructor(template: TemplateRef
- |
- |||||||||
-
- Parameters :
-
-
|
-
- - - Public - template - - - | -
- Type : TemplateRef<any>
-
- |
-
- - - Public - viewContainer - - - | -
- Type : ViewContainerRef
-
- |
-
-
- projects/openvidu-components-angular/src/lib/directives/template/openvidu-components-angular.directive.ts
-
-
-
The *ovParticipantPanelItemElements directive allows you to incorporate additional elements into the ParticipantPanelItemComponent. -In the example below, we demonstrate how to add a simple button for disconnecting from the session.
-With the *ovParticipantPanelItemElements directive, you can access the participant object within its context using the let
keyword and referencing the participant
variable as follows: *ovParticipantPanelItem="let participant"
.
-This enables you to access the ParticipantModel object and activate the button exclusively for the local participant.
import { HttpClient } from '@angular/common/http';
-import { Component } from '@angular/core';
-import { lastValueFrom } from 'rxjs';
-
-import {
- OpenViduService,
- OpenViduComponentsModule,
-} from 'openvidu-components-angular';
-
-@Component({
- selector: 'app-root',
- template: `
- <!-- OpenVidu Video Conference Component -->
- @if (connected) {
- <ov-videoconference
- [token]="token"
- [livekitUrl]="LIVEKIT_URL"
- [toolbarDisplayRoomName]="false"
- (onTokenRequested)="onTokenRequested($event)"
- >
- <!-- Participant Panel Item Elements -->
- <div *ovParticipantPanelItemElements="let participant">
- <!-- Leave Button for Local Participant -->
- @if (participant.isLocal) {
- <button (click)="leaveSession()">Leave</button>
- }
- </div>
- </ov-videoconference>
- }
-
- <!-- Session Disconnected Message -->
- @if (!connected) {
- <div style="text-align: center;">Session disconnected</div>
- }
- `,
- styles: [],
- standalone: true,
- imports: [OpenViduComponentsModule],
-})
-export class AppComponent {
- // For local development, leave these variables empty
- // For production, configure them with correct URLs depending on your deployment
- APPLICATION_SERVER_URL = '';
- LIVEKIT_URL = '';
-
- // Define the name of the room and initialize the token variable
- roomName = 'participant-panel-item-elements';
- token!: string;
-
- // Flag to indicate session connection status
- connected = true;
-
- constructor(
- private httpClient: HttpClient,
- private openviduService: OpenViduService
- ) {
- this.configureUrls();
- }
-
- private configureUrls() {
- // If APPLICATION_SERVER_URL is not configured, use default value from local development
- if (!this.APPLICATION_SERVER_URL) {
- if (window.location.hostname === 'localhost') {
- this.APPLICATION_SERVER_URL = 'http://localhost:6080/';
- } else {
- this.APPLICATION_SERVER_URL =
- 'https://' + window.location.hostname + ':6443/';
- }
- }
-
- // If LIVEKIT_URL is not configured, use default value from local development
- if (!this.LIVEKIT_URL) {
- if (window.location.hostname === 'localhost') {
- this.LIVEKIT_URL = 'ws://localhost:7880/';
- } else {
- this.LIVEKIT_URL = 'wss://' + window.location.hostname + ':7443/';
- }
- }
- }
-
- // Function to request a token when a participant joins the room
- async onTokenRequested(participantName: string) {
- const { token } = await this.getToken(this.roomName, participantName);
- this.token = token;
- }
-
- // Function to leave the session
- async leaveSession() {
- await this.openviduService.disconnectRoom();
- this.connected = false;
- }
-
- // Function to get a token from the server
- getToken(roomName: string, participantName: string): Promise<any> {
- try {
- // Send a POST request to the server to obtain a token
- return lastValueFrom(
- this.httpClient.post<any>(this.APPLICATION_SERVER_URL + 'token', {
- roomName,
- participantName,
- })
- );
- } catch (error: any) {
- // Handle errors, e.g., if the server is not reachable
- if (error.status === 404) {
- throw {
- status: error.status,
- message:
- 'Cannot connect with the backend. ' + error.url + ' not found',
- };
- }
- throw error;
- }
- }
-}
-
For a comprehensive tutorial on adding elements to participant panel items, please visit this link.
- - - - - - -Selector | -[ovParticipantPanelItemElements] |
-
- Properties- |
-
-
|
-
-constructor(template: TemplateRef
- |
- |||||||||
-
- Parameters :
-
-
|
-
- - - Public - template - - - | -
- Type : TemplateRef<any>
-
- |
-
- - - Public - viewContainer - - - | -
- Type : ViewContainerRef
-
- |
-
-
- projects/openvidu-components-angular/src/lib/directives/api/participant-panel-item.directive.ts
-
-
-
The muteButton directive allows show/hide the muted button in participant panel item component.
-Default: true
It can be used in the parent element VideoconferenceComponent specifying the name of the participantPanelItem
component:
<ov-videoconference [participantPanelItemMuteButton]="false"></ov-videoconference>
And it also can be used in the ParticipantPanelItemComponent.
<ov-participant-panel-item [muteButton]="false"></ov-participant-panel-item>
-
- AfterViewInit
- OnDestroy
-
Selector | -ov-videoconference[participantPanelItemMuteButton], ov-participant-panel-item[muteButton] |
-
- Properties- |
-
-
|
-
- Methods- |
-
- - | -
- Inputs- |
-
-
|
-
- Accessors- |
-
-
|
-
-constructor(elementRef: ElementRef, libService: OpenViduComponentsConfigService)
- |
- |||||||||
-
- Parameters :
-
-
|
-
- - muteButton - | -
- Type : boolean
-
- |
-
- - participantPanelItemMuteButton - | -
- Type : boolean
-
- |
-
- - - clear - - - | -
-clear()
- |
-
-
-
- Returns :
- void
-
- |
-
- - - update - - - | -||||||
-update(value: boolean)
- |
- ||||||
-
-
- Parameters :
-
-
-
- Returns :
- void
-
-
-
-
- |
-
- - - Public - elementRef - - - | -
- Type : ElementRef
-
- |
-
- - - muteValue - - - | -
- Type : boolean
-
- |
-
- Default value : true
- |
-
- - participantPanelItemMuteButton - | -||||||
- setparticipantPanelItemMuteButton(value: boolean)
- |
- ||||||
-
-
- Parameters :
-
-
-
-
- Returns :
- void
-
- |
-
- - muteButton - | -||||||
- setmuteButton(value: boolean)
- |
- ||||||
-
-
- Parameters :
-
-
-
-
- Returns :
- void
-
- |
-
-
- projects/openvidu-components-angular/src/lib/directives/template/openvidu-components-angular.directive.ts
-
-
-
The *ovParticipantsPanel directive empowers you to substitute the default participants panel template with a customized one. -In the following example, we demonstrate how to replace the participants template with just a few lines of code.
- -Example :import { HttpClient } from '@angular/common/http';
-import { Component, OnDestroy, OnInit } from '@angular/core';
-import { lastValueFrom, Subscription } from 'rxjs';
-
-import {
- ParticipantModel,
- ParticipantService,
- OpenViduComponentsModule,
-} from 'openvidu-components-angular';
-
-@Component({
- selector: 'app-root',
- template: `
- <!-- OpenVidu Video Conference Component -->
- <ov-videoconference
- [token]="token"
- [livekitUrl]="LIVEKIT_URL"
- (onTokenRequested)="onTokenRequested($event)"
- >
- <!-- Custom Participants Panel -->
- <div *ovParticipantsPanel id="my-panel">
- <ul id="local">
- <li>{{ localParticipant.name }}</li>
- </ul>
- <ul id="remote">
- @for (p of remoteParticipants; track p) {
- <li>{{ p.name }}</li>
- }
- </ul>
- </div>
- </ov-videoconference>
- `,
- styles: `
- #my-panel {
- background: #faff7f;
- height: 100%;
- overflow: hidden;
- }
- #my-panel > #local {
- background: #a184ff;
- }
- #my-panel > #remote {
- background: #7fb8ff;
- }
- `,
- standalone: true,
- imports: [OpenViduComponentsModule],
-})
-export class AppComponent implements OnInit, OnDestroy {
- // For local development, leave these variables empty
- // For production, configure them with correct URLs depending on your deployment
- APPLICATION_SERVER_URL = '';
- LIVEKIT_URL = '';
-
- // Define the name of the room and initialize the token variable
- roomName = 'custom-participants-panel';
- token!: string;
-
- // Participant-related properties
- localParticipant!: ParticipantModel;
- remoteParticipants!: ParticipantModel[];
- localParticipantSubs!: Subscription;
- remoteParticipantsSubs!: Subscription;
-
- constructor(
- private httpClient: HttpClient,
- private participantService: ParticipantService
- ) {
- this.configureUrls();
- }
-
- private configureUrls() {
- // If APPLICATION_SERVER_URL is not configured, use default value from local development
- if (!this.APPLICATION_SERVER_URL) {
- if (window.location.hostname === 'localhost') {
- this.APPLICATION_SERVER_URL = 'http://localhost:6080/';
- } else {
- this.APPLICATION_SERVER_URL =
- 'https://' + window.location.hostname + ':6443/';
- }
- }
-
- // If LIVEKIT_URL is not configured, use default value from local development
- if (!this.LIVEKIT_URL) {
- if (window.location.hostname === 'localhost') {
- this.LIVEKIT_URL = 'ws://localhost:7880/';
- } else {
- this.LIVEKIT_URL = 'wss://' + window.location.hostname + ':7443/';
- }
- }
- }
-
- // Subscribes to updates for local and remote participants.
- ngOnInit() {
- this.subscribeToParticipants();
- }
-
- // Unsubscribes from updates for local and remote participants to prevent memory leaks.
- ngOnDestroy() {
- this.localParticipantSubs.unsubscribe();
- this.remoteParticipantsSubs.unsubscribe();
- }
-
- // Function called when a participant requests a token to join the room.
- async onTokenRequested(participantName: string) {
- const { token } = await this.getToken(this.roomName, participantName);
- this.token = token;
- }
-
- // Subscribes to updates for local and remote participants.
- subscribeToParticipants() {
- this.localParticipantSubs =
- this.participantService.localParticipant$.subscribe((p) => {
- if (p) this.localParticipant = p;
- });
-
- this.remoteParticipantsSubs =
- this.participantService.remoteParticipants$.subscribe(
- (participants) => {
- this.remoteParticipants = participants;
- }
- );
- }
-
- // Sends a request to the server to obtain a token for a participant.
- async getToken(roomName: string, participantName: string): Promise<any> {
- try {
- // Send a POST request to the server to obtain a token
- return lastValueFrom(
- this.httpClient.post<any>(this.APPLICATION_SERVER_URL + 'token', {
- roomName,
- participantName,
- })
- );
- } catch (error: any) {
- // Handle errors, e.g., if the server is not reachable
- if (error.status === 404) {
- throw {
- status: error.status,
- message:
- 'Cannot connect with the backend. ' + error.url + ' not found',
- };
- }
- throw error;
- }
- }
-}
-
For a comprehensive tutorial on customizing the participants panel, please visit this link.
- - - - - - -Selector | -[ovParticipantsPanel] |
-
- Properties- |
-
-
|
-
-constructor(template: TemplateRef
- |
- |||||||||
-
- Parameters :
-
-
|
-
- - - Public - template - - - | -
- Type : TemplateRef<any>
-
- |
-
- - - Public - viewContainer - - - | -
- Type : ViewContainerRef
-
- |
-
-
- projects/openvidu-components-angular/src/lib/directives/api/videoconference.directive.ts
-
-
-
The prejoin directive allows show/hide the prejoin page for selecting media devices.
-It is only available for VideoconferenceComponent.
-Default: true
<ov-videoconference [prejoin]="false"></ov-videoconference>
-
- OnDestroy
-
Selector | -ov-videoconference[prejoin] |
-
-
- projects/openvidu-components-angular/src/lib/directives/template/openvidu-components-angular.directive.ts
-
-
-
The *ovStream directive empowers you to substitute the default StreamComponent template with a custom one. -In the example below, we demonstrate how to customize the position and styles of a participant's nickname by replacing the default stream component.
-With the ovStream directive, you can access the track object within its context using the let
keyword and referencing the track
variable as follows: *ovStream="let track"
. This allows you to access the ParticipantModel object using track.participant
.
In the example provided below, we illustrate how to achieve this customization with just a few lines of code.
- -Example :import { HttpClient } from '@angular/common/http';
-import { Component } from '@angular/core';
-import { lastValueFrom } from 'rxjs';
-
-import {
- OpenViduComponentsModule,
- ApiDirectiveModule,
- OpenViduComponentsDirectiveModule,
-} from 'openvidu-components-angular';
-
-@Component({
- selector: 'app-root',
- template: `
- <!-- OpenVidu Video Conference Component -->
- <ov-videoconference
- [token]="token"
- [livekitUrl]="LIVEKIT_URL"
- (onTokenRequested)="onTokenRequested($event)"
- >
- <!-- Display Video Streams -->
- <div *ovStream="let track">
- <!-- Video Stream Component -->
- <ov-stream [track]="track" [displayParticipantName]="false"></ov-stream>
-
- <!-- Display Participant's Name -->
- <p>{{ track.participant.name }}</p>
- </div>
- </ov-videoconference>
- `,
- styles: `
- p {
- position: absolute;
- bottom: 0;
- border: 2px solid;
- background: #000000;
- }
- `,
- standalone: true,
- imports: [OpenViduComponentsModule],
-})
-export class AppComponent {
- // For local development, leave these variables empty
- // For production, configure them with correct URLs depending on your deployment
- APPLICATION_SERVER_URL = '';
- LIVEKIT_URL = '';
-
- // Define the name of the room and initialize the token variable
- roomName = 'custom-stream';
- token!: string;
-
- constructor(private httpClient: HttpClient) {
- this.configureUrls();
- }
-
- private configureUrls() {
- // If APPLICATION_SERVER_URL is not configured, use default value from local development
- if (!this.APPLICATION_SERVER_URL) {
- if (window.location.hostname === 'localhost') {
- this.APPLICATION_SERVER_URL = 'http://localhost:6080/';
- } else {
- this.APPLICATION_SERVER_URL =
- 'https://' + window.location.hostname + ':6443/';
- }
- }
-
- // If LIVEKIT_URL is not configured, use default value from local development
- if (!this.LIVEKIT_URL) {
- if (window.location.hostname === 'localhost') {
- this.LIVEKIT_URL = 'ws://localhost:7880/';
- } else {
- this.LIVEKIT_URL = 'wss://' + window.location.hostname + ':7443/';
- }
- }
- }
-
- // Function to request a token when a participant joins the room
- async onTokenRequested(participantName: string) {
- const { token } = await this.getToken(this.roomName, participantName);
- this.token = token;
- }
-
- // Function to get a token from the server
- getToken(roomName: string, participantName: string): Promise<any> {
- try {
- // Send a POST request to the server to obtain a token
- return lastValueFrom(
- this.httpClient.post<any>(this.APPLICATION_SERVER_URL + 'token', {
- roomName,
- participantName,
- })
- );
- } catch (error: any) {
- // Handle errors, e.g., if the server is not reachable
- if (error.status === 404) {
- throw {
- status: error.status,
- message:
- 'Cannot connect with the backend. ' + error.url + ' not found',
- };
- }
- throw error;
- }
- }
-}
-
For a detailed tutorial on customizing the stream component, please visit this link.
- - - - - - -Selector | -[ovStream] |
-
- Properties- |
-
- - | -
-constructor(template: TemplateRef
- |
- |||||||||
-
- Parameters :
-
-
|
-
- - - Public - container - - - | -
- Type : ViewContainerRef
-
- |
-
- - - Public - template - - - | -
- Type : TemplateRef<any>
-
- |
-
-
- projects/openvidu-components-angular/src/lib/directives/api/stream.directive.ts
-
-
-
The displayAudioDetection directive allows show/hide the participants audio detection in stream component.
-Default: true
It can be used in the parent element VideoconferenceComponent specifying the name of the stream
component:
<ov-videoconference [streamDisplayAudioDetection]="false"></ov-videoconference>
And it also can be used in the StreamComponent.
<ov-stream [displayAudioDetection]="false"></ov-stream>
-
- AfterViewInit
- OnDestroy
-
Selector | -ov-videoconference[streamDisplayAudioDetection], ov-stream[displayAudioDetection] |
-
- Properties- |
-
-
|
-
- Methods- |
-
- - | -
- Inputs- |
-
-
|
-
- Accessors- |
-
-
|
-
-constructor(elementRef: ElementRef, libService: OpenViduComponentsConfigService)
- |
- |||||||||
-
- Parameters :
-
-
|
-
- - displayAudioDetection - | -
- Type : boolean
-
- |
-
- - streamDisplayAudioDetection - | -
- Type : boolean
-
- |
-
- - - clear - - - | -
-clear()
- |
-
-
-
- Returns :
- void
-
- |
-
- - - update - - - | -||||||
-update(value: boolean)
- |
- ||||||
-
-
- Parameters :
-
-
-
- Returns :
- void
-
-
-
-
- |
-
- - - displayAudioDetectionValue - - - | -
- Type : boolean
-
- |
-
- - - Public - elementRef - - - | -
- Type : ElementRef
-
- |
-
- - streamDisplayAudioDetection - | -||||||
- setstreamDisplayAudioDetection(value: boolean)
- |
- ||||||
-
-
- Parameters :
-
-
-
-
- Returns :
- void
-
- |
-
- - displayAudioDetection - | -||||||
- setdisplayAudioDetection(value: boolean)
- |
- ||||||
-
-
- Parameters :
-
-
-
-
- Returns :
- void
-
- |
-
-
- projects/openvidu-components-angular/src/lib/directives/api/stream.directive.ts
-
-
-
The displayParticipantName directive allows show/hide the participants name in stream component.
-Default: true
It can be used in the parent element VideoconferenceComponent specifying the name of the stream
component:
<ov-videoconference [streamDisplayParticipantName]="false"></ov-videoconference>
And it also can be used in the StreamComponent.
<ov-stream [displayParticipantName]="false"></ov-stream>
-
- AfterViewInit
- OnDestroy
-
Selector | -ov-videoconference[streamDisplayParticipantName], ov-stream[displayParticipantName] |
-
- Properties- |
-
-
|
-
- Methods- |
-
- - | -
- Inputs- |
-
-
|
-
- Accessors- |
-
-
|
-
-constructor(elementRef: ElementRef, libService: OpenViduComponentsConfigService)
- |
- |||||||||
-
- Parameters :
-
-
|
-
- - displayParticipantName - | -
- Type : boolean
-
- |
-
- - streamDisplayParticipantName - | -
- Type : boolean
-
- |
-
- - - clear - - - | -
-clear()
- |
-
-
-
- Returns :
- void
-
- |
-
- - - update - - - | -||||||
-update(value: boolean)
- |
- ||||||
-
-
- Parameters :
-
-
-
- Returns :
- void
-
-
-
-
- |
-
- - - displayParticipantNameValue - - - | -
- Type : boolean
-
- |
-
- - - Public - elementRef - - - | -
- Type : ElementRef
-
- |
-
- - streamDisplayParticipantName - | -||||||
- setstreamDisplayParticipantName(value: boolean)
- |
- ||||||
-
-
- Parameters :
-
-
-
-
- Returns :
- void
-
- |
-
- - displayParticipantName - | -||||||
- setdisplayParticipantName(value: boolean)
- |
- ||||||
-
-
- Parameters :
-
-
-
-
- Returns :
- void
-
- |
-
-
- projects/openvidu-components-angular/src/lib/directives/api/stream.directive.ts
-
-
-
The videoControls directive allows show/hide the participants video controls in stream component.
-Default: true
It can be used in the parent element VideoconferenceComponent specifying the name of the stream
component:
<ov-videoconference [streamVideoControls]="false"></ov-videoconference>
And it also can be used in the StreamComponent.
<ov-stream [videoControls]="false"></ov-stream>
-
- AfterViewInit
- OnDestroy
-
Selector | -ov-videoconference[streamVideoControls], ov-stream[videoControls] |
-
- Properties- |
-
-
|
-
- Methods- |
-
- - | -
- Inputs- |
-
-
|
-
- Accessors- |
-
-
|
-
-constructor(elementRef: ElementRef, libService: OpenViduComponentsConfigService)
- |
- |||||||||
-
- Parameters :
-
-
|
-
- - streamVideoControls - | -
- Type : boolean
-
- |
-
- - videoControls - | -
- Type : boolean
-
- |
-
- - - clear - - - | -
-clear()
- |
-
-
-
- Returns :
- void
-
- |
-
- - - update - - - | -||||||
-update(value: boolean)
- |
- ||||||
-
-
- Parameters :
-
-
-
- Returns :
- void
-
-
-
-
- |
-
- - - Public - elementRef - - - | -
- Type : ElementRef
-
- |
-
- - - videoControlsValue - - - | -
- Type : boolean
-
- |
-
- - streamVideoControls - | -||||||
- setstreamVideoControls(value: boolean)
- |
- ||||||
-
-
- Parameters :
-
-
-
-
- Returns :
- void
-
- |
-
- - videoControls - | -||||||
- setvideoControls(value: boolean)
- |
- ||||||
-
-
- Parameters :
-
-
-
-
- Returns :
- void
-
- |
-
-
- projects/openvidu-components-angular/src/lib/directives/api/videoconference.directive.ts
-
-
-
The token directive sets the token to grant a participant access to a Room. -This OpenVidu token will be use by each participant when connecting to a Room.
-It is only available for VideoconferenceComponent.
- Default: ""
<ov-videoconference [token]="token"></ov-videoconference>
-
- OnDestroy
-
Selector | -ov-videoconference[token] |
-
-
- projects/openvidu-components-angular/src/lib/directives/api/videoconference.directive.ts
-
-
-
The tokenError directive allows to display an error message in case of issues during token request.
-It is only available for VideoconferenceComponent.
- Default: undefined
<ov-videoconference [tokenError]="error"></ov-videoconference>
-
- OnDestroy
-
Selector | -ov-videoconference[tokenError] |
-
-
- projects/openvidu-components-angular/src/lib/directives/api/toolbar.directive.ts
-
-
-
The activitiesPanelButton directive allows show/hide the activities panel toolbar button.
-Default: true
It can be used in the parent element VideoconferenceComponent specifying the name of the toolbar
component:
<ov-videoconference [toolbarActivitiesPanelButton]="false"></ov-videoconference>
And it also can be used in the ToolbarComponent.
<ov-toolbar [activitiesPanelButton]="false"></ov-toolbar>
-
- AfterViewInit
- OnDestroy
-
Selector | -ov-videoconference[toolbarActivitiesPanelButton], ov-toolbar[activitiesPanelButton] |
-
-
- projects/openvidu-components-angular/src/lib/directives/template/openvidu-components-angular.directive.ts
-
-
-
The *ovToolbarAdditionalButtons directive enables the addition of extra buttons to the central button group within the toolbar.
-In the following example, we've included the same buttons as those in the ToolbarDirective. Additionally, we utilize the ParticipantService to assess audio and video statuses.
- -Example :import { HttpClient } from '@angular/common/http';
-import { Component } from '@angular/core';
-import { lastValueFrom } from 'rxjs';
-
-import {
- ParticipantService,
- OpenViduComponentsModule,
-} from 'openvidu-components-angular';
-import { MatIcon } from '@angular/material/icon';
-import { MatIconButton } from '@angular/material/button';
-
-@Component({
- selector: 'app-root',
- template: `
- <ov-videoconference
- [token]="token"
- [livekitUrl]="LIVEKIT_URL"
- (onTokenRequested)="onTokenRequested($event)"
- >
- <div *ovToolbarAdditionalButtons style="text-align: center;">
- <button mat-icon-button (click)="toggleVideo()">
- <mat-icon>videocam</mat-icon>
- </button>
- <button mat-icon-button (click)="toggleAudio()">
- <mat-icon>mic</mat-icon>
- </button>
- </div>
- </ov-videoconference>
- `,
- styles: [],
- standalone: true,
- imports: [OpenViduComponentsModule, MatIconButton, MatIcon],
-})
-export class AppComponent {
- // For local development, leave these variables empty
- // For production, configure them with correct URLs depending on your deployment
-
- APPLICATION_SERVER_URL = '';
- LIVEKIT_URL = '';
-
- // The name of the room for the video conference.
- roomName = 'toolbar-additionalbtn';
-
- // The token used to authenticate the user in the video conference.
- token!: string;
-
- constructor(
- private httpClient: HttpClient,
- private participantService: ParticipantService
- ) {
- this.configureUrls();
- }
-
- private configureUrls() {
- // If APPLICATION_SERVER_URL is not configured, use default value from local development
- if (!this.APPLICATION_SERVER_URL) {
- if (window.location.hostname === 'localhost') {
- this.APPLICATION_SERVER_URL = 'http://localhost:6080/';
- } else {
- this.APPLICATION_SERVER_URL =
- 'https://' + window.location.hostname + ':6443/';
- }
- }
-
- // If LIVEKIT_URL is not configured, use default value from local development
- if (!this.LIVEKIT_URL) {
- if (window.location.hostname === 'localhost') {
- this.LIVEKIT_URL = 'ws://localhost:7880/';
- } else {
- this.LIVEKIT_URL = 'wss://' + window.location.hostname + ':7443/';
- }
- }
- }
-
- // Called when the token is requested.
- async onTokenRequested(participantName: string) {
- const { token } = await this.getToken(this.roomName, participantName);
- this.token = token;
- }
-
- // Toggles the camera on/off.
- async toggleVideo() {
- const isCameraEnabled = this.participantService.isMyCameraEnabled();
- await this.participantService.setCameraEnabled(!isCameraEnabled);
- }
-
- // Toggles the microphone on/off.
- async toggleAudio() {
- const isMicrophoneEnabled = this.participantService.isMyMicrophoneEnabled();
- await this.participantService.setMicrophoneEnabled(!isMicrophoneEnabled);
- }
-
- // Retrieves a token from the server to authenticate the user.
- getToken(roomName: string, participantName: string): Promise<any> {
- try {
- return lastValueFrom(
- this.httpClient.post<any>(this.APPLICATION_SERVER_URL + 'token', {
- roomName,
- participantName,
- })
- );
- } catch (error: any) {
- if (error.status === 404) {
- throw {
- status: error.status,
- message: 'Cannot connect with backend. ' + error.url + ' not found',
- };
- }
- throw error;
- }
- }
-}
-
To follow a step-by-step tutorial on this feature, please visit this link.
- - - - - - -Selector | -[ovToolbarAdditionalButtons] |
-
-
- projects/openvidu-components-angular/src/lib/directives/api/toolbar.directive.ts
-
-
-
The ovToolbarAdditionalButtonsPosition defines the position where the additional buttons should be inserted.
-The possible values are: ToolbarAdditionalButtonsPosition
-Default: afterMenu
It can be used in the any element which contains the structural directive ToolbarAdditionalButtonsDirective.
-Example :<div *ovToolbarAdditionalButtons [ovToolbarAdditionalButtonsPosition]="'beforeMenu'"></div>
-
- AfterViewInit
- OnDestroy
-
Selector | -[ovToolbarAdditionalButtonsPosition] |
-
-
- projects/openvidu-components-angular/src/lib/directives/template/openvidu-components-angular.directive.ts
-
-
-
The *ovToolbarAdditionalPanelButtons directive allows to add additional panel buttons to the toolbar. -In the example below we've added a simple button without any functionality. To learn how to toggle the panel check the AdditionalPanelsDirective.
- -Example :import { HttpClient } from '@angular/common/http';
-import { Component } from '@angular/core';
-import { lastValueFrom } from 'rxjs';
-
-import { OpenViduComponentsModule } from 'openvidu-components-angular';
-import { MatIconButton } from '@angular/material/button';
-import { MatIcon } from '@angular/material/icon';
-
-@Component({
- selector: 'app-root',
- template: `
- <ov-videoconference
- [token]="token"
- [livekitUrl]="LIVEKIT_URL"
- [toolbarDisplayRoomName]="false"
- (onTokenRequested)="onTokenRequested($event)"
- >
- <div *ovToolbarAdditionalPanelButtons style="text-align: center;">
- <button mat-icon-button (click)="onButtonClicked()">
- <mat-icon>star</mat-icon>
- </button>
- </div>
- </ov-videoconference>
- `,
- styles: [],
- standalone: true,
- imports: [OpenViduComponentsModule, MatIconButton, MatIcon],
-})
-export class AppComponent {
- // For local development, leave these variables empty
- // For production, configure them with correct URLs depending on your deployment
-
- APPLICATION_SERVER_URL = '';
- LIVEKIT_URL = '';
-
- // Set the room name
- roomName = 'toolbar-additional-panel-btn';
-
- // Initialize the token variable
- token!: string;
-
- constructor(private httpClient: HttpClient) {
- this.configureUrls();
- }
-
- private configureUrls() {
- // If APPLICATION_SERVER_URL is not configured, use default value from local development
- if (!this.APPLICATION_SERVER_URL) {
- if (window.location.hostname === 'localhost') {
- this.APPLICATION_SERVER_URL = 'http://localhost:6080/';
- } else {
- this.APPLICATION_SERVER_URL =
- 'https://' + window.location.hostname + ':6443/';
- }
- }
-
- // If LIVEKIT_URL is not configured, use default value from local development
- if (!this.LIVEKIT_URL) {
- if (window.location.hostname === 'localhost') {
- this.LIVEKIT_URL = 'ws://localhost:7880/';
- } else {
- this.LIVEKIT_URL = 'wss://' + window.location.hostname + ':7443/';
- }
- }
- }
-
- // Method to request a token for a participant
- async onTokenRequested(participantName: string) {
- const { token } = await this.getToken(this.roomName, participantName);
- this.token = token;
- }
-
- // Method to handle button click
- onButtonClicked() {
- alert('button clicked');
- }
-
- // Method to get a token from the backend
- getToken(roomName: string, participantName: string): Promise<any> {
- try {
- return lastValueFrom(
- this.httpClient.post<any>(this.APPLICATION_SERVER_URL + 'token', {
- roomName,
- participantName,
- })
- );
- } catch (error: any) {
- if (error.status === 404) {
- throw {
- status: error.status,
- message: 'Cannot connect with backend. ' + error.url + ' not found',
- };
- }
- throw error;
- }
- }
-}
-
You can run the associated tutorial here.
- - - - - - -Selector | -[ovToolbarAdditionalPanelButtons] |
-
-
- projects/openvidu-components-angular/src/lib/directives/api/toolbar.directive.ts
-
-
-
The backgroundEffectsButton directive allows show/hide the background effects toolbar button.
-Default: true
It can be used in the parent element VideoconferenceComponent specifying the name of the toolbar
component:
<ov-videoconference [toolbarBackgroundEffectsButton]="false"></ov-videoconference>
And it also can be used in the ToolbarComponent.
<ov-toolbar [backgroundEffectsButton]="false"></ov-toolbar>
-
- AfterViewInit
- OnDestroy
-
Selector | -ov-videoconference[toolbarBackgroundEffectsButton], ov-toolbar[backgroundEffectsButton] |
-
-
- projects/openvidu-components-angular/src/lib/directives/api/toolbar.directive.ts
-
-
-
The broadcastingButton directive allows show/hide the start/stop broadcasting toolbar button.
-Default: true
It can be used in the parent element VideoconferenceComponent specifying the name of the toolbar
component:
<ov-videoconference [toolbarBroadcastingButton]="false"></ov-videoconference>
And it also can be used in the ToolbarComponent.
<ov-toolbar [broadcastingButton]="false"></ov-toolbar>
-
- AfterViewInit
- OnDestroy
-
Selector | -ov-videoconference[toolbarBroadcastingButton], ov-toolbar[broadcastingButton] |
-
-
- projects/openvidu-components-angular/src/lib/directives/api/toolbar.directive.ts
-
-
-
The chatPanelButton directive allows show/hide the chat panel toolbar button.
-Default: true
It can be used in the parent element VideoconferenceComponent specifying the name of the toolbar
component:
<ov-videoconference [toolbarChatPanelButton]="false"></ov-videoconference>
And it also can be used in the ToolbarComponent.
<ov-toolbar [chatPanelButton]="false"></ov-toolbar>
-
- AfterViewInit
- OnDestroy
-
Selector | -ov-videoconference[toolbarChatPanelButton], ov-toolbar[chatPanelButton] |
-
-
- projects/openvidu-components-angular/src/lib/directives/template/openvidu-components-angular.directive.ts
-
-
-
The *ovToolbar directive allows to replace the default toolbar component with a custom one.
-In the example below we've replaced the default toolbar and added the toggleAudio and toggleVideo buttons. -Here we are using the ParticipantService for enabling/disabling the audio and video.
- -Example :import { HttpClient } from '@angular/common/http';
-import { Component } from '@angular/core';
-import { lastValueFrom } from 'rxjs';
-
-import {
- ParticipantService,
- OpenViduComponentsModule,
-} from 'openvidu-components-angular';
-
-@Component({
- selector: 'app-root',
- template: `
- <ov-videoconference
- [token]="token"
- [livekitUrl]="LIVEKIT_URL"
- (onTokenRequested)="onTokenRequested($event)"
- >
- <div *ovToolbar style="text-align: center;">
- <button (click)="toggleVideo()">Toggle Video</button>
- <button (click)="toggleAudio()">Toggle Audio</button>
- </div>
- </ov-videoconference>
- `,
- standalone: true,
- imports: [OpenViduComponentsModule],
-})
-export class AppComponent {
- // For local development, leave these variables empty
- // For production, configure them with correct URLs depending on your deployment
-
- APPLICATION_SERVER_URL = '';
- LIVEKIT_URL = '';
- // The name of the room.
- roomName = 'custom-toolbar';
-
- // The token used to connect to the videoconference.
- token!: string;
-
- constructor(
- private httpClient: HttpClient,
- private participantService: ParticipantService
- ) {
- this.configureUrls();
- }
-
- private configureUrls() {
- // If APPLICATION_SERVER_URL is not configured, use default value from local development
- if (!this.APPLICATION_SERVER_URL) {
- if (window.location.hostname === 'localhost') {
- this.APPLICATION_SERVER_URL = 'http://localhost:6080/';
- } else {
- this.APPLICATION_SERVER_URL =
- 'https://' + window.location.hostname + ':6443/';
- }
- }
-
- // If LIVEKIT_URL is not configured, use default value from local development
- if (!this.LIVEKIT_URL) {
- if (window.location.hostname === 'localhost') {
- this.LIVEKIT_URL = 'ws://localhost:7880/';
- } else {
- this.LIVEKIT_URL = 'wss://' + window.location.hostname + ':7443/';
- }
- }
- }
-
- // Called when a token is requested for a participant.
- async onTokenRequested(participantName: string) {
- const { token } = await this.getToken(this.roomName, participantName);
- this.token = token;
- }
-
- // Toggles the camera on and off.
- async toggleVideo() {
- const isCameraEnabled = this.participantService.isMyCameraEnabled();
- await this.participantService.setCameraEnabled(!isCameraEnabled);
- }
-
- // Toggles the microphone on and off.
- async toggleAudio() {
- const isMicrophoneEnabled = this.participantService.isMyMicrophoneEnabled();
- await this.participantService.setMicrophoneEnabled(!isMicrophoneEnabled);
- }
-
- // Gets a token for a participant.
- getToken(roomName: string, participantName: string): Promise<any> {
- try {
- return lastValueFrom(
- this.httpClient.post<any>(this.APPLICATION_SERVER_URL + 'token', {
- roomName,
- participantName,
- })
- );
- } catch (error: any) {
- if (error.status === 404) {
- throw {
- status: error.status,
- message: 'Cannot connect with backend. ' + error.url + ' not found',
- };
- }
- throw error;
- }
- }
-}
-
You can run the associated tutorial here.
- - - - - - -Selector | -[ovToolbar] |
-
-
- projects/openvidu-components-angular/src/lib/directives/api/toolbar.directive.ts
-
-
-
The displayLogo directive allows show/hide the branding logo.
-Default: true
It can be used in the parent element VideoconferenceComponent specifying the name of the toolbar
component:
<ov-videoconference [toolbarDisplayLogo]="false"></ov-videoconference>
And it also can be used in the ToolbarComponent.
<ov-toolbar [displayLogo]="false"></ov-toolbar>
-
- AfterViewInit
- OnDestroy
-
Selector | -ov-videoconference[toolbarDisplayLogo], ov-toolbar[displayLogo] |
-
-
- projects/openvidu-components-angular/src/lib/directives/api/toolbar.directive.ts
-
-
-
The displayRoomName directive allows show/hide the room name.
-Default: true
It can be used in the parent element VideoconferenceComponent specifying the name of the toolbar
component:
<ov-videoconference [toolbarDisplayRoomName]="false"></ov-videoconference>
And it also can be used in the ToolbarComponent.
<ov-toolbar [displayRoomName]="false"></ov-toolbar>
-
- AfterViewInit
- OnDestroy
-
Selector | -ov-videoconference[toolbarDisplayRoomName], ov-toolbar[displayRoomName] |
-
-
- projects/openvidu-components-angular/src/lib/directives/api/toolbar.directive.ts
-
-
-
The fullscreenButton directive allows show/hide the fullscreen toolbar button.
-Default: true
It can be used in the parent element VideoconferenceComponent specifying the name of the toolbar
component:
<ov-videoconference [toolbarFullscreenButton]="false"></ov-videoconference>
And it also can be used in the ToolbarComponent.
<ov-toolbar [fullscreenButton]="false"></ov-toolbar>
-
- AfterViewInit
- OnDestroy
-
Selector | -ov-videoconference[toolbarFullscreenButton], ov-toolbar[fullscreenButton] |
-
-
- projects/openvidu-components-angular/src/lib/directives/api/toolbar.directive.ts
-
-
-
The leaveButton directive allows show/hide the leave toolbar button.
-Default: true
It can be used in the parent element VideoconferenceComponent specifying the name of the toolbar
component:
<ov-videoconference [toolbarLeaveButton]="false"></ov-videoconference>
And it also can be used in the ToolbarComponent.
<ov-toolbar [leaveButton]="false"></ov-toolbar>
-
- AfterViewInit
- OnDestroy
-
Selector | -ov-videoconference[toolbarLeaveButton], ov-toolbar[leaveButton] |
-
-
- projects/openvidu-components-angular/src/lib/directives/api/toolbar.directive.ts
-
-
-
The participantsPanelButton directive allows show/hide the participants panel toolbar button.
-Default: true
It can be used in the parent element VideoconferenceComponent specifying the name of the toolbar
component:
<ov-videoconference [toolbarParticipantsPanelButton]="false"></ov-videoconference>
And it also can be used in the ToolbarComponent.
<ov-toolbar [participantsPanelButton]="false"></ov-toolbar>
-
- AfterViewInit
- OnDestroy
-
Selector | -ov-videoconference[toolbarParticipantsPanelButton], ov-toolbar[participantsPanelButton] |
-
-
- projects/openvidu-components-angular/src/lib/directives/api/toolbar.directive.ts
-
-
-
The recordingButton directive allows show/hide the start/stop recording toolbar button.
-Default: true
It can be used in the parent element VideoconferenceComponent specifying the name of the toolbar
component:
<ov-videoconference [toolbarRecordingButton]="false"></ov-videoconference>
And it also can be used in the ToolbarComponent.
<ov-toolbar [recordingButton]="false"></ov-toolbar>
-
- AfterViewInit
- OnDestroy
-
Selector | -ov-videoconference[toolbarRecordingButton], ov-toolbar[recordingButton] |
-
-
- projects/openvidu-components-angular/src/lib/directives/api/toolbar.directive.ts
-
-
-
The screenshareButton directive allows show/hide the screenshare toolbar button.
-Default: true
It can be used in the parent element VideoconferenceComponent specifying the name of the toolbar
component:
<ov-videoconference [toolbarScreenshareButton]="false"></ov-videoconference>
And it also can be used in the ToolbarComponent.
<ov-toolbar [screenshareButton]="false"></ov-toolbar>
-
- AfterViewInit
- OnDestroy
-
Selector | -ov-videoconference[toolbarScreenshareButton], ov-toolbar[screenshareButton] |
-
-
- projects/openvidu-components-angular/src/lib/directives/api/toolbar.directive.ts
-
-
-
The settingsButton directive allows show/hide the settings toolbar button.
-Default: true
It can be used in the parent element VideoconferenceComponent specifying the name of the toolbar
component:
<ov-videoconference [toolbarSettingsButton]="false"></ov-videoconference>
And it also can be used in the ToolbarComponent.
<ov-toolbar [settingsButton]="false"></ov-toolbar>
-
- AfterViewInit
- OnDestroy
-
Selector | -ov-videoconference[toolbarSettingsButton], ov-toolbar[settingsButton] |
-
-
- projects/openvidu-components-angular/src/lib/directives/api/videoconference.directive.ts
-
-
-
The videoEnabled directive allows to join the room with camera enabled or disabled.
-It is only available for VideoconferenceComponent.
-Default: true
<ov-videoconference [videoEnabled]="false"></ov-videoconference>
-
- OnDestroy
-
Selector | -ov-videoconference[videoEnabled] |
-
j&o
zo~otC-8zb?ZrFtj#5_NOc+?H!h-)G3)(=yi3;ReP1w-R*`!P30{nY)Vbe|i>5s%f<
zSd;xO{7^lW*Mi`tho{<3;Uq9W)ANjazCUX1M%+5ekGY{%Htytw2N93Db%ejE9o118
z<%bajgu4)G U6DIyYh2a)@rq>YLzYF+9R^PI>lDK
z?~=99Cj15|BOgLiY1SpGge@&EWrqRe&kJvx+`495(u0GcsRt%B%Nm~~ooxZkh|Di8
z1VH&*9+XmljNFX&P2z+5z*XcaT30>bTJyd?FY8vt)~k5*lo9*
zJ@mz2jp^fJD|}^qcVDkqRX@nnl$fy0#QkU1cX#kSYpM!L9>qXA r&t+fbm-y)Mex|N>O
zegsD5GBfG&z$zPu+Yql7gn>bIx#S(Eg`o`|W^Sy_0g{XS!b+~0b#ftvvO410f9)3C
zzlMyV_nn2Y?Tb)nmJ$=YL3gYjC?x%{NZOk{q&kKdsRgcjghV*a#-P0M%igwil`Gfo
z&o3Rm4m_>5cGGODSR2|s=A|QZYh+TM;G1>Q5VrJ|0re@JTf2MU5IVt9!4({esN;yd
z^bEjeVqx5s3|I00%FvZT%xLAwF?6-GWAX}}o}^q{F%xl)z&u2n)?>A_RjQ?|35q2K
zM$)(iY_g<5f*iL-)4S{m$4(@U+;H>kqUS6`$d`m$eui(zw|XB+S;4)gahvTNgK~Da
zBv2mAd37Ur@UUmR+Tn1%yTpB%8vpef#=TSumbf*&JOgPiFkfOLg>4k)FGNNnKkKDa
zy~k5&@6SgpOe{t~Or2q-_@!j6mi(oM)-)NX#@^CdM3&4^Ddi{_%=Zrbu#7_8W8~q6
z!b6mjP?rfEG+LJmcZEAlnu#`IT!!m1|MO)R3Kve%ACy~)fo|G-#^Go>kc?pB;y}v<
zNg!zpw6&;B4x`?28T;5bcn8#@MO?yDtL;)W)rC9TbX;?2CKsfeOQY#XG@BY0lqQ*q
zM*BT6@*{k=RVG+Uj$I~`FSx;hMB?z$axvc~IUN@+__b8_me0e=i=Qw3xm4T`?&KU!
zRj}Qa&!rNWiAWDGS1|o}+LSjnG&(gcjKL(U?Z@7IPI<+yv2jGM6ilj}BE36b{7S
z* &*yAlOnXNjJ&&dqtpeK9)T6Fdtrhal-{fEN79f&a$kd{vuaAw!@HaZOp5=Ol
z|DKzl|Eu}=Hx&w3B9=A&Vqd}L(gKLdK7F|Y`qHHJR(YyblPSFCIb`+-cs4$H#~n}J
z!MuCExaS{n>IpoD(>tEL?~8lBi1h}!`cK&p*@Lz;^x@#hi5VlOtWksjBfqybBKD99
z0UK%4V61^l2m^%01ZNNKj{sN-r6h;~_CZ-4bh&Qq>h3C{t6irj=c6&Vaba_NYHO?+
zb5DIylG>7#gHxJr52hvum@zz9&u2YQp}|1_*9;lYzu~B^R~4^xoyX;l#v-mTcKC|aD_k8BjJEC{&xZ{pH4&3pJJMBAj
zcP_Yd$DIf6eD|*KUFY3(`(5LA{qFAOyO-U){qFsDKYx#WPy0QW-SgaM!=EjFcG+h)
zefH_kR`)0OuiU?V|26ynVgKa4=Dof5F1h!Pd!M}by|K+>`^SDU_U?W0`^xvNx$nWx
zr9S`S{Y&rPfB)-WX#K+0FN{5qdtm1SFMKin#Wi2t_2B9UuY2%?FSUPZ+m~+t(wh(2
zUq0~g#)tp-m6cz){VT6LVn4Fsk!v3L;a4|)^_H*x!=w7wl3!c%wO>Eh`q;|HMjw0O
z@yz3ck3aJG#DN6|ZanbECt9Ca_r#tjUU}k=Pp*IRfhS-1`iiH*PhIrX*i)~3!~90`
zH`aXPu5bM8>A|OWJU#aGFP_=_%-&~S|EBrP&EI_STf^VF_1nU?2fn@U+4g5IdiIfL
ze>ff-Upl^X{2>TCq%FS_x7zdiU3u&@<;TO&0#p|20+l#hk|^5lP`|5)~^{{FtV)
z_vSnXa`lJ)LZA@H7XsP9o{yY&9$Q=ea)1@^G)M(U-eO~r8A3vxkQIcM{%{A2gfnwl
zHdCChOsUvieax`mD5eS
zq+&BL*$8-4#S44mg?=wKRzMe7Plp|55^lrIu(TAUpNicXQS^kpUU0PNCB*8cvQyP^xDxnbDOl?
zGpthNld6W@E)a*|Y*aOdMJhUz^WC5s@%V<&hx#mQ7V-Iwcv8x`^YNsKj{*eO2I^v|
zhD5^W@mqFE*KLj)-eUIyXQgrCvKKP@6mH<~KNCBUt;cz-BNsR;L_#_~C|ZKOC|1gn
zF^25|i3(O94a5_HZn-6y2^j`H#ndAA1x+Bbz5IIRr~5OVzq+6^)6WJI!9NG%aag=zPPQTDngZ5atHdRq>
zeV>CvOPa>eb-mtA`>aW9L@^Z$(h@Kb6PYZ45c
zFgJ%GV6DId0MNcn@mY!*sfB=q?SY{1U*9XDLzba}3co6zC=%zi_OE`F*m(ND4<6sc
z43aABCFM0{81+GTEW9BrWyGuX*5dH!;Gmf!%&xp)#)Dx`B%(iJnM2Km<_I^)cRC{_
zaw{U&PR?~Q(IU}tl6m6Lcp0&x6<0&KLWBC-4Sd(!nGq#PG+~?dWGn*LTedj@n+z^&
zqn=B0!!n1}(c3q$pYy_4s_Xn9BI$Qzh)YS_Nh7sb5UI%~W|0MN!{hbn8P9vOg4c#M
z-tpnXiQ2m$@8<+Tb~eN^4RG#F#@USYkuCdA_Y6_ub<&wA4qAY^{iKv|B&xlKU;FrL
z5A)z%+wI=6c}v%&a`T(K81;l>F}1$y^fhPBTyuJtjs5M}GncR4eDms&S&I7jKM`~P
z4VlZ{zwx3wbQkdlFA2H>jjn%xq5Y~MYzubytKmIrCs}xq_A)N4GyU^Y1A*0h7UY5u
zI)lOq;@^t%E-RX0Gf-y(0jdS7>BP@aKj40$n7$tf+s`B@NGo%7sGmqxrg>t0$N*_o
z%`GTxyJa`avK}>y3#L9ou0pOFjcY_cWp0-n5k>SJzQ5Ox$1ClMDwo@pc$`&XpWYj;
zs5SQN36D{mmAD^g_nu0-UFLHytCij-D%&e(WS2fj%MAL)Dt)6U=t$%hzZ~YkF?2;T
z^boh+>L@`l7Q0r%!L5K7Gl_)?~{jlcneub>@%_B7dV;4cAcB
z;q|a34WxNK{ZY@HDZa$8!nR0|u22WERg>{^&~STBTp@ZW$UqS9NGLGm$T_W)5Fud?
z=ajq`Iha$*QCzP~(Q;C>l<)>B%fiI(So`;55E1L{?B9>1Gb54ZaL4mx@kPl9WD+I0
zyZtY-(^R5iX|zqMx9yyZL<)HU^Vf!~_*-jLNeap3#T9)*8<8sUu|1sFvJQRj5Pr*8
z_Rx)|57{j23AcYoX!>n?_Q2XK<>$Q7mF1t9J-9l{FGNRQJsOSJld(vlHk6n1)+Qz?
zEK!@HMk+r@IVbs@wzgDvjMu&&L1+G;OTUB)mQpT19|WJ-iA}gruYYDID1ql>Z2K$a
zeA}pmEoSjPEHFG*-{82XUT2u{-KUrmE)X{%|4v3JPhjC2LGTw&G`LWYI+_z^U=wZ)
z>1D#MF|ZG2jZre{
i!}AKqe}v6q*uj(g{;)I#r7)6<8)Ln7pAGC6j<@1qO#
z0fV+@15?)mc`8sK(rIQXw!Y9VATyZ1>81pyR_}T2TfcpvIgvC+$BfmH-x|wg#?
oubYgFeAB