From dea5054df7a33f21614fb0fd427b56c157bb5637 Mon Sep 17 00:00:00 2001 From: pratimmallick Date: Mon, 22 Jul 2024 19:10:41 +0530 Subject: [PATCH 01/27] Fixed typos --- docs/android/v2/release-notes/release-notes.mdx | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/docs/android/v2/release-notes/release-notes.mdx b/docs/android/v2/release-notes/release-notes.mdx index 8e885b588..4330855ec 100644 --- a/docs/android/v2/release-notes/release-notes.mdx +++ b/docs/android/v2/release-notes/release-notes.mdx @@ -18,6 +18,15 @@ import AndroidSdkVersionShield from '@/common/android-sdk-version-shield.md'; | live.100ms:video-filters: || | live.100ms:virtual-background: || +## v2.9.64 - 2024-07-22 +### Added +* Search peer API in large rooms + +### Fixed +* Closed the buffer stream after loading krisp blob for noise cancellation +* Disable internal AGC and NS when noise cancellation is enabled before joining +* Screen-share not working bug which was introduced in v2.9.63 + ## v2.9.63 - 2024-07-5 ## Fixed From 76a4f47c34c3ef4aa84f97415096d6b27e53cc81 Mon Sep 17 00:00:00 2001 From: pratimmallick Date: Tue, 13 Aug 2024 23:30:00 +0530 Subject: [PATCH 02/27] Release notes for v2.9.64 --- docs/android/v2/release-notes/release-notes.mdx | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/docs/android/v2/release-notes/release-notes.mdx b/docs/android/v2/release-notes/release-notes.mdx index 4330855ec..dee074ac5 100644 --- a/docs/android/v2/release-notes/release-notes.mdx +++ b/docs/android/v2/release-notes/release-notes.mdx @@ -18,6 +18,16 @@ import AndroidSdkVersionShield from '@/common/android-sdk-version-shield.md'; | live.100ms:video-filters: || | live.100ms:virtual-background: || +## v2.9.65 - 2024-08-13 +### Added +* Long running Session capability +* Add analytics event for interruption start/stop +* Added Jitter and packetSend in HMSStats + +### Fixed +* Higher Join time when called with preview when `captureNetworkQualityInPreview` is disabled +* onError callback of addplugin is not called if disableAutoResize option is enabled + ## v2.9.64 - 2024-07-22 ### Added * Search peer API in large rooms From a034feb2adccb80d22f194cccb18deeaf760e853 Mon Sep 17 00:00:00 2001 From: pratimmallick Date: Tue, 10 Sep 2024 11:57:58 +0530 Subject: [PATCH 03/27] Release notes for v2.9.66 and 2.9.67 --- docs/android/v2/release-notes/release-notes.mdx | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/docs/android/v2/release-notes/release-notes.mdx b/docs/android/v2/release-notes/release-notes.mdx index 6895ae6a4..545da707d 100644 --- a/docs/android/v2/release-notes/release-notes.mdx +++ b/docs/android/v2/release-notes/release-notes.mdx @@ -18,6 +18,17 @@ import AndroidPrebuiltVersionShield from '@/common/android-prebuilt-version-shie | live.100ms:video-filters: || | live.100ms:virtual-background: || +## v2.9.67 - 2024-09-10 +### Fixed +* VB memory leaks +* Native crashes and memory issues on multiple fast join-leave +* If leave was called when retry is ongoing, then next join would be queued if called on the same instance sometimes + +## v2.9.66 - 2024-08-2024 +### Fixed +* Java, native and graphic memory leaks +* Getting "Failed to set offer/answer" error after leaving sometimes + ## v2.9.65 - 2024-08-13 ### Added * Long running Session capability From 9e4c53a063ad3d7a313a68e0f0a95040235253c3 Mon Sep 17 00:00:00 2001 From: Bhavesh Date: Fri, 13 Sep 2024 21:02:38 +0530 Subject: [PATCH 04/27] chore: add prod-us7 ip --- .../configure-webhooks/secure-webhooks.mdx | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/docs/server-side/v2/how-to-guides/configure-webhooks/secure-webhooks.mdx b/docs/server-side/v2/how-to-guides/configure-webhooks/secure-webhooks.mdx index aa18d1881..20296d344 100644 --- a/docs/server-side/v2/how-to-guides/configure-webhooks/secure-webhooks.mdx +++ b/docs/server-side/v2/how-to-guides/configure-webhooks/secure-webhooks.mdx @@ -55,4 +55,16 @@ For additional security or if your firewall infrastructure can block incoming re 34.148.5.193/32 34.75.28.106/32 104.196.151.140/32 +35.233.197.245 +34.83.45.214 +34.168.197.180 +34.82.114.112 +34.127.94.235 +34.169.0.6 +34.174.153.122 +34.19.120.133 +34.174.24.176 +35.211.150.95 +35.211.73.217 +35.211.191.127 ``` From 0e3a6d0262fbaf93ecd01b249b3109d3258c0197 Mon Sep 17 00:00:00 2001 From: pratimmallick Date: Tue, 24 Sep 2024 17:50:47 +0530 Subject: [PATCH 05/27] Release notes for v2.9.68 --- docs/android/v2/release-notes/release-notes.mdx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/docs/android/v2/release-notes/release-notes.mdx b/docs/android/v2/release-notes/release-notes.mdx index 545da707d..9a2b99e94 100644 --- a/docs/android/v2/release-notes/release-notes.mdx +++ b/docs/android/v2/release-notes/release-notes.mdx @@ -18,13 +18,19 @@ import AndroidPrebuiltVersionShield from '@/common/android-prebuilt-version-shie | live.100ms:video-filters: || | live.100ms:virtual-background: || +## v2.9.67 - 2024-09-25 +### Fixed +* NullPointerException in RetryScheduler +* Crash fix in emulator while applying VB +* Fix retry continuing even after leaving some times + ## v2.9.67 - 2024-09-10 ### Fixed * VB memory leaks * Native crashes and memory issues on multiple fast join-leave * If leave was called when retry is ongoing, then next join would be queued if called on the same instance sometimes -## v2.9.66 - 2024-08-2024 +## v2.9.66 - 2024-08-29 ### Fixed * Java, native and graphic memory leaks * Getting "Failed to set offer/answer" error after leaving sometimes From b7ce6e8e0b6539b59223cfff54aacbd8193e80db Mon Sep 17 00:00:00 2001 From: pratimmallick Date: Tue, 24 Sep 2024 17:51:59 +0530 Subject: [PATCH 06/27] Release notes for v2.9.68 --- docs/android/v2/release-notes/release-notes.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/android/v2/release-notes/release-notes.mdx b/docs/android/v2/release-notes/release-notes.mdx index 9a2b99e94..e83eaced8 100644 --- a/docs/android/v2/release-notes/release-notes.mdx +++ b/docs/android/v2/release-notes/release-notes.mdx @@ -20,7 +20,7 @@ import AndroidPrebuiltVersionShield from '@/common/android-prebuilt-version-shie ## v2.9.67 - 2024-09-25 ### Fixed -* NullPointerException in RetryScheduler +* NullPointerException crash fix in RetryScheduler * Crash fix in emulator while applying VB * Fix retry continuing even after leaving some times From 8902de394e80668eeb4d27d59de851bd4761bffa Mon Sep 17 00:00:00 2001 From: Hardik Maheshwari <93115614+hdz-666@users.noreply.github.com> Date: Tue, 15 Oct 2024 13:45:34 +0530 Subject: [PATCH 07/27] fix : 100ms docs discord removal (#2410) * fix * fix * fix * fix: vale issue * fix * fix --- .github/workflows/main.yml | 6 +- CONTRIBUTING.md | 6 +- README.md | 2 - components/Footer.tsx | 14 +- components/Header.tsx | 22 +- .../v2/quickstart/prebuilt-android.mdx | 2 - .../v2/how-to-guides/debugging/faq.mdx | 2 +- .../peer/peer-metadata-update.mdx | 4 +- .../v2/quickstart/flutterflow-quickstart.mdx | 2 - docs/flutter/v2/quickstart/prebuilt.mdx | 3 - .../plugins/noise-cancellation.mdx | 2 +- .../v2/how-to-guides/debugging/faq.mdx | 4 +- .../v2/how-to-guides/debugging/overview.mdx | 3 +- .../plugins/custom-audio-plugins.mdx | 2 +- .../plugins/custom-video-plugins.mdx | 2 +- .../plugins/effects-virtual-background.mdx | 4 +- .../hls-stats.mdx | 2 +- .../stats.mdx | 2 +- .../hls/hls-timed-metadata.mdx | 2 +- .../javascript/v2/quickstart/mental-model.mdx | 2 +- .../v2/quickstart/prebuilt-quickstart.mdx | 2 +- .../v2/quickstart/react-quickstart.mdx | 2 +- docs/prebuilt/v2/prebuilt/quickstart.mdx | 3 +- .../v2/prebuilt/virtual-background.mdx | 2 +- .../noise-cancellation.mdx | 2 +- .../peer/change-metadata.mdx | 2 +- .../v2/quickstart/expo-quickstart.mdx | 2 +- lib/algolia/getRecords.js | 1342 ++++++++++------- lib/utils.js | 1 - .../api-reference/react-native/v2/index.html | 1 - 30 files changed, 815 insertions(+), 632 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 8c41534a5..5194a4428 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -17,11 +17,15 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 + - run: | + venv="$HOME/.local/share/venv" + python3 -m venv "$venv" + echo "$venv/bin" >> $GITHUB_PATH - uses: errata-ai/vale-action@reviewdog env: # Required, set by GitHub actions automatically: # https://docs.github.com/en/actions/security-guides/automatic-token-authentication#about-the-github_token-secret - GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} + GITHUB_TOKEN: ${{secrets.DOCKER_GIT_TOKEN}} with: # Reporter of reviewdog command [github-pr-check,github-pr-review,github-check]. reporter: github-pr-check # optional, default is github-pr-check diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 6d6a7a6f6..a4064cff9 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,6 +1,10 @@ # Contributing -Thank you for investing your time in contributing to our project! Any contribution you make will be reflected on [100ms Docs](https://docs.100ms.live/) If you don't know where to start contributing, ask us on our [Discord channel](http://100ms.live/discord). + + +Thank you for investing your time in contributing to our project & Any contribution you make will be reflected on [100ms Docs](https://docs.100ms.live/) + + In this guide you will get an overview of the contribution workflow from opening an issue, creating a PR, reviewing, and merging the PR. diff --git a/README.md b/README.md index 8cfaee07b..53d826b02 100644 --- a/README.md +++ b/README.md @@ -3,8 +3,6 @@ Logo

