How to Freeze Positioning
You can set the layout to "custom" mode, which allows you to assign specific users to defined spots. When using custom layout mode, Eyeson will not automatically fill empty spots with active participants. Any undefined spots will remain empty, showing only the background.
This provides additional flexibility when designing custom layouts.
- bash
- shell
- node sdk
export ACCESS_KEY=123...
export USER_ID1=123...
curl -X POST \
-d "users[]=" \
-d "users[]=$USER_ID1" \
-d "users[]=" \
-d "users[]=" \
-d "layout=custom" \
-d "name=four" \
"https://api.eyeson.team/rooms/$ACCESS_KEY/layout"
SET ACCESS_KEY=123...
SET USER_ID1=123...
curl -X POST ^
-d "users[]=" ^
-d "users[]=%USER_ID1%" ^
-d "users[]=" ^
-d "users[]=" ^
-d "layout=custom" ^
-d "name=four" "https://api.eyeson.team/rooms/%ACCESS_KEY%/layout"
This example also includes the creation of the room.
import Eyeson from 'eyeson-node';
const user_id_1 = 'abc...';
const eyeson = new Eyeson({ apiKey: 'API_KEY' });
const room = await eyeson.join('test-user-name', 'test-room', {
options: {
widescreen: true,
sfu_mode: 'disabled',
},
});
await room.waitReady();
console.log('Join via:', room.data.links.gui);
await room.setLayout({
layout: 'custom',
name: 'four',
users: ['', user_id_1, '', ''],
});
For the sake of clarity, there is a background image with the numbered video spots blended in.
Figure 1. The result may look like this.
Also four additional participants are added to the video call session after the layout change. But the video stream spots (Figure 2.) are not filled with active participants.
Figure 2. To visualise the invisible participants, here is an image of the same set up with an UI.