Skip to content

Commit 7e984b3

Browse files
Merge pull request #302392 from sloanster/patch-39
Update optimizing-video-placement.md
2 parents 9f34794 + 9129d99 commit 7e984b3

File tree

2 files changed

+27
-3
lines changed

2 files changed

+27
-3
lines changed

articles/communication-services/concepts/voice-video-calling/calling-sdk-features.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ The Azure Communication Services Calling SDK supports the following streaming co
178178
| Limit | Web | Windows/Android/iOS |
179179
| --- | --- | --- |
180180
| **Maximum # of outgoing local streams that can be sent simultaneously** | 1 video and 1 screen sharing | 1 video + 1 screen sharing |
181-
| **Maximum # of incoming remote streams that can be rendered simultaneously** | 16 videos + 1 screen sharing on desktop browsers*, 4 videos + 1 screen sharing on web mobile browsers | 9 videos + 1 screen sharing |
181+
| **Maximum # of incoming remote streams that can be rendered simultaneously** | GA Webjs SDK - [16 videos + 1 screen sharing on desktop browsers](../../quickstarts/voice-video-calling/optimizing-video-placement.md#how-many-videos-to-place-in-a-grid-at-a-time) <br />4 videos + 1 screen sharing on web mobile browsers <br /> <br /> Public preview - [25 videos + 1 screen sharing on desktop browser](../../quickstarts/voice-video-calling/optimizing-video-placement.md#how-many-videos-to-place-in-a-grid-at-a-time) <br />4 videos + 1 screen sharing on web mobile browsers | 9 videos + 1 screen sharing |
182182

183183
\* Starting from Azure Communication Services Web Calling SDK version [1.16.3](https://github.com/Azure/Communication/blob/master/releasenotes/acs-javascript-calling-library-release-notes.md#1163-stable-2023-08-24). While the Calling SDK doesn't enforce these limits, your users might experience performance degradation if they're exceeded. Use the API of [Optimal Video Count](../../how-tos/calling-sdk/manage-video.md?pivots=platform-web#remote-video-quality) to determine the number of incoming video streams your web environment can support. To properly support 16 incoming videos, the computer needs a minimum of 16-GB RAM and a 4-core or greater CPU that is less than three years old.
184184

articles/communication-services/quickstarts/voice-video-calling/optimizing-video-placement.md

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ description: This article describes how to place video on a web page based on re
55
author: sloanster
66
ms.author: micahvivion
77
services: azure-communication-services
8-
ms.date: 06/26/2025
8+
ms.date: 07/08/2025
99
ms.topic: quickstart
1010
ms.service: azure-communication-services
1111
ms.subservice: calling
@@ -67,7 +67,7 @@ The optimal video count returns an integer defining the ideal number of videos t
6767

6868
Developers should ensure that their application subscribes to changes in the `Optimal Video Count` in group calls and adjust the number of videos being rendered on a web page dynamically based on the OVC count. The value from optimal video count (OVC) updates every 10 seconds.
6969

70-
You need to reference the feature `OptimalVideoCount` via the feature method of the Call object. You can then set a listener via the *on* method of the `OptimalVideoCountCallFeature` to be notified when the `optimalVideoCount` changes.
70+
You need to reference the feature `OptimalVideoCount` via the feature method of the Call object. You can then set a listener via the `on` method of the `OptimalVideoCountCallFeature` to be notified when the `optimalVideoCount` changes.
7171

7272
To unsubscribe from the changes, you can call the off method. The current maximum number of incoming videos that can be rendered on a web page is **16**. To properly support 16 incoming videos, the computer should have a minimum of 16-GB RAM and a 4-core or greater CPU that is no older than three years old.
7373

@@ -169,6 +169,30 @@ getSupportedResolutions();
169169
| 240p | 15 | 15 | 650 K |
170170
| 180p | 7.5 | 15 | 250 K(350 K if 15 FPS)|
171171

172+
### How many videos to place in a grid at a time
173+
As the Azure Communication Services WebJS Calling SDK continues to evolve, one of its key capabilities is supporting many incoming video streams in a grid layout on desktop and mobile browsers. This feature is valuable for scenarios like virtual classrooms, large team meetings, or customer support centers where multiple participants need to be visible simultaneously.
174+
175+
However, this scalability introduces a trade-off between the number of video streams rendered and the visual quality of each stream. Since the total screen real estate is fixed, increasing the number of video tiles means each individual video renderer must occupy a smaller portion of the screen. To maintain performance and avoid overloading the browser’s rendering pipeline, the SDK dynamically adjusts the resolution of each incoming video stream based on its rendered size. This ensures that bandwidth and CPU usage remain within acceptable limits, but it also means that as more participants join, the resolution of each video may decrease to accommodate the grid.
176+
177+
This adaptive behavior helps ensure stable user performance. For instance, in a 2x2 grid with 4 participants, each video can be rendered at a higher resolution. In contrast, with a 5x5 grid displaying 25 participants, each tile is smaller and the SDK may downscale video streams to fit the display size. This approach reduces bandwidth usage and lowers the chances of dropped frames or lag. To support up to 25 incoming video streams, it is recommended to use a computer with at least an 8-core processor and 16GB of RAM
178+
179+
The following table illustrates how video resolution changes based on the number of participants displayed in the incoming video grid at any one time.
180+
181+
| **Number of incoming streams** | **Incoming video resolution** |
182+
|------------------|----------------------|
183+
| 1 | 1080p |
184+
| 2 | 720p |
185+
| 3 | 540p |
186+
| 4 to 9 | 360p |
187+
| 10 to 16 | 240p |
188+
| 17 to 25 | 180p |
189+
190+
> [!NOTE]
191+
> The GA version of the calling WebJS SDK allows for up to **16** incoming video streams for desktop browsers (4x4 grid).
192+
193+
> [!NOTE]
194+
> The public preview 1.37.1-beta.1 and greater of the calling WebJS SDK currently supports up to **25** incoming video streams for desktop browsers (5x5 grid).
195+
172196
## Conclusion
173197

174198
To determine how many videos to place on a web page, you need to carefully consider resolution, device type, bandwidth, and user experience. Follow these guidelines and best practices to create web apps that not only look appealing but also function seamlessly, providing an optimal viewing experience for users across various devices and connection speeds.

0 commit comments

Comments
 (0)