-[![Discord](https://img.shields.io/discord/843749923060711464?label=Join%20on%20Discord)](https://100ms.live/discord) -
> If you're here to contribute do check out our [Contributing Guidelines](CONTRIBUTING.md) & our [Code of Conduct](CODE_OF_CONDUCT.md) diff --git a/components/Footer.tsx b/components/Footer.tsx index 777dc5f4b..458492641 100644 --- a/components/Footer.tsx +++ b/components/Footer.tsx @@ -1,7 +1,6 @@ import React from 'react'; import { ChatIcon, - DiscordIcon, FacebookIcon, LinkedInIcon, Svg100MsLogo, @@ -63,18 +62,7 @@ const Footer: React.FC = ({ css = {} }) => ( /> - - - - - + diff --git a/components/Header.tsx b/components/Header.tsx index 4853f2519..0cef464da 100644 --- a/components/Header.tsx +++ b/components/Header.tsx @@ -3,13 +3,12 @@ import { useRouter } from 'next/router'; import { CrossIcon, HamburgerMenuIcon, - DiscordIcon, GithubIcon, ExternalLinkIcon, SearchIcon } from '@100mslive/react-icons'; import { Flex, Text, useTheme } from '@100mslive/react-ui'; -import { WebsiteLink, DashboardLink, GitHubLink, DiscordLink, ContactLink } from '@/lib/utils'; +import { WebsiteLink, DashboardLink, GitHubLink, ContactLink } from '@/lib/utils'; import { references } from 'api-references'; import { exposedPlatformNames } from 'common'; import SearchModal from './SearchModal'; @@ -208,25 +207,6 @@ const Header: React.FC = ({ Dashboard - - - AppAnalytics.track('link.clicked', { - btnId: 'discord.clicked', - currentPage: window.location.href - }) - }> - - - - - If you get stuck at any point or need help in understanding a concept, you can put your query in our [Discord Channel](https://100ms.live/discord). - ## Prerequisites diff --git a/docs/flutter/v2/how-to-guides/debugging/faq.mdx b/docs/flutter/v2/how-to-guides/debugging/faq.mdx index 43b1a8aad..956dcb333 100644 --- a/docs/flutter/v2/how-to-guides/debugging/faq.mdx +++ b/docs/flutter/v2/how-to-guides/debugging/faq.mdx @@ -222,4 +222,4 @@ To ensure that the message sent by the local peer is included in your messages l ### I want to suggest a new feature. -Awesome, we're always looking out for new ideas and features. Please reach out to us over [discord](https://100ms.live/discord) +Awesome, we're always looking out for new ideas and features. diff --git a/docs/flutter/v2/how-to-guides/interact-with-room/peer/peer-metadata-update.mdx b/docs/flutter/v2/how-to-guides/interact-with-room/peer/peer-metadata-update.mdx index b062fce4b..01a514b00 100644 --- a/docs/flutter/v2/how-to-guides/interact-with-room/peer/peer-metadata-update.mdx +++ b/docs/flutter/v2/how-to-guides/interact-with-room/peer/peer-metadata-update.mdx @@ -218,6 +218,4 @@ class Meeting implements HMSUpdateListener, HMSActionResultListener{ } ``` - - -There are many use cases which can be implemented using peer metadata. Have any questions regarding the use cases please reach out to us [here](https://100ms.live/discord) + \ No newline at end of file diff --git a/docs/flutter/v2/quickstart/flutterflow-quickstart.mdx b/docs/flutter/v2/quickstart/flutterflow-quickstart.mdx index 3ec6851a5..3d96286a4 100644 --- a/docs/flutter/v2/quickstart/flutterflow-quickstart.mdx +++ b/docs/flutter/v2/quickstart/flutterflow-quickstart.mdx @@ -81,8 +81,6 @@ Flutterflow uses `go_router` whereas `hms_room_kit` uses `MaterialPageRoute` for That's it. You can now use the amazing Prebuilt UI with speed of Flutterflow in your application. -If you face any issues or have any questions, please reach out to us on [Discord](https://discord.gg/jD94Fp74Ea) - ## Next steps We have multiple example apps to get you started with 100ms Flutter SDK. diff --git a/docs/flutter/v2/quickstart/prebuilt.mdx b/docs/flutter/v2/quickstart/prebuilt.mdx index 0b0e009fb..1b54f971e 100644 --- a/docs/flutter/v2/quickstart/prebuilt.mdx +++ b/docs/flutter/v2/quickstart/prebuilt.mdx @@ -328,6 +328,3 @@ class HMSPrebuiltOptions { - iOSScreenshareConfig: `HMSIOSScreenshareConfig?` - If you want to enable screenshare in your iOS app, you need to pass the `iOSScreenshareConfig` parameter. To know more about how to set iOSScreenshareConfig check the docs [here](https://www.100ms.live/docs/flutter/v2/how-to-guides/set-up-video-conferencing/screen-share#ios-setup). - enableNoiseCancellation: `bool` - To enable noise cancellation in prebuilt. Default value is `true`. - -Have questions or need help? -Feel free to join us on [Discord](https://discord.gg/jD94Fp74Ea) \ No newline at end of file diff --git a/docs/ios/v2/how-to-guides/extend-capabilities/plugins/noise-cancellation.mdx b/docs/ios/v2/how-to-guides/extend-capabilities/plugins/noise-cancellation.mdx index 504abea73..559fb302d 100644 --- a/docs/ios/v2/how-to-guides/extend-capabilities/plugins/noise-cancellation.mdx +++ b/docs/ios/v2/how-to-guides/extend-capabilities/plugins/noise-cancellation.mdx @@ -115,7 +115,7 @@ let isnoiseCancellationEnabled = noiseCancellationPlugin.isEnabled() ## How to check if noise cancellation is enabled in the room -To make noise cancellation work your room needs to have noise cancellation feature enabled. You can check if noise cancellation is enabled using isNoiseCancellationAvailable property on noiseCancellationPlugin. To enable noise canellation in your rooms, reach out to support@100ms.live or 100ms discord. +To make noise cancellation work your room needs to have noise cancellation feature enabled. You can check if noise cancellation is enabled using isNoiseCancellationAvailable property on noiseCancellationPlugin. To enable noise canellation in your rooms, reach out to support@100ms.live. ```swift let isNoiseCancellationAvailableInTheRoom = noiseCancellationPlugin.isNoiseCancellationAvailable diff --git a/docs/javascript/v2/how-to-guides/debugging/faq.mdx b/docs/javascript/v2/how-to-guides/debugging/faq.mdx index 6e85cff44..fe3123d3a 100644 --- a/docs/javascript/v2/how-to-guides/debugging/faq.mdx +++ b/docs/javascript/v2/how-to-guides/debugging/faq.mdx @@ -102,7 +102,7 @@ should treat it similar to the track turning off for purpose of displaying avata #### Do you have UI components? -Not yet, but it's work in progress for react. Do let us know on discord if you want to sign up for beta and we'll hit you up soon. +Not yet, but it's work in progress for react. Do let us know on support@100ms.live if you want to sign up for beta and we'll hit you up soon. #### Can I use the SDK with NextJS, Angular, Svelte, VueJS etc.? @@ -111,7 +111,7 @@ guide is with vanilla JS and doesn't assume any framework. #### I want to suggest a new feature. -Awesome, we're always on the lookout for new ideas and feature. Please reach out to us over [discord](https://100ms.live/discord). +Awesome, we're always on the lookout for new ideas and feature. Please reach out to us at support@100ms.live. #### I'm facing an issue, how do I reach out? diff --git a/docs/javascript/v2/how-to-guides/debugging/overview.mdx b/docs/javascript/v2/how-to-guides/debugging/overview.mdx index 1d6cd6fb0..e20fa6dc2 100644 --- a/docs/javascript/v2/how-to-guides/debugging/overview.mdx +++ b/docs/javascript/v2/how-to-guides/debugging/overview.mdx @@ -50,8 +50,7 @@ Do check the detailed page for listening to and handling errors [here](/javascri ## Reaching Out -If nothing else works, feel free to create an issue [here](https://github.com/100mslive/100ms-web/issues) or reach out to us -on [discord](https://100ms.live/discord), there is a channel there for web-sdk-discussion. +If nothing else works, feel free to create an issue [here](https://github.com/100mslive/100ms-web/issues). If you're reporting a bug, we would appreciate as many details possible. We might further ask you for the following information to debug the issues better - ### Steps to reproduce diff --git a/docs/javascript/v2/how-to-guides/extend-capabilities/plugins/custom-audio-plugins.mdx b/docs/javascript/v2/how-to-guides/extend-capabilities/plugins/custom-audio-plugins.mdx index 8becce043..e3334f19e 100644 --- a/docs/javascript/v2/how-to-guides/extend-capabilities/plugins/custom-audio-plugins.mdx +++ b/docs/javascript/v2/how-to-guides/extend-capabilities/plugins/custom-audio-plugins.mdx @@ -5,7 +5,7 @@ nav: 1.49 This feature is still in Beta. To know more or report any issues, feel free to reach out to us - over Discord. + over support@100ms.live. Custom audio plugins allow you to hook into 100ms' video lifecycle and add your own audio processing diff --git a/docs/javascript/v2/how-to-guides/extend-capabilities/plugins/custom-video-plugins.mdx b/docs/javascript/v2/how-to-guides/extend-capabilities/plugins/custom-video-plugins.mdx index dc24cf0f1..f9eb35ab3 100644 --- a/docs/javascript/v2/how-to-guides/extend-capabilities/plugins/custom-video-plugins.mdx +++ b/docs/javascript/v2/how-to-guides/extend-capabilities/plugins/custom-video-plugins.mdx @@ -5,7 +5,7 @@ nav: 1.48 This feature is still in Beta. To know more or report any issues, feel free to reach out to us - over Discord. + over support@100ms.live. Custom video plugins allow you to hook into 100ms' video lifecycle and add your own video processing diff --git a/docs/javascript/v2/how-to-guides/extend-capabilities/plugins/effects-virtual-background.mdx b/docs/javascript/v2/how-to-guides/extend-capabilities/plugins/effects-virtual-background.mdx index c586450fa..dbb697873 100644 --- a/docs/javascript/v2/how-to-guides/extend-capabilities/plugins/effects-virtual-background.mdx +++ b/docs/javascript/v2/how-to-guides/extend-capabilities/plugins/effects-virtual-background.mdx @@ -3,9 +3,9 @@ title: Virtual Background with Effects SDK nav: 1.45 --- - + This feature is still in Beta. To know more or report any issues, feel free to reach out to us - over Discord. + over support@100ms.live. diff --git a/docs/javascript/v2/how-to-guides/measure-network-quality-and-performance/hls-stats.mdx b/docs/javascript/v2/how-to-guides/measure-network-quality-and-performance/hls-stats.mdx index 44e1b02f1..4506bd21c 100644 --- a/docs/javascript/v2/how-to-guides/measure-network-quality-and-performance/hls-stats.mdx +++ b/docs/javascript/v2/how-to-guides/measure-network-quality-and-performance/hls-stats.mdx @@ -5,7 +5,7 @@ nav: 1.38 This feature is still in Beta. To know more or report any issues, feel free to reach out to us - over Discord. + over support@100ms.live. `@100ms-live/hls-stats` is a simple library that provides easy to use APIs for acquiring stats diff --git a/docs/javascript/v2/how-to-guides/measure-network-quality-and-performance/stats.mdx b/docs/javascript/v2/how-to-guides/measure-network-quality-and-performance/stats.mdx index d9308210e..2fc2f5977 100644 --- a/docs/javascript/v2/how-to-guides/measure-network-quality-and-performance/stats.mdx +++ b/docs/javascript/v2/how-to-guides/measure-network-quality-and-performance/stats.mdx @@ -5,7 +5,7 @@ nav: 1.37 This feature is still in Beta. To know more or report any issues, feel free to reach out to us - over Discord. + over support@100ms.live. Sometimes you need a way to capture certain metrics related to a call. This may be helpful if you want to tailor the experience to your users or debug issues. Typical metrics of interest are audio/video bitrate, round trip time, total consumed bandwidth and packet loss. `getStats` has got your back. diff --git a/docs/javascript/v2/how-to-guides/record-and-live-stream/hls/hls-timed-metadata.mdx b/docs/javascript/v2/how-to-guides/record-and-live-stream/hls/hls-timed-metadata.mdx index 314ec6cc5..4249cbfa7 100644 --- a/docs/javascript/v2/how-to-guides/record-and-live-stream/hls/hls-timed-metadata.mdx +++ b/docs/javascript/v2/how-to-guides/record-and-live-stream/hls/hls-timed-metadata.mdx @@ -40,7 +40,7 @@ start_date and end_date will be in UTC timezone. ### App side implementation -> Note: We're working on making this simpler - if you'd like to try out the feature in beta, please reach out to us on Discord or at hello@100ms.live +> Note: We're working on making this simpler - if you'd like to try out the feature in beta, please reach out to us at hello@100ms.live Below is an app side sample integration using hls.js. diff --git a/docs/javascript/v2/quickstart/mental-model.mdx b/docs/javascript/v2/quickstart/mental-model.mdx index dd05907dd..a66f61c76 100644 --- a/docs/javascript/v2/quickstart/mental-model.mdx +++ b/docs/javascript/v2/quickstart/mental-model.mdx @@ -185,4 +185,4 @@ As we see, using this decoupled state-driven approach, we can write concise and ## What Next? -Equipped with the above mental model, you’ll find it quite easy to navigate through our docs. Whether you’re skimming to get a sense of what is possible or trying to implement something in your own code, it all comes down to ***actions*** and ***states***. The best place to start would be with one of the Quickstarts linked in the sidebar. We also welcome you to join our [Discord](https://100ms.live/discord) - feel free to reach out to us there with any questions or feedback. +Equipped with the above mental model, you’ll find it quite easy to navigate through our docs. Whether you’re skimming to get a sense of what is possible or trying to implement something in your own code, it all comes down to ***actions*** and ***states***. The best place to start would be with one of the Quickstarts linked in the sidebar. diff --git a/docs/javascript/v2/quickstart/prebuilt-quickstart.mdx b/docs/javascript/v2/quickstart/prebuilt-quickstart.mdx index a4d9d7836..81a9995b4 100644 --- a/docs/javascript/v2/quickstart/prebuilt-quickstart.mdx +++ b/docs/javascript/v2/quickstart/prebuilt-quickstart.mdx @@ -8,7 +8,7 @@ nav: 1.01 This guide will walk you through the steps to create a video conferencing app using the Prebuilt component of the Roomkit package. Prebuilt is currently available for React applications, so basic familiarity with [React](https://reactjs.org/) is required to follow this guide. -> If you get stuck at any point or need help in understanding a concept, you can put your query in our [Discord Channel](https://100ms.live/discord). +> If you get stuck at any point or need help in understanding a concept, you can put your query in at support@100ms.live. ## Prerequisites diff --git a/docs/javascript/v2/quickstart/react-quickstart.mdx b/docs/javascript/v2/quickstart/react-quickstart.mdx index e4f6c5bd2..1b1a0c185 100644 --- a/docs/javascript/v2/quickstart/react-quickstart.mdx +++ b/docs/javascript/v2/quickstart/react-quickstart.mdx @@ -12,7 +12,7 @@ TL;DR - Try out this complete example in [CodeSandbox](https://codesandbox.io/s/ -> If you get stuck at any point or need help in understanding a concept, you can put your query in our [Discord Channel](https://100ms.live/discord). +> If you get stuck at any point or need help in understanding a concept, you can put your query in at support@100ms.live. ### Prerequisites diff --git a/docs/prebuilt/v2/prebuilt/quickstart.mdx b/docs/prebuilt/v2/prebuilt/quickstart.mdx index 98d5ba796..600c9fe1e 100644 --- a/docs/prebuilt/v2/prebuilt/quickstart.mdx +++ b/docs/prebuilt/v2/prebuilt/quickstart.mdx @@ -121,8 +121,7 @@ Refer the sample code snippet to embed the Prebuilt link as an iframe. Native - This is the highest-level UI component of a room, covering all screens and functionality - This component is shipped through `RoomKit` packages - The `RoomKit` package will contain more (lower-level) UI components - If you need a specific UI component, share - your feedback on [our Prebuilt Discord - channel](https://discord.com/channels/843749923060711464/1145960444230647808) + your feedback on our email support@100ms.live diff --git a/docs/prebuilt/v2/prebuilt/virtual-background.mdx b/docs/prebuilt/v2/prebuilt/virtual-background.mdx index 68596d7b4..8e4793fce 100644 --- a/docs/prebuilt/v2/prebuilt/virtual-background.mdx +++ b/docs/prebuilt/v2/prebuilt/virtual-background.mdx @@ -24,7 +24,7 @@ Adding a virtual background to your calls can help present a clean and organized -Virtual backgrounds are currently supported only on the Prebuilt web links and component. Reach out on [Prebuilt Discord channel](https://discord.com/channels/843749923060711464/1145960444230647808) to explore adding support for Android, iOS, React Native, and Flutter. +Virtual backgrounds are currently supported only on the Prebuilt web links and component. Reach out on support@100ms.live to explore adding support for Android, iOS, React Native, and Flutter. diff --git a/docs/react-native/v2/how-to-guides/extend-capabilities/noise-cancellation.mdx b/docs/react-native/v2/how-to-guides/extend-capabilities/noise-cancellation.mdx index d348acdbe..6ff74c29b 100644 --- a/docs/react-native/v2/how-to-guides/extend-capabilities/noise-cancellation.mdx +++ b/docs/react-native/v2/how-to-guides/extend-capabilities/noise-cancellation.mdx @@ -117,7 +117,7 @@ hmsInstance.join(hmsConfig) ## Check if Noise Cancellation is Supported in the Room -By default, Noise Cancellation is not enabled in a Room. To enable Noise Cancellation in your rooms, reach out to **support@100ms.live** or connect with us on [100ms Discord](https://discord.com/invite/kGdmszyzq2). +By default, Noise Cancellation is not enabled in a Room. To enable Noise Cancellation in your rooms, reach out to **support@100ms.live**. ```js const isAvailable = await noiseCancellationPlugin?.isNoiseCancellationAvailable(); diff --git a/docs/react-native/v2/how-to-guides/interact-with-room/peer/change-metadata.mdx b/docs/react-native/v2/how-to-guides/interact-with-room/peer/change-metadata.mdx index 9f6e95362..4269daa8c 100644 --- a/docs/react-native/v2/how-to-guides/interact-with-room/peer/change-metadata.mdx +++ b/docs/react-native/v2/how-to-guides/interact-with-room/peer/change-metadata.mdx @@ -136,4 +136,4 @@ hmsInstance.addEventListener(HMSUpdateListenerActions.ON_PEER_UPDATE, onPeerList We can use peers' `metadata` property to implement polls similar to what we did in above implementation. -There are many more use cases which can be implemented using peer metadata. Have any questions regarding the use cases please reach out to us [here](https://100ms.live/discord) +There are many more use cases which can be implemented using peer metadata. Have any questions regarding the use cases please reach out to us support@100ms.live diff --git a/docs/react-native/v2/quickstart/expo-quickstart.mdx b/docs/react-native/v2/quickstart/expo-quickstart.mdx index 075e8a857..7e5c0b740 100644 --- a/docs/react-native/v2/quickstart/expo-quickstart.mdx +++ b/docs/react-native/v2/quickstart/expo-quickstart.mdx @@ -1220,7 +1220,7 @@ export const updateNode = (data) => { //#endregion Utility ``` -We encourage you to explore the relevant documentation and guides for further details. If you have any questions or need assistance, feel free to ask in the 100ms [![Discord](https://img.shields.io/discord/843749923060711464?label=Join%20on%20Discord)](https://100ms.live/discord) community! +We encourage you to explore the relevant documentation and guides for further details. If you have any questions or need assistance, feel free to ask in the support email support@100ms.live ### Test run your app diff --git a/lib/algolia/getRecords.js b/lib/algolia/getRecords.js index d519a1fc7..ef6d9b984 100644 --- a/lib/algolia/getRecords.js +++ b/lib/algolia/getRecords.js @@ -25,939 +25,1161 @@ async function updateIndex() { // Paste JSON from G Sheet inside this array const faqs = [ { - "platform": "Common", - "questions": "What is the inspiration behind the name, 100ms?", - "answers": "We got the name 100ms inspired by the \"100ms latency rule\" concept from Gmail creator Paul Buchheit, who said that 100ms is the threshold \"where interactions feel instantaneous\". Why?" + platform: 'Common', + questions: 'What is the inspiration behind the name, 100ms?', + answers: + 'We got the name 100ms inspired by the "100ms latency rule" concept from Gmail creator Paul Buchheit, who said that 100ms is the threshold "where interactions feel instantaneous". Why?' }, { - "platform": "Common", - "questions": "Are your services supported in all countries?", - "answers": "Yes, our services are supported in all countries." + platform: 'Common', + questions: 'Are your services supported in all countries?', + answers: 'Yes, our services are supported in all countries.' }, { - "platform": "Common", - "questions": "Is 100ms fully optimized for mobile devices?", - "answers": "Our mobile SDKs are optimized to support most of the features and capabilities that are supported in our Web SDK. The rest of the features for Mobile SDKs are in the works. For example, Virtual background feature is available as a beta feature on Web, Android and iOS native platforms but not in React Native and Flutter." + platform: 'Common', + questions: 'Is 100ms fully optimized for mobile devices?', + answers: + 'Our mobile SDKs are optimized to support most of the features and capabilities that are supported in our Web SDK. The rest of the features for Mobile SDKs are in the works. For example, Virtual background feature is available as a beta feature on Web, Android and iOS native platforms but not in React Native and Flutter.' }, { - "platform": "Common", - "questions": "Can I delete apps from dashboard?", - "answers": "Yes, you can delete an App from your dashboard by hovering over the app and clicking on the trash icon." + platform: 'Common', + questions: 'Can I delete apps from dashboard?', + answers: + 'Yes, you can delete an App from your dashboard by hovering over the app and clicking on the trash icon.' }, { - "platform": "Common", - "questions": "Can I delete rooms via dashboard or API?", - "answers": "No, you cannot delete a room. The “delete room” functionality automatically erases all data associated with the room, so we don’t support it. We don't support the \"delete room\" functionality as it would lead to losing all data associated with the room. However, we support the following options based on why you’d want to delete rooms:\n\nCreating new rooms for every session: You can create as many rooms as you want, there is no limit on room creation\nDisable room: If you don't want additional requests to join a room, you can disable a room from the dashboard or via server API.\nDev & Prod Env: If you want to delete rooms from your account as you transition from Development to the Production stage, we recommend using \"Workspaces.\" It enables you to create two or more workspaces per your need and isolate the data for each workspace. Please check this blog for more information." + platform: 'Common', + questions: 'Can I delete rooms via dashboard or API?', + answers: + 'No, you cannot delete a room. The “delete room” functionality automatically erases all data associated with the room, so we don’t support it. We don\'t support the "delete room" functionality as it would lead to losing all data associated with the room. However, we support the following options based on why you’d want to delete rooms:\n\nCreating new rooms for every session: You can create as many rooms as you want, there is no limit on room creation\nDisable room: If you don\'t want additional requests to join a room, you can disable a room from the dashboard or via server API.\nDev & Prod Env: If you want to delete rooms from your account as you transition from Development to the Production stage, we recommend using "Workspaces." It enables you to create two or more workspaces per your need and isolate the data for each workspace. Please check this blog for more information.' }, { - "platform": "Common", - "questions": "I want to integrate video on to my website with 100ms - where do I start?", - "answers": "You can get started with our video conferencing example to see a live demo. You can also clone the 100ms-web sample app to see how you can extend and customize as per your needs.\n\nMeanwhile, check our docs to explore information about various features and capabilities supported on the platform." + platform: 'Common', + questions: + 'I want to integrate video on to my website with 100ms - where do I start?', + answers: + 'You can get started with our video conferencing example to see a live demo. You can also clone the 100ms-web sample app to see how you can extend and customize as per your needs.\n\nMeanwhile, check our docs to explore information about various features and capabilities supported on the platform.' }, { - "platform": "Common", - "questions": "Do you have a live demo app to check how live video/audio functionality works on your platform?", - "answers": "Yes, you can get started with one of our examples from here. You can also sign up for a 100ms account to access the dashboard." + platform: 'Common', + questions: + 'Do you have a live demo app to check how live video/audio functionality works on your platform?', + answers: + 'Yes, you can get started with one of our examples from here. You can also sign up for a 100ms account to access the dashboard.' }, { - "platform": "Common", - "questions": "I want to integrate live streaming into our app with 100ms - where do I start?", - "answers": "You can start with our documentation. We also recommend checking out our GitHub for open source sample SDKs that can aid in initial integration; here is a piece on our live streaming capabilities." + platform: 'Common', + questions: + 'I want to integrate live streaming into our app with 100ms - where do I start?', + answers: + 'You can start with our documentation. We also recommend checking out our GitHub for open source sample SDKs that can aid in initial integration; here is a piece on our live streaming capabilities.' }, { - "platform": "Common", - "questions": "I’d like to make some changes on how the video player looks. Do you have any resources I can pass to my design team so they can get started with the parts that are easy to configure?", - "answers": "100ms SDK is not coupled with the UI, which means you are free to change whatever you want. You can even use a completely custom built player from scratch. Please check out this super Figma UI Kit the 100ms design team put together." + platform: 'Common', + questions: + 'I’d like to make some changes on how the video player looks. Do you have any resources I can pass to my design team so they can get started with the parts that are easy to configure?', + answers: + '100ms SDK is not coupled with the UI, which means you are free to change whatever you want. You can even use a completely custom built player from scratch. Please check out this super Figma UI Kit the 100ms design team put together.' }, { - "platform": "Common", - "questions": "Is it possible to capture some images shown by customers during a call and store it in a database? It could be useful for applications like KYC.", - "answers": "No, but the raw video can be accessed and image recognition can be performed on the part where the user shows their ID." + platform: 'Common', + questions: + 'Is it possible to capture some images shown by customers during a call and store it in a database? It could be useful for applications like KYC.', + answers: + 'No, but the raw video can be accessed and image recognition can be performed on the part where the user shows their ID.' }, { - "platform": "Common", - "questions": "Are the apps created through the Starter Kits on the same infra as the live applications in production, or do you use a test infra?", - "answers": "It is powered by the same infra. Same as everything in production that we serve to our clients." + platform: 'Common', + questions: + 'Are the apps created through the Starter Kits on the same infra as the live applications in production, or do you use a test infra?', + answers: + 'It is powered by the same infra. Same as everything in production that we serve to our clients.' }, { - "platform": "Common", - "questions": "Can a teacher handle a remote user’s (student) screen (start and stop) like remotely mute/unmute of A/V ?", - "answers": "No, a teacher can only mute/unmute a student using the mute/unmute remote peer feature." + platform: 'Common', + questions: + 'Can a teacher handle a remote user’s (student) screen (start and stop) like remotely mute/unmute of A/V ?', + answers: + 'No, a teacher can only mute/unmute a student using the mute/unmute remote peer feature.' }, { - "platform": "Common", - "questions": "Is there a way I can specify my own room_id while creating a room?", - "answers": "No the room_id gets generated from our end." + platform: 'Common', + questions: 'Is there a way I can specify my own room_id while creating a room?', + answers: 'No the room_id gets generated from our end.' }, { - "platform": "Common", - "questions": "Is there a way to get data on how many users are online?", - "answers": "It is possible to get the online user for a specific room based on active room API." + platform: 'Common', + questions: 'Is there a way to get data on how many users are online?', + answers: + 'It is possible to get the online user for a specific room based on active room API.' }, { - "platform": "Common", - "questions": "How does pagination between tiles affect the download numbers?", - "answers": "Video will be downloaded only for the visible tiles, whereas only audio will be downloaded for tiles that aren’t visible. For the tiles that are not visible only audio will be downloaded." + platform: 'Common', + questions: 'How does pagination between tiles affect the download numbers?', + answers: + 'Video will be downloaded only for the visible tiles, whereas only audio will be downloaded for tiles that aren’t visible. For the tiles that are not visible only audio will be downloaded.' }, { - "platform": "Common", - "questions": "Are there any limitations on trial accounts?", - "answers": "There are no feature-level limitations while using a 100ms account. However, an invoice is generated when:\n\nYour usage exhausts the free credits for\nvideo conferencing (10,000 minutes) or\nHLS (live streaming) viewer minutes (10,000 minutes) or\nHLS encoding minutes (1,000 minutes)\nOr if you use the recording feature\nOr if you use external streaming (RTMP) feature\nOr if use HD quality for video conferencing (WebRTC), or live streaming viewers (HLS viewer).\nPlease check our pricing page or contact us for more information.\n\n" + platform: 'Common', + questions: 'Are there any limitations on trial accounts?', + answers: + 'There are no feature-level limitations while using a 100ms account. However, an invoice is generated when:\n\nYour usage exhausts the free credits for\nvideo conferencing (10,000 minutes) or\nHLS (live streaming) viewer minutes (10,000 minutes) or\nHLS encoding minutes (1,000 minutes)\nOr if you use the recording feature\nOr if you use external streaming (RTMP) feature\nOr if use HD quality for video conferencing (WebRTC), or live streaming viewers (HLS viewer).\nPlease check our pricing page or contact us for more information.\n\n' }, { - "platform": "Common", - "questions": "Is there a way to maintain separate access credentials and templates for development and production environments?", - "answers": "You can create two or more workspaces to maintain access credentials and templates for development environment and production separately. You can add multiple members to the same 100ms account/workspace. Know more about it here." + platform: 'Common', + questions: + 'Is there a way to maintain separate access credentials and templates for development and production environments?', + answers: + 'You can create two or more workspaces to maintain access credentials and templates for development environment and production separately. You can add multiple members to the same 100ms account/workspace. Know more about it here.' }, { - "platform": "Common", - "questions": "Is there any sandbox mode available for development environments?", - "answers": "Yes, this is possible with Teams & workspaces on 100ms dashboard - create multiple workspaces and members to manage each workspace based on your requirements. For example, you can create workspaces for development and production so that experimentation during development does not affect production. For more information, please check this blog and also check your 100ms dashboard to see how this works." + platform: 'Common', + questions: 'Is there any sandbox mode available for development environments?', + answers: + 'Yes, this is possible with Teams & workspaces on 100ms dashboard - create multiple workspaces and members to manage each workspace based on your requirements. For example, you can create workspaces for development and production so that experimentation during development does not affect production. For more information, please check this blog and also check your 100ms dashboard to see how this works.' }, { - "platform": "Common", - "questions": "Is there a way to add a second user to our account? Can we share login credentials?", - "answers": "Yes, you can add members to a 100ms workspace from dashboard. The “Members tab” in Workspace Settings page will enable you to invite members by adding their email address, they will receive an invitation to join the workspace on their inbox." + platform: 'Common', + questions: + 'Is there a way to add a second user to our account? Can we share login credentials?', + answers: + 'Yes, you can add members to a 100ms workspace from dashboard. The “Members tab” in Workspace Settings page will enable you to invite members by adding their email address, they will receive an invitation to join the workspace on their inbox.' }, { - "platform": "Common", - "questions": "I want to separate prod and non prod accounts - can I create sub-accounts within existing accounts?", - "answers": "You can create multiple workspaces on the 100ms dashboard to manage this. Use the “Create workspace” option from the workspaces dropdown on the top of the sidebar on Dashboard to create workspaces for different environments.\n\nPlease check this blog for more information." + platform: 'Common', + questions: + 'I want to separate prod and non prod accounts - can I create sub-accounts within existing accounts?', + answers: + 'You can create multiple workspaces on the 100ms dashboard to manage this. Use the “Create workspace” option from the workspaces dropdown on the top of the sidebar on Dashboard to create workspaces for different environments.\n\nPlease check this blog for more information.' }, { - "platform": "Common", - "questions": "Could you specify multiple webhook URLs for different environments under the same account?", - "answers": "You can create multiple workspaces and configure different webhooks for each of these environments. For more information, please check this blog and also check your 100ms dashboard to see how this works." + platform: 'Common', + questions: + 'Could you specify multiple webhook URLs for different environments under the same account?', + answers: + 'You can create multiple workspaces and configure different webhooks for each of these environments. For more information, please check this blog and also check your 100ms dashboard to see how this works.' }, { - "platform": "Common", - "questions": "Can I register for another 100ms account with the same email address?", - "answers": "No, you cannot use the same email address to create another account. However, if you need to create multiple accounts to keep data related to development/testing and production separately, you can do so with Workspaces - create multiple Workspaces with multiple email IDs within your 100ms account, so you can maintain different environments.\n\nThis will enable you to maintain different workspaces for different environments. For example, one workspace for development and one for production. For more information, please check this blog and also check your 100ms dashboard to see how this works." + platform: 'Common', + questions: 'Can I register for another 100ms account with the same email address?', + answers: + 'No, you cannot use the same email address to create another account. However, if you need to create multiple accounts to keep data related to development/testing and production separately, you can do so with Workspaces - create multiple Workspaces with multiple email IDs within your 100ms account, so you can maintain different environments.\n\nThis will enable you to maintain different workspaces for different environments. For example, one workspace for development and one for production. For more information, please check this blog and also check your 100ms dashboard to see how this works.' }, { - "platform": "Common", - "questions": "I’d like to know some specific details regarding pricing, and an estimated cost based on our usage. Who can help me?", - "answers": "You can use our pricing calculator for an estimate of the cost. You can also book a meeting with us directly for an in-depth discussion." + platform: 'Common', + questions: + 'I’d like to know some specific details regarding pricing, and an estimated cost based on our usage. Who can help me?', + answers: + 'You can use our pricing calculator for an estimate of the cost. You can also book a meeting with us directly for an in-depth discussion.' }, { - "platform": "Common", - "questions": "Is this pricing for standard definition or high definition?", - "answers": "No, the pricing is different for standard and high definition. Our product experts can help you with more details - go ahead and book a meeting with them, they will get in touch." + platform: 'Common', + questions: 'Is this pricing for standard definition or high definition?', + answers: + 'No, the pricing is different for standard and high definition. Our product experts can help you with more details - go ahead and book a meeting with them, they will get in touch.' }, { - "platform": "Common", - "questions": "Does billing on minutes count when the room has only the local peer in it?", - "answers": "Yes, if any peer joins and is publishing video or audio, it will be billed." + platform: 'Common', + questions: + 'Does billing on minutes count when the room has only the local peer in it?', + answers: + 'Yes, if any peer joins and is publishing video or audio, it will be billed.' }, { - "platform": "Common", - "questions": "What is the difference between auth token and management token?", - "answers": "Auth token : Used to authenticate and allow end-users (peers) to join 100ms rooms. An App Token controls Peer identity and Room permissions in your real-time or Interactive live-streaming video application.\nManagement token : Used to authenticate all the requests to 100ms REST API (server-side)." + platform: 'Common', + questions: 'What is the difference between auth token and management token?', + answers: + 'Auth token : Used to authenticate and allow end-users (peers) to join 100ms rooms. An App Token controls Peer identity and Room permissions in your real-time or Interactive live-streaming video application.\nManagement token : Used to authenticate all the requests to 100ms REST API (server-side).' }, { - "platform": "Common", - "questions": "Is there an easy method to create an auth token?", - "answers": "Yes, you can get Auth tokens using a couple of approaches based on your app's lifecycle stage. Please check this guide for more information" + platform: 'Common', + questions: 'Is there an easy method to create an auth token?', + answers: + "Yes, you can get Auth tokens using a couple of approaches based on your app's lifecycle stage. Please check this guide for more information" }, { - "platform": "Common", - "questions": "Is there a easy method to create an management token?", - "answers": "Yes, if you're exploring 100ms server APIs, our Postman collection contains a pre-request script which can generate the management token if you just update the App access key and App secret from the developers page on your 100ms dashboard. Please check the Postman guide for more information." + platform: 'Common', + questions: 'Is there a easy method to create an management token?', + answers: + "Yes, if you're exploring 100ms server APIs, our Postman collection contains a pre-request script which can generate the management token if you just update the App access key and App secret from the developers page on your 100ms dashboard. Please check the Postman guide for more information." }, { - "platform": "Common", - "questions": "What is the validity of management and client token?", - "answers": "If you use the code sample from authentication and tokens guide the validity of the token will be set as 24 hours. However, you can increase this to a maximum of 90 days by updating the value for expiresIn field." + platform: 'Common', + questions: 'What is the validity of management and client token?', + answers: + 'If you use the code sample from authentication and tokens guide the validity of the token will be set as 24 hours. However, you can increase this to a maximum of 90 days by updating the value for expiresIn field.' }, { - "platform": "Common", - "questions": "Why is the “role” variable needed when generating the auth token?", - "answers": "The role argument should be assigned with the name of the role created in the template. A role defines the following:\n\nWho a peer a see/hear\nThe quality at which they publish their video\nWhether or not they have permissions to publish video and/or share screen, mute someone, change someone’s role\nPlease check templates and roles guide for more information." + platform: 'Common', + questions: 'Why is the “role” variable needed when generating the auth token?', + answers: + 'The role argument should be assigned with the name of the role created in the template. A role defines the following:\n\nWho a peer a see/hear\nThe quality at which they publish their video\nWhether or not they have permissions to publish video and/or share screen, mute someone, change someone’s role\nPlease check templates and roles guide for more information.' }, { - "platform": "Common", - "questions": "Can we generate two application access tokens, one for QA and one for production, so that messages from QA don't flood the production environment?", - "answers": "Yes, this is possible with Teams & workspaces on the100ms dashboard - create multiple workspaces and use the App access key and App secret from each of these workspaces to create different auth tokens or management tokens based on your requirements. For more information, please check this blog and also check your 100ms dashboard to see how this works." + platform: 'Common', + questions: + "Can we generate two application access tokens, one for QA and one for production, so that messages from QA don't flood the production environment?", + answers: + 'Yes, this is possible with Teams & workspaces on the100ms dashboard - create multiple workspaces and use the App access key and App secret from each of these workspaces to create different auth tokens or management tokens based on your requirements. For more information, please check this blog and also check your 100ms dashboard to see how this works.' }, { - "platform": "Common", - "questions": "I’d like to use the endpoint of my backend service instead of the 100ms token endpoint for auth token generation in the React sample app. How do I do that?", - "answers": "You can set up a token generation service on your end to create auth tokens and block users that are trying to join without a token that's generated from your service. Please check authentication and tokens guide for more information.\n\nYou can update the code to point to your own token service (relevant code in the sample - see getToken(...)), your token endpoint can follow a similar interface: for a given room_id and role name, return the auth token JWT.\n\nYou can continue using the existing routes (room_id/role) or set up your own routes in the cloned/forked code." + platform: 'Common', + questions: + 'I’d like to use the endpoint of my backend service instead of the 100ms token endpoint for auth token generation in the React sample app. How do I do that?', + answers: + "You can set up a token generation service on your end to create auth tokens and block users that are trying to join without a token that's generated from your service. Please check authentication and tokens guide for more information.\n\nYou can update the code to point to your own token service (relevant code in the sample - see getToken(...)), your token endpoint can follow a similar interface: for a given room_id and role name, return the auth token JWT.\n\nYou can continue using the existing routes (room_id/role) or set up your own routes in the cloned/forked code." }, { - "platform": "Common", - "questions": "After a live stream ends, how long does it take (for both Beam recording and SFU) to show up in our s3 bucket?", - "answers": "Beam recording should be available within 15-20 minutes after the call ends. SFU recording will take ~1.5 times the call duration, after the call ends. For example, if the call duration is 30 minutes, then SFU recording will be available in 45 minutes." + platform: 'Common', + questions: + 'After a live stream ends, how long does it take (for both Beam recording and SFU) to show up in our s3 bucket?', + answers: + 'Beam recording should be available within 15-20 minutes after the call ends. SFU recording will take ~1.5 times the call duration, after the call ends. For example, if the call duration is 30 minutes, then SFU recording will be available in 45 minutes.' }, { - "platform": "Common", - "questions": "Is there a way for Beam to record what is happening in the chat without the chat being open and covering any tiles?", - "answers": "No, chat cannot be recorded without it being open. Beam recorder is a headless browser so it will record whatever is open in your page." + platform: 'Common', + questions: + 'Is there a way for Beam to record what is happening in the chat without the chat being open and covering any tiles?', + answers: + 'No, chat cannot be recorded without it being open. Beam recorder is a headless browser so it will record whatever is open in your page.' }, { - "platform": "Common", - "questions": "Can Beam only capture incoming audio/video streams from the video calling tab or it can also capture screenshare content from dynamic pages and stream/record it?", - "answers": "Beam can capture both streams from video tabs and screenshare content from dynamic pages." + platform: 'Common', + questions: + 'Can Beam only capture incoming audio/video streams from the video calling tab or it can also capture screenshare content from dynamic pages and stream/record it?', + answers: + 'Beam can capture both streams from video tabs and screenshare content from dynamic pages.' }, { - "platform": "Common", - "questions": "Can we split room recordings from our end?", - "answers": "If you need to get an individual recording file for each peer in a session, you can use Individual SFU recording.\n\nIf you must split recordings based on different duration of the session, you can use the Start a recording API in conjunction with Stop a recording API based on the time intervals as you wish and achieve this." + platform: 'Common', + questions: 'Can we split room recordings from our end?', + answers: + 'If you need to get an individual recording file for each peer in a session, you can use Individual SFU recording.\n\nIf you must split recordings based on different duration of the session, you can use the Start a recording API in conjunction with Stop a recording API based on the time intervals as you wish and achieve this.' }, { - "platform": "Common", - "questions": "How can we retrieve the recording from a room?", - "answers": "There are two ways to retrieve recordings for a room:\n\nUsing your S3 bucket - You can configure your S3 bucket at a template level to get all recordings for all the rooms associated with that template. Check this guide for more information.\nUsing webhooks - You can configure your server endpoint as webhook in the developers section on your dashboard to receive all events (including recording related events) to fetch the recording information. You can check our webhooks guide for more information." + platform: 'Common', + questions: 'How can we retrieve the recording from a room?', + answers: + 'There are two ways to retrieve recordings for a room:\n\nUsing your S3 bucket - You can configure your S3 bucket at a template level to get all recordings for all the rooms associated with that template. Check this guide for more information.\nUsing webhooks - You can configure your server endpoint as webhook in the developers section on your dashboard to receive all events (including recording related events) to fetch the recording information. You can check our webhooks guide for more information.' }, { - "platform": "Common", - "questions": "Is it possible to automatically stop the recording after a certain duration or at a specific timestamp?", - "answers": "Yes - you can do this by scheduling the stop a recording API with the help of a timer so that when the scheduled duration or time interval has reached the API request can be triggered to stop the recording. You can also trigger the client-side API to start/stop the recording." + platform: 'Common', + questions: + 'Is it possible to automatically stop the recording after a certain duration or at a specific timestamp?', + answers: + 'Yes - you can do this by scheduling the stop a recording API with the help of a timer so that when the scheduled duration or time interval has reached the API request can be triggered to stop the recording. You can also trigger the client-side API to start/stop the recording.' }, { - "platform": "Common", - "questions": "Can we retrieve the list of all the recordings of a room?", - "answers": "You cannot get the list of recordings using an API. However, you can use the webhook events related to recording (recording.success, beam.recording.success, and hls.recording.success ) and store the recording related information like recording location, recording pre-signed URL, etc. As these information are stored in your database, you can fetch the list of recordings for a specific room as you need." + platform: 'Common', + questions: 'Can we retrieve the list of all the recordings of a room?', + answers: + 'You cannot get the list of recordings using an API. However, you can use the webhook events related to recording (recording.success, beam.recording.success, and hls.recording.success ) and store the recording related information like recording location, recording pre-signed URL, etc. As these information are stored in your database, you can fetch the list of recordings for a specific room as you need.' }, { - "platform": "Common", - "questions": "Is it possible to stop recording when a specific event occurs?", - "answers": "There are various webhook events associated with room, session, peers, recording and streaming. You can listen to these events and trigger the Stop a recording API when a specific event occurs." + platform: 'Common', + questions: 'Is it possible to stop recording when a specific event occurs?', + answers: + 'There are various webhook events associated with room, session, peers, recording and streaming. You can listen to these events and trigger the Stop a recording API when a specific event occurs.' }, { - "platform": "Common", - "questions": "Is s3:ListBucket S3 permission required for S3 bucket access?", - "answers": "ListBucket permission is not required. To configure your S3 bucket for recordings, we only require the access key and secret key. Please check this guide for more information." + platform: 'Common', + questions: 'Is s3:ListBucket S3 permission required for S3 bucket access?', + answers: + 'ListBucket permission is not required. To configure your S3 bucket for recordings, we only require the access key and secret key. Please check this guide for more information.' }, { - "platform": "Common", - "questions": "Is it possible to record a live stream and allow users to continue to replay the stream even after the live stream has ended (VOD use cases)?", - "answers": "Yes, 100ms provides the option to record a streaming session and get the recordings for Video on demand (VOD). Simply enable HLS recording which will give you a M3U8 file that can be used for playback on any HLS player once the session is completed. Please check this guide for more information." + platform: 'Common', + questions: + 'Is it possible to record a live stream and allow users to continue to replay the stream even after the live stream has ended (VOD use cases)?', + answers: + 'Yes, 100ms provides the option to record a streaming session and get the recordings for Video on demand (VOD). Simply enable HLS recording which will give you a M3U8 file that can be used for playback on any HLS player once the session is completed. Please check this guide for more information.' }, { - "platform": "Common", - "questions": "What is the resolution of browser recording and SFU recording?", - "answers": "Currently, browser recording supports both 720p and 1080p resolution, whereas SFU recording supports only 720p resolution. Please check this guide for more information.\n\nPricing is applicable for recording based on the resolution used. Please check our pricing page or contact us for more information." + platform: 'Common', + questions: 'What is the resolution of browser recording and SFU recording?', + answers: + 'Currently, browser recording supports both 720p and 1080p resolution, whereas SFU recording supports only 720p resolution. Please check this guide for more information.\n\nPricing is applicable for recording based on the resolution used. Please check our pricing page or contact us for more information.' }, { - "platform": "Common", - "questions": "How can we debug issues with uploading video recordings to an S3 bucket?", - "answers": "We have added a validation check for recording configuration on Dashboard. If you configure recording storage from “Destination tab” for a template, you will get an error if there’s an incorrect configuration. For example, if the permissions are not set correctly." + platform: 'Common', + questions: + 'How can we debug issues with uploading video recordings to an S3 bucket?', + answers: + 'We have added a validation check for recording configuration on Dashboard. If you configure recording storage from “Destination tab” for a template, you will get an error if there’s an incorrect configuration. For example, if the permissions are not set correctly.' }, { - "platform": "Common", - "questions": "What permissions are needed to allow video recordings to be uploaded to an S3 bucket?", - "answers": "Both read and write permissions for the bucket are required for 100ms servers to upload the recordings to the S3 bucket." + platform: 'Common', + questions: + 'What permissions are needed to allow video recordings to be uploaded to an S3 bucket?', + answers: + 'Both read and write permissions for the bucket are required for 100ms servers to upload the recordings to the S3 bucket.' }, { - "platform": "Common", - "questions": "How long does it take for the composite recording to be ready?", - "answers": "This usually takes 1.2 - 1.5 times the duration of the session. There is a delay when a lot of requests are in queue.\n\nA delay can also happen if the number of peers in the sessions increase.\n\nSession minutes * number of peers * 1.5x.\nSo for example, take a session of 1 minute, with 5 participants. The total time taken for the recording to be generated would be around 7.5 minutes (1*5*1.5).\n" + platform: 'Common', + questions: 'How long does it take for the composite recording to be ready?', + answers: + 'This usually takes 1.2 - 1.5 times the duration of the session. There is a delay when a lot of requests are in queue.\n\nA delay can also happen if the number of peers in the sessions increase.\n\nSession minutes * number of peers * 1.5x.\nSo for example, take a session of 1 minute, with 5 participants. The total time taken for the recording to be generated would be around 7.5 minutes (1*5*1.5).\n' }, { - "platform": "Common", - "questions": "Is cloud recording available?", - "answers": "Yes, Please check RTMP streaming and recording guide for more information." + platform: 'Common', + questions: 'Is cloud recording available?', + answers: + 'Yes, Please check RTMP streaming and recording guide for more information.' }, { - "platform": "Common", - "questions": "Does your chat feature support advanced features like profanity filtering, file attachments, etc?", - "answers": "Our chat feature supports text conversations and emojis/reactions at the moment.\n\nHowever, you can use a third-party library on top of 100ms to build features like:\n\nProfanity filtering\nLanguage Translations\nTyping indicators,\nRich media file uploads, etc." + platform: 'Common', + questions: + 'Does your chat feature support advanced features like profanity filtering, file attachments, etc?', + answers: + 'Our chat feature supports text conversations and emojis/reactions at the moment.\n\nHowever, you can use a third-party library on top of 100ms to build features like:\n\nProfanity filtering\nLanguage Translations\nTyping indicators,\nRich media file uploads, etc.' }, { - "platform": "Common", - "questions": "Is chat sent over a separate WebRTC channel?", - "answers": "Chat is sent over websockets." + platform: 'Common', + questions: 'Is chat sent over a separate WebRTC channel?', + answers: 'Chat is sent over websockets.' }, { - "platform": "Common", - "questions": "Is there a way to retrieve chat logs during a session?", - "answers": "Currently, chat is not saved and there is no way to retrieve chat logs." + platform: 'Common', + questions: 'Is there a way to retrieve chat logs during a session?', + answers: 'Currently, chat is not saved and there is no way to retrieve chat logs.' }, { - "platform": "Common", - "questions": "does your latest react native hms sdk target or compile at android 12 i.e targetsdkVersion 31 ? we are trying to upgrade our apk to targetSdkVersion 31", - "answers": "Yes, Android 12 is supported. Since our SDK does not use any Android 12 specific APIs, we have kept targetsdkVersion 29 to ensure compatibility with all users of our SDK" + platform: 'Common', + questions: + 'does your latest react native hms sdk target or compile at android 12 i.e targetsdkVersion 31 ? we are trying to upgrade our apk to targetSdkVersion 31', + answers: + 'Yes, Android 12 is supported. Since our SDK does not use any Android 12 specific APIs, we have kept targetsdkVersion 29 to ensure compatibility with all users of our SDK' }, { - "platform": "Common", - "questions": "Hey how long should it take for a recording to show up in our s3 bucket after a livestream is ended, for both beam recording and SFU?", - "answers": "Beam recording should be available within 15-20 minutes after the call ends.\nSFU recording will take ~1.5 times the call duration, after the call ends." + platform: 'Common', + questions: + 'Hey how long should it take for a recording to show up in our s3 bucket after a livestream is ended, for both beam recording and SFU?', + answers: + 'Beam recording should be available within 15-20 minutes after the call ends.\nSFU recording will take ~1.5 times the call duration, after the call ends.' }, { - "platform": "Common", - "questions": "Hey 100ms team - is there a way for the beam recorder to record what is happening in the chat without the chat being open and covering any tiles?" + platform: 'Common', + questions: + 'Hey 100ms team - is there a way for the beam recorder to record what is happening in the chat without the chat being open and covering any tiles?' }, { - "platform": "Common", - "questions": "Will the 100ms bot go to a video call webpage and render dynamic pages and stream/record the screen, or will it collect incoming video/audio streams only?", - "answers": "The 100ms bot goes to a video call webpage and renders dynamic pages and stream/record the screen." + platform: 'Common', + questions: + 'Will the 100ms bot go to a video call webpage and render dynamic pages and stream/record the screen, or will it collect incoming video/audio streams only?', + answers: + 'The 100ms bot goes to a video call webpage and renders dynamic pages and stream/record the screen.' }, { - "platform": "Common", - "questions": "Can we split room recordings as per some control at our end?", - "answers": "It depends on the type of recording being used. If using AVP recording, webhooks can be used to retrieve the recording link for each session. If using beam recording, the recording can be split by specifying the recording duration in the API call." + platform: 'Common', + questions: 'Can we split room recordings as per some control at our end?', + answers: + 'It depends on the type of recording being used. If using AVP recording, webhooks can be used to retrieve the recording link for each session. If using beam recording, the recording can be split by specifying the recording duration in the API call.' }, { - "platform": "Common", - "questions": "Can we use the same room ID but have separate recordings as per our need?", - "answers": "Yes, it can be done by specifying a new session ID in the API call to create a new recording." + platform: 'Common', + questions: + 'Can we use the same room ID but have separate recordings as per our need?', + answers: + 'Yes, it can be done by specifying a new session ID in the API call to create a new recording.' }, { - "platform": "Common", - "questions": "How can we retrieve the recording from a room?", - "answers": "The recording can be retrieved by using the API call to get the recording details and then downloading the recording using the provided link." + platform: 'Common', + questions: 'How can we retrieve the recording from a room?', + answers: + 'The recording can be retrieved by using the API call to get the recording details and then downloading the recording using the provided link.' }, { - "platform": "Common", - "questions": "Is it possible to make a recording automatically stop after a certain duration or at a specific time?", - "answers": "Yes, the recording can be stopped automatically by specifying the recording duration in the API call or by using the API call to stop the recording at a specific time." + platform: 'Common', + questions: + 'Is it possible to make a recording automatically stop after a certain duration or at a specific time?', + answers: + 'Yes, the recording can be stopped automatically by specifying the recording duration in the API call or by using the API call to stop the recording at a specific time.' }, { - "platform": "Common", - "questions": "Can we retrieve the list of all the recordings of a room?", - "answers": "Yes, the list of all recordings for a room can be retrieved using the API call to list recordings." + platform: 'Common', + questions: 'Can we retrieve the list of all the recordings of a room?', + answers: + 'Yes, the list of all recordings for a room can be retrieved using the API call to list recordings.' }, { - "platform": "Common", - "questions": "Is it possible to make a recording stop when a specific event occurs?", - "answers": "Yes, the recording can be stopped using the API call to stop the recording when a specific event occurs." + platform: 'Common', + questions: 'Is it possible to make a recording stop when a specific event occurs?', + answers: + 'Yes, the recording can be stopped using the API call to stop the recording when a specific event occurs.' }, { - "platform": "Common", - "questions": "Is s3:ListBucket S3 permission required for S3 bucket access?", - "answers": "ListBucket permission is not required" + platform: 'Common', + questions: 'Is s3:ListBucket S3 permission required for S3 bucket access?', + answers: 'ListBucket permission is not required' }, { - "platform": "Common", - "questions": "We would like to record a live stream and allow users to continue to replay the recording even after the live stream has ended. So we need to be able to directly access the recording", - "answers": "For that you need to have HLS recording enabled and that will give you a m3u8 file that you can play back post the session on any HLS player" + platform: 'Common', + questions: + 'We would like to record a live stream and allow users to continue to replay the recording even after the live stream has ended. So we need to be able to directly access the recording', + answers: + 'For that you need to have HLS recording enabled and that will give you a m3u8 file that you can play back post the session on any HLS player' }, { - "platform": "Common", - "questions": "Web Recording resolution, is the browser itself 1080p? Is the recording 1080p?", - "answers": "Currently both are 720p. We can do 1080p but it will cost more.\nour RTMP out costs for 720p v/s 1080p will be 12$/1000 minutes v/s 24$/1000 minutes" + platform: 'Common', + questions: + 'Web Recording resolution, is the browser itself 1080p? Is the recording 1080p?', + answers: + 'Currently both are 720p. We can do 1080p but it will cost more.\nour RTMP out costs for 720p v/s 1080p will be 12$/1000 minutes v/s 24$/1000 minutes' }, { - "platform": "Common", - "questions": "Can we use the 100ms browser video recorder for one off websites?", - "answers": "yes, you definitely can!" + platform: 'Common', + questions: 'Can we use the 100ms browser video recorder for one off websites?', + answers: 'yes, you definitely can!' }, { - "platform": "Common", - "questions": "How can we debug issues with uploading video recordings to an S3 bucket?", - "answers": "As a first step, check if read/write permissions are given for the bucket where the recordings need to get uploaded." + platform: 'Common', + questions: + 'How can we debug issues with uploading video recordings to an S3 bucket?', + answers: + 'As a first step, check if read/write permissions are given for the bucket where the recordings need to get uploaded.' }, { - "platform": "Common", - "questions": "What permissions are needed to allow video recordings to be uploaded to an S3 bucket?", - "answers": "Read and write permissions for the bucket where the recordings need to be uploaded are required." + platform: 'Common', + questions: + 'What permissions are needed to allow video recordings to be uploaded to an S3 bucket?', + answers: + 'Read and write permissions for the bucket where the recordings need to be uploaded are required.' }, { - "platform": "Common", - "questions": "How long does it take for the composite recording to be ready?", - "answers": "This usually takes 1.2 - 1.5 times the duration of the session. There is a delay when a lot of requests are in queue. A delay can also happen if the number of peers in the sessions increase. Session minutes * number of peers * 1.5x.\nSo for example a session of 1 minute, with 5 participants. The total time taken for the recording to generate would be around 7.5minutes (1*5*1.5)" + platform: 'Common', + questions: 'How long does it take for the composite recording to be ready?', + answers: + 'This usually takes 1.2 - 1.5 times the duration of the session. There is a delay when a lot of requests are in queue. A delay can also happen if the number of peers in the sessions increase. Session minutes * number of peers * 1.5x.\nSo for example a session of 1 minute, with 5 participants. The total time taken for the recording to generate would be around 7.5minutes (1*5*1.5)' }, { - "platform": "Common", - "questions": "Is Cloud recording available?", - "answers": "Yes, cloud recording is available." + platform: 'Common', + questions: 'Is Cloud recording available?', + answers: 'Yes, cloud recording is available.' }, { - "platform": "Common", - "questions": "Is it possible to export chat logs from one of the front-end clients and save it?", - "answers": "Yes, you can handle this on your client-side and export chat logs." + platform: 'Common', + questions: + 'Is it possible to export chat logs from one of the front-end clients and save it?', + answers: 'Yes, you can handle this on your client-side and export chat logs.' }, { - "platform": "Common", - "questions": "What is the size limit of a custom event in 100ms SDK ?", - "answers": "4KB" + platform: 'Common', + questions: 'What is the size limit of a custom event in 100ms SDK ?', + answers: '4KB' }, { - "platform": "Common", - "questions": "What is the limit for room size in live streaming?", - "answers": "The limit is under 10K, which is the same as WebRTC. Suppose we have 1000 viewers on a stream who are publishing their video, and each of them is subscribing to only 9 tiles, then:\n\ntotal number of uploaded streams + total number of downloaded streams ≤ 10,000\nuploaded streams = 1000\ndownloaded streams = 1000 peers x 9 video tiles each = 9,000\ntotal = 1000+9000 ≤ 10,000.\nIt's still under the 10K limit." + platform: 'Common', + questions: 'What is the limit for room size in live streaming?', + answers: + "The limit is under 10K, which is the same as WebRTC. Suppose we have 1000 viewers on a stream who are publishing their video, and each of them is subscribing to only 9 tiles, then:\n\ntotal number of uploaded streams + total number of downloaded streams ≤ 10,000\nuploaded streams = 1000\ndownloaded streams = 1000 peers x 9 video tiles each = 9,000\ntotal = 1000+9000 ≤ 10,000.\nIt's still under the 10K limit." }, { - "platform": "Common", - "questions": "Can users in the live stream send chat messages?", - "answers": "Yes. The same chat API that works in real-time conferencing (WebRTC) will work for the live streaming (HLS) viewers as well." + platform: 'Common', + questions: 'Can users in the live stream send chat messages?', + answers: + 'Yes. The same chat API that works in real-time conferencing (WebRTC) will work for the live streaming (HLS) viewers as well.' }, { - "platform": "Common", - "questions": "What is the maximum number of viewers a live streaming session can support?", - "answers": "The maximum number of viewers the live streaming can support with the chat function is 5k. Without the chat function, the system can scale to 50k-100k viewers." + platform: 'Common', + questions: + 'What is the maximum number of viewers a live streaming session can support?', + answers: + 'The maximum number of viewers the live streaming can support with the chat function is 5k. Without the chat function, the system can scale to 50k-100k viewers.' }, { - "platform": "Common", - "questions": "What is the average delay of the live streaming?", - "answers": "The average delay of the live streaming is 10-12 seconds." + platform: 'Common', + questions: 'What is the average delay of the live streaming?', + answers: 'The average delay of the live streaming is 10-12 seconds.' }, { - "platform": "Common", - "questions": "Can you provide more information on the live stream feature?", - "answers": "You can use the 100ms platform to build interactive live streaming (HLS) apps and to broadcast your live stream to external streaming platforms like YouTube, Twitch, etc using our External streaming service (RTMP).\n\nPlease check these links for more details.\n\nInteractive live streaming (HLS)\nExternal streaming (RTMP)" + platform: 'Common', + questions: 'Can you provide more information on the live stream feature?', + answers: + 'You can use the 100ms platform to build interactive live streaming (HLS) apps and to broadcast your live stream to external streaming platforms like YouTube, Twitch, etc using our External streaming service (RTMP).\n\nPlease check these links for more details.\n\nInteractive live streaming (HLS)\nExternal streaming (RTMP)' }, { - "platform": "Common", - "questions": "Can I integrate a feature similar to Twitter super followers using 100ms by only allowing the authenticated users?", - "answers": "Yes, you can use interactive live streaming (HLS) to integrate a similar app and the live feed of the streaming will be available in a room which can be accessed by joining a room with a JWT token (auth token) with the viewer role." + platform: 'Common', + questions: + 'Can I integrate a feature similar to Twitter super followers using 100ms by only allowing the authenticated users?', + answers: + 'Yes, you can use interactive live streaming (HLS) to integrate a similar app and the live feed of the streaming will be available in a room which can be accessed by joining a room with a JWT token (auth token) with the viewer role.' }, { - "platform": "Common", - "questions": "Can the 100ms RTMP streaming be used with any URL?", - "answers": "The 100ms RTMP streaming can be used with stream URLs from RTMP servers that allow RTMP streaming. For example, YouTube, Facebook, Instagram, Twitch, LinkedIn." + platform: 'Common', + questions: 'Can the 100ms RTMP streaming be used with any URL?', + answers: + 'The 100ms RTMP streaming can be used with stream URLs from RTMP servers that allow RTMP streaming. For example, YouTube, Facebook, Instagram, Twitch, LinkedIn.' }, { - "platform": "Common", - "questions": "Do we need to set up our own CDN servers for RTMP URLs or can we attach 100ms URLs to video elements in HTML?", - "answers": "For RTMP, you will need to set up your own CDN servers or attach 100ms URLs to video elements in HTML. However, the CDN URL is not needed for interactive live streaming (HLS); it will be provided by 100ms." + platform: 'Common', + questions: + 'Do we need to set up our own CDN servers for RTMP URLs or can we attach 100ms URLs to video elements in HTML?', + answers: + 'For RTMP, you will need to set up your own CDN servers or attach 100ms URLs to video elements in HTML. However, the CDN URL is not needed for interactive live streaming (HLS); it will be provided by 100ms.' }, { - "platform": "Common", - "questions": "Can I build a whiteboard feature on the100ms platform?", - "answers": "The whiteboard feature is currently available in beta for the web platform. We will build our own communication infra for this but currently this is integrated with Pusher, you can create a Pusher account and integrate this in your app too.\n\nPlease check the collaborative whiteboard guide for more information." + platform: 'Common', + questions: 'Can I build a whiteboard feature on the100ms platform?', + answers: + 'The whiteboard feature is currently available in beta for the web platform. We will build our own communication infra for this but currently this is integrated with Pusher, you can create a Pusher account and integrate this in your app too.\n\nPlease check the collaborative whiteboard guide for more information.' }, { - "platform": "Common", - "questions": "Do you have a list of extra plugins that can be added to live sessions?", - "answers": "Currently, you can build additional interactive experiences in your app with the help of peer metadata. You can integrate features like raise hand, polls, quizzes, etc,. using this. You can also check the existing plugins on our platform such as collaborative whiteboard, virtual background, custom audio & video plugins. Please stay tuned to our product updates by signing up for our newsletter from here.\n\nCurrently, you can build additional interactive experiences in your app with the help of Peer metadata. You can integrate raise hand, polls, quizzes, etc,. using this. You can also check the existing plugins our platform such as Virtual background, Custom audio & video plugins. We will soon be adding a whiteboard plugin as well. Please stay tuned our product updates by signing up for our newsletter from here.\n\n" + platform: 'Common', + questions: + 'Do you have a list of extra plugins that can be added to live sessions?', + answers: + 'Currently, you can build additional interactive experiences in your app with the help of peer metadata. You can integrate features like raise hand, polls, quizzes, etc,. using this. You can also check the existing plugins on our platform such as collaborative whiteboard, virtual background, custom audio & video plugins. Please stay tuned to our product updates by signing up for our newsletter from here.\n\nCurrently, you can build additional interactive experiences in your app with the help of Peer metadata. You can integrate raise hand, polls, quizzes, etc,. using this. You can also check the existing plugins our platform such as Virtual background, Custom audio & video plugins. We will soon be adding a whiteboard plugin as well. Please stay tuned our product updates by signing up for our newsletter from here.\n\n' }, { - "platform": "Common", - "questions": "Would you be able to tell us the approximate latency of a creator in North America doing a real time video conference for an end user located in Australia?", - "answers": "It should be in the 200-500 ms range" + platform: 'Common', + questions: + 'Would you be able to tell us the approximate latency of a creator in North America doing a real time video conference for an end user located in Australia?', + answers: 'It should be in the 200-500 ms range' }, { - "platform": "Common", - "questions": "Is the latency different for different devices?", - "answers": "Latency is calculated based on the network bandwidth of the user, sometimes in low end devices, the device itself can hamper latency." + platform: 'Common', + questions: 'Is the latency different for different devices?', + answers: + 'Latency is calculated based on the network bandwidth of the user, sometimes in low end devices, the device itself can hamper latency.' }, { - "platform": "Common", - "questions": "Why am I constantly getting low bandwidth alerts?", - "answers": "This is the connection quality score which changes in real time on the basis of the bandwidth of the peer at the given time. Even if your network connection is otherwise strong, if it drops at a certain point due to bandwidth, the connection quality will be displayed as poor.\n\nIf you want to investigate further, do check out the Stats for Nerds feature - there are more details to help you understand why the quality of connection dropped." + platform: 'Common', + questions: 'Why am I constantly getting low bandwidth alerts?', + answers: + 'This is the connection quality score which changes in real time on the basis of the bandwidth of the peer at the given time. Even if your network connection is otherwise strong, if it drops at a certain point due to bandwidth, the connection quality will be displayed as poor.\n\nIf you want to investigate further, do check out the Stats for Nerds feature - there are more details to help you understand why the quality of connection dropped.' }, { - "platform": "Common", - "questions": "Is it possible to dynamically set the video resolution based on the number of participants?", - "answers": "We have released a new feature, Adaptive Bitrate (affectionately called Simulcast that enables dynamic adjustments to video quality to optimise for end-user experience under diverse network conditions. ABR ensures that every participant is able to consume the highest possible quality video in conferencing or streaming use-cases, based on their bandwidth constraints." + platform: 'Common', + questions: + 'Is it possible to dynamically set the video resolution based on the number of participants?', + answers: + 'We have released a new feature, Adaptive Bitrate (affectionately called Simulcast that enables dynamic adjustments to video quality to optimise for end-user experience under diverse network conditions. ABR ensures that every participant is able to consume the highest possible quality video in conferencing or streaming use-cases, based on their bandwidth constraints.' }, { - "platform": "Common", - "questions": "What is the limit for room size in WebRTC?", - "answers": "Limit = total number of uploaded streams + total number of downloaded streams ≤ 10,000\ntotal number of uploaded streams is every single video feed being sent to the server, regardless of who is viewing it\ntotal number of downloaded streams is calculated as number of WebRTC viewers x number of video tiles seen by each (regardless of tile size)\nhere’s an example: a room with 100 peers, each with their video on, but each peer can only see 20 pax on the first page due to pagination\nuploaded streams = 100\ndownloaded streams = 100 peers x 20 video tiles each = 2,000\ntotal = 2,100 ≤ 10,000" + platform: 'Common', + questions: 'What is the limit for room size in WebRTC?', + answers: + 'Limit = total number of uploaded streams + total number of downloaded streams ≤ 10,000\ntotal number of uploaded streams is every single video feed being sent to the server, regardless of who is viewing it\ntotal number of downloaded streams is calculated as number of WebRTC viewers x number of video tiles seen by each (regardless of tile size)\nhere’s an example: a room with 100 peers, each with their video on, but each peer can only see 20 pax on the first page due to pagination\nuploaded streams = 100\ndownloaded streams = 100 peers x 20 video tiles each = 2,000\ntotal = 2,100 ≤ 10,000' }, { - "platform": "Common", - "questions": "For a given room, what is the max number of concurrent WebRTC connected participants?", - "answers": "In a single room at a given time, we currently support 10000 streams that is 100 participants with audio and video enabled" + platform: 'Common', + questions: + 'For a given room, what is the max number of concurrent WebRTC connected participants?', + answers: + 'In a single room at a given time, we currently support 10000 streams that is 100 participants with audio and video enabled' }, { - "platform": "Common", - "questions": "What is the maximum number of tiles that 100ms can support in its layout?", - "answers": "Layout Tiles in view Publish resolution Max peers in room\n1x1 1 720p 1500\n2x2 4 480p 450\n3x3 9 360p 200\n4x4 16 240p 100\n" + platform: 'Common', + questions: + 'What is the maximum number of tiles that 100ms can support in its layout?', + answers: + 'Layout Tiles in view Publish resolution Max peers in room\n1x1 1 720p 1500\n2x2 4 480p 450\n3x3 9 360p 200\n4x4 16 240p 100\n' }, { - "platform": "Common", - "questions": "What is the maximum number of people that can be supported currently?", - "answers": "For full duplex audio/video with a latency of <500 ms, 100ms can support a maximum of 100 people. For webinar-style events, 100ms can support 10 people on stage and 1000 offstage peers/audience. For large events, it can be broadcasted on a TV-like setup for an audience of millions with a latency of 7-10 seconds." + platform: 'Common', + questions: 'What is the maximum number of people that can be supported currently?', + answers: + 'For full duplex audio/video with a latency of <500 ms, 100ms can support a maximum of 100 people. For webinar-style events, 100ms can support 10 people on stage and 1000 offstage peers/audience. For large events, it can be broadcasted on a TV-like setup for an audience of millions with a latency of 7-10 seconds.' }, { - "platform": "Common", - "questions": "What is the maximum capacity for group calls with 100ms video SDK?", - "answers": "The maximum capacity for group calls with 100ms video SDK is currently 100 participants with audio/video on." + platform: 'Common', + questions: 'What is the maximum capacity for group calls with 100ms video SDK?', + answers: + 'The maximum capacity for group calls with 100ms video SDK is currently 100 participants with audio/video on.' }, { - "platform": "Common", - "questions": "Can the system scale to 50k-100k viewers if the SDK is not connected and we just want the m3u8 file?", - "answers": "Yes." + platform: 'Common', + questions: + 'Can the system scale to 50k-100k viewers if the SDK is not connected and we just want the m3u8 file?', + answers: 'Yes.' }, { - "platform": "Common", - "questions": "Is it possible to access in-depth analytics, such as the number of attempts to reconnect, drops, high latency, and live metrics?", - "answers": "All metrics are collected and can be shared through an Amplitude dashboard, which will eventually be available within the dashboard. For some basic debugging, you can always rely on the \"Events Inspector\" in your 100ms dashboard." + platform: 'Common', + questions: + 'Is it possible to access in-depth analytics, such as the number of attempts to reconnect, drops, high latency, and live metrics?', + answers: + 'All metrics are collected and can be shared through an Amplitude dashboard, which will eventually be available within the dashboard. For some basic debugging, you can always rely on the "Events Inspector" in your 100ms dashboard.' }, { - "platform": "Common", - "questions": "Is the 100ms live stream SDK customizable and able to scale to millions of users?", - "answers": "Yes. 100ms main motto is to serve customers with SDKs that offer extensibility and customizability to a greater extent. You can check the video-conferencing and interactive live streaming pages for more information." + platform: 'Common', + questions: + 'Is the 100ms live stream SDK customizable and able to scale to millions of users?', + answers: + 'Yes. 100ms main motto is to serve customers with SDKs that offer extensibility and customizability to a greater extent. You can check the video-conferencing and interactive live streaming pages for more information.' }, { - "platform": "Common", - "questions": "Can you share some documentation on your information security practices?", - "answers": "Yes, please check below:\n\nSOC2 type II compliant: report to be shared after signing a mutual NDA\nHIPAA: 100ms can sign a BAA" + platform: 'Common', + questions: + 'Can you share some documentation on your information security practices?', + answers: + 'Yes, please check below:\n\nSOC2 type II compliant: report to be shared after signing a mutual NDA\nHIPAA: 100ms can sign a BAA' }, { - "platform": "Common", - "questions": "Is it ok to potentially create thousands of rooms over time?", - "answers": "Yes, you can create as many rooms as necessary. It's also handy to disable a room after you're done using it." + platform: 'Common', + questions: 'Is it ok to potentially create thousands of rooms over time?', + answers: + "Yes, you can create as many rooms as necessary. It's also handy to disable a room after you're done using it." }, { - "platform": "Common", - "questions": "Can your platform handle end-to-end encryption between just 2 users?", - "answers": "The only encryption we have is on the token side. That is based on the token shared from the server to the client." + platform: 'Common', + questions: 'Can your platform handle end-to-end encryption between just 2 users?', + answers: + 'The only encryption we have is on the token side. That is based on the token shared from the server to the client.' }, { - "platform": "Common", - "questions": "Is 100ms Soc 2 complainant?", - "answers": "Yes." + platform: 'Common', + questions: 'Is 100ms Soc 2 complainant?', + answers: 'Yes.' }, { - "platform": "Common", - "questions": "Is there any usage analytics dashboard available to check various metrics associated with my account?", - "answers": "Currently, we don't have any dashboard for usage analytics, but it is right around the corner on our roadmap. We will let you know as soon as it is up.\nIf you’re wondering how, here it is: please subscribe to our monthly newsletter. We are constantly building cool, exciting things and we cover all of them in our newsletter.\n\n" + platform: 'Common', + questions: + 'Is there any usage analytics dashboard available to check various metrics associated with my account?', + answers: + "Currently, we don't have any dashboard for usage analytics, but it is right around the corner on our roadmap. We will let you know as soon as it is up.\nIf you’re wondering how, here it is: please subscribe to our monthly newsletter. We are constantly building cool, exciting things and we cover all of them in our newsletter.\n\n" }, { - "platform": "Common", - "questions": "Does the 100ms platform provide analytics on room, session, and each user, including data such as time spent per user, total session length, and number of peers in a room?", - "answers": "You can get analytics about rooms, sessions, peers and more in multiple ways based on feasibility and your requirements.\n\nYou can use the list sessions server API to fetch the list of sessions for a particular data/time range and you can also filter these for a particular room. This API will provide data such as list of peers, their room join/leave time, session start/end time, etc,.\n\nIf you need to get the session details for an active room (ongoing session), you can use our Active room server APIs to fetch the details and perform some actions on peers from your server side.\n\n" + platform: 'Common', + questions: + 'Does the 100ms platform provide analytics on room, session, and each user, including data such as time spent per user, total session length, and number of peers in a room?', + answers: + 'You can get analytics about rooms, sessions, peers and more in multiple ways based on feasibility and your requirements.\n\nYou can use the list sessions server API to fetch the list of sessions for a particular data/time range and you can also filter these for a particular room. This API will provide data such as list of peers, their room join/leave time, session start/end time, etc,.\n\nIf you need to get the session details for an active room (ongoing session), you can use our Active room server APIs to fetch the details and perform some actions on peers from your server side.\n\n' }, { - "platform": "Common", - "questions": "Is the functionality to disable a room and end an active room the same?", - "answers": "The functionalities of these two APIs are different:\n\nDisable/Enable a room API: you can use this API to disable/enable the room to block/allow peers to join the room.\nEnd an active room API: you can use this API to end an ongoing session in a room. Optionally you can use the lock argument to disable the room future peer joins.\n" + platform: 'Common', + questions: + 'Is the functionality to disable a room and end an active room the same?', + answers: + 'The functionalities of these two APIs are different:\n\nDisable/Enable a room API: you can use this API to disable/enable the room to block/allow peers to join the room.\nEnd an active room API: you can use this API to end an ongoing session in a room. Optionally you can use the lock argument to disable the room future peer joins.\n' }, { - "platform": "Common", - "questions": "Is there a way to close a room using a server-side API?", - "answers": "You can use end an active room API to end an ongoing session in a room. Optionally you can use the lock argument to disable the room future peer joins." + platform: 'Common', + questions: 'Is there a way to close a room using a server-side API?', + answers: + 'You can use end an active room API to end an ongoing session in a room. Optionally you can use the lock argument to disable the room future peer joins.' }, { - "platform": "Common", - "questions": "Is there a way to mute a participant using a server-side API?", - "answers": "You need to follow the below steps to achieve this:\n\nYes. Here are the steps: Create another role in your template by disabling audio publish strategies, for example: no-audio. You can either use the create a role API or templates page on dashboard to do this.\nUse the button click from the UI as a trigger to call the update-peer server side API or change role client-side API to change the role of the particular participant (peer) to no-video role to disable audio." + platform: 'Common', + questions: 'Is there a way to mute a participant using a server-side API?', + answers: + 'You need to follow the below steps to achieve this:\n\nYes. Here are the steps: Create another role in your template by disabling audio publish strategies, for example: no-audio. You can either use the create a role API or templates page on dashboard to do this.\nUse the button click from the UI as a trigger to call the update-peer server side API or change role client-side API to change the role of the particular participant (peer) to no-video role to disable audio.' }, { - "platform": "Common", - "questions": "Is there a way to disable video for a participant using a server-side API?", - "answers": "Yes, follow the same process mentioned for the question above ^\n\n" + platform: 'Common', + questions: + 'Is there a way to disable video for a participant using a server-side API?', + answers: 'Yes, follow the same process mentioned for the question above ^\n\n' }, { - "platform": "Common", - "questions": "Can you explain the differences between the HLS recording and Beam recording webhook events?", - "answers": "HLS recording events are related to the recording enabled for interactive live streaming sessions, whereas Beam recording events are only applicable to recording enabled for external streaming (RTMP) or browser recording for WebRTC sessions.\n\nPlease check the below links for more information:\n\nInteractive live streaming (HLS)\nRTMP streaming/recording" + platform: 'Common', + questions: + 'Can you explain the differences between the HLS recording and Beam recording webhook events?', + answers: + 'HLS recording events are related to the recording enabled for interactive live streaming sessions, whereas Beam recording events are only applicable to recording enabled for external streaming (RTMP) or browser recording for WebRTC sessions.\n\nPlease check the below links for more information:\n\nInteractive live streaming (HLS)\nRTMP streaming/recording' }, { - "platform": "Common", - "questions": "For incoming webhooks from 100ms to our API, is there a list of IPs that can be whitelisted?", - "answers": "Yes, and here is the list." + platform: 'Common', + questions: + 'For incoming webhooks from 100ms to our API, is there a list of IPs that can be whitelisted?', + answers: 'Yes, and here is the list.' }, { - "platform": "Common", - "questions": "Is there an API call we can make to set the webhook URL and headers on our account?", - "answers": "No. Currently there is no API to update the webhook URL and headers, but you can do this from the 100ms dashboard directly." + platform: 'Common', + questions: + 'Is there an API call we can make to set the webhook URL and headers on our account?', + answers: + 'No. Currently there is no API to update the webhook URL and headers, but you can do this from the 100ms dashboard directly.' }, { - "platform": "Common", - "questions": "Do you have some static IP for 100ms, that we can whitelist your hits at our end?", - "answers": "100ms provides two methods to whitelist traffic from 100ms.\n\nDomain and port whitelisting\nSecuring webhooks" + platform: 'Common', + questions: + 'Do you have some static IP for 100ms, that we can whitelist your hits at our end?', + answers: + '100ms provides two methods to whitelist traffic from 100ms.\n\nDomain and port whitelisting\nSecuring webhooks' }, { - "platform": "Common", - "questions": "Can we end an active session programmatically (reset the room so that everyone is kicked from the meeting and it starts a new session)?", - "answers": "We have an end point that helps you end an active session. You can check this to understand how the API works." + platform: 'Common', + questions: + 'Can we end an active session programmatically (reset the room so that everyone is kicked from the meeting and it starts a new session)?', + answers: + 'We have an end point that helps you end an active session. You can check this to understand how the API works.' }, { - "platform": "Common", - "questions": "Is there any way to limit participants in a room?", - "answers": "We don't limit the participants currently, but you can limit the number of peers as a part of the Role or Template configuration where we can add a maximum number of participants per role by setting the maxPeerCount attribute:\n\nWhile creating/updating a role or\nWhile creating/updating a template as part of roles config." + platform: 'Common', + questions: 'Is there any way to limit participants in a room?', + answers: + "We don't limit the participants currently, but you can limit the number of peers as a part of the Role or Template configuration where we can add a maximum number of participants per role by setting the maxPeerCount attribute:\n\nWhile creating/updating a role or\nWhile creating/updating a template as part of roles config." }, { - "platform": "Common", - "questions": "Can we customise the width and height of video tile which we are getting from useVideoList hook?" + platform: 'Common', + questions: + 'Can we customise the width and height of video tile which we are getting from useVideoList hook?' }, { - "platform": "Common", - "questions": "How can I handle role change requests on my backend? Is there any webhook for it?", - "answers": "Currently, role change is initiated by a designated role. A role change REST API is on the roadmap.\n\n" + platform: 'Common', + questions: + 'How can I handle role change requests on my backend? Is there any webhook for it?', + answers: + 'Currently, role change is initiated by a designated role. A role change REST API is on the roadmap.\n\n' }, { - "platform": "Common", - "questions": "Is there a way to handle role change requests on the backend, such as through a webhook or API?", - "answers": "Yes, you can use update a peer API to change the role of a peer from backend." + platform: 'Common', + questions: + 'Is there a way to handle role change requests on the backend, such as through a webhook or API?', + answers: + 'Yes, you can use update a peer API to change the role of a peer from backend.' }, { - "platform": "Common", - "questions": "Can you access a role created via dashboard or server API across all client SDKs?", - "answers": "Yes - the template created on dashboard/API and the roles associated with it is universally used across all 100ms client SDKs." + platform: 'Common', + questions: + 'Can you access a role created via dashboard or server API across all client SDKs?', + answers: + 'Yes - the template created on dashboard/API and the roles associated with it is universally used across all 100ms client SDKs.' }, { - "platform": "Common", - "questions": "Is there a way to schedule rooms for a certain date and time and send invites to certain email ids?", - "answers": "That needs authentication for a user and you would need to handle this on the UI. You can use the Create room API to Create multiple rooms and schedule meetings as required by using them in queue. Time gate the option to join the room so that they can do so only when it is time for the meeting." + platform: 'Common', + questions: + 'Is there a way to schedule rooms for a certain date and time and send invites to certain email ids?', + answers: + 'That needs authentication for a user and you would need to handle this on the UI. You can use the Create room API to Create multiple rooms and schedule meetings as required by using them in queue. Time gate the option to join the room so that they can do so only when it is time for the meeting.' }, { - "platform": "Common", - "questions": "Can we disable a room by id?", - "answers": "Yes this is possible. The disable/enable a room API supports room_id as an argument as well." + platform: 'Common', + questions: 'Can we disable a room by id?', + answers: + 'Yes this is possible. The disable/enable a room API supports room_id as an argument as well.' }, { - "platform": "Common", - "questions": "How do I limit the session to a specified duration?", - "answers": "Through the end an active room API.\n\nSay you want to limit the duration of a session to 30 minutes: -\n\nStart a timer as soon as the session begins and you receive the session.open.success webhook event\nWait till the duration (timer) of the session reaches 30 minutes\nOnce reached, trigger the end an active room API to end the session and kick out the peers from the session.\nNote: If you set the lock argument to true, it will end the active room, and users will not be able to join the room later. You can use enable a room API or dashboard to enable the room again.\n\n" + platform: 'Common', + questions: 'How do I limit the session to a specified duration?', + answers: + 'Through the end an active room API.\n\nSay you want to limit the duration of a session to 30 minutes: -\n\nStart a timer as soon as the session begins and you receive the session.open.success webhook event\nWait till the duration (timer) of the session reaches 30 minutes\nOnce reached, trigger the end an active room API to end the session and kick out the peers from the session.\nNote: If you set the lock argument to true, it will end the active room, and users will not be able to join the room later. You can use enable a room API or dashboard to enable the room again.\n\n' }, { - "platform": "Common", - "questions": "Can I delete rooms via dashboard or API?", - "answers": "No, you cannot delete a room. We don't support the \"delete room\" functionality as it would lead to losing all data associated with the room. However, we support the below options based on the actual requirement of why you want to delete the room(s):\nCreating new rooms for every session: You can create as many rooms as you want, as we don't have any limit for room creation.\nDisable room: If you don't want future room join requests for a particular room, you can disable a room from the dashboard or via server API.\nDev & Prod Env: If you want to delete rooms from your account as you transition from Development to the Production stage, we recommend using \"Workspaces.\" It enables you to create two or more workspaces per your need and isolate the data for each workspace. Please check this blog for more information." + platform: 'Common', + questions: 'Can I delete rooms via dashboard or API?', + answers: + 'No, you cannot delete a room. We don\'t support the "delete room" functionality as it would lead to losing all data associated with the room. However, we support the below options based on the actual requirement of why you want to delete the room(s):\nCreating new rooms for every session: You can create as many rooms as you want, as we don\'t have any limit for room creation.\nDisable room: If you don\'t want future room join requests for a particular room, you can disable a room from the dashboard or via server API.\nDev & Prod Env: If you want to delete rooms from your account as you transition from Development to the Production stage, we recommend using "Workspaces." It enables you to create two or more workspaces per your need and isolate the data for each workspace. Please check this blog for more information.' }, { - "platform": "JavaScript", - "questions": "How do I record a room?", - "answers": "We have two types of recordings available, SFU and Browser. You can also start the latter from the SDK." + platform: 'JavaScript', + questions: 'How do I record a room?', + answers: + 'We have two types of recordings available, SFU and Browser. You can also start the latter from the SDK.' }, { - "platform": "JavaScript", - "questions": "How do I debug blank video tile while rendering?", - "answers": "Start with making sure that attach video is being called for the correct track and video element. Also ensure that there is no bug leading to detach call just after or around the same time as attach. These calls when done will also show up in the redux DevTools extension. Some things we have seen in the past -\n\n- The role was not subscribed properly in the dashboard's templates section\n- [React] Calling detach as a cleanup function of the same useEffect which calls attach and has video track as dependency. Instead of this please have a separate useEffect with no dependencies to call detach on component unmount.\n- [React] Not using the key field properly while rendering the list of components displaying the track. This should ideally be the trackId or peerId-trackType, where track type is video or screen.\n- [Angular] Not using the trackBy field properly while rendering the list of components displaying the track. This should ideally be the trackId or peerId-trackType, where track type is video or screen." + platform: 'JavaScript', + questions: 'How do I debug blank video tile while rendering?', + answers: + "Start with making sure that attach video is being called for the correct track and video element. Also ensure that there is no bug leading to detach call just after or around the same time as attach. These calls when done will also show up in the redux DevTools extension. Some things we have seen in the past -\n\n- The role was not subscribed properly in the dashboard's templates section\n- [React] Calling detach as a cleanup function of the same useEffect which calls attach and has video track as dependency. Instead of this please have a separate useEffect with no dependencies to call detach on component unmount.\n- [React] Not using the key field properly while rendering the list of components displaying the track. This should ideally be the trackId or peerId-trackType, where track type is video or screen.\n- [Angular] Not using the trackBy field properly while rendering the list of components displaying the track. This should ideally be the trackId or peerId-trackType, where track type is video or screen." }, { - "platform": "JavaScript", - "questions": "Why is the video not auto-playing on page load?", - "answers": "For the video to auto-play please make sure these fields are set on the video element - auto-play, muted, playsinline. Please check the docs for render video for more details." + platform: 'JavaScript', + questions: 'Why is the video not auto-playing on page load?', + answers: + 'For the video to auto-play please make sure these fields are set on the video element - auto-play, muted, playsinline. Please check the docs for render video for more details.' }, { - "platform": "JavaScript", - "questions": "(Angular) Why is video not auto-playing even though muted is set as true?", - "answers": "Angular 2+ is sometimes not able to translate the muted field correctly. Instead of setting the muted and auto-play property as