feat(media): add single-server SFU scaffolding and media mode config
This commit is contained in:
43
Backend/media/config.ts
Normal file
43
Backend/media/config.ts
Normal file
@@ -0,0 +1,43 @@
|
||||
export type MediaMode = 'legacy' | 'single_server_sfu';
|
||||
|
||||
const parseMediaMode = (value: string | undefined): MediaMode => {
|
||||
const normalized = (value ?? 'legacy').trim().toLowerCase();
|
||||
if (normalized === 'single_server_sfu') {
|
||||
return 'single_server_sfu';
|
||||
}
|
||||
return 'legacy';
|
||||
};
|
||||
|
||||
const parseCsv = (value: string | undefined): string[] => {
|
||||
if (!value) return [];
|
||||
return value
|
||||
.split(',')
|
||||
.map((item) => item.trim())
|
||||
.filter(Boolean);
|
||||
};
|
||||
|
||||
const parsePositiveNumber = (value: string | undefined): number | null => {
|
||||
if (!value) return null;
|
||||
const parsed = Number(value);
|
||||
if (!Number.isFinite(parsed) || parsed <= 0) {
|
||||
return null;
|
||||
}
|
||||
return parsed;
|
||||
};
|
||||
|
||||
export const mediaMode: MediaMode = parseMediaMode(process.env.MEDIA_MODE);
|
||||
|
||||
export const mediaConfig = {
|
||||
mode: mediaMode,
|
||||
turn: {
|
||||
urls: parseCsv(process.env.TURN_URLS),
|
||||
username: process.env.TURN_USERNAME ?? '',
|
||||
credential: process.env.TURN_CREDENTIAL ?? '',
|
||||
},
|
||||
recordingsDir: process.env.MEDIA_RECORDINGS_DIR ?? 'media-recordings',
|
||||
limits: {
|
||||
maxPublishers: parsePositiveNumber(process.env.MEDIA_MAX_PUBLISHERS),
|
||||
maxSubscribersPerRoom: parsePositiveNumber(process.env.MEDIA_MAX_SUBSCRIBERS_PER_ROOM),
|
||||
},
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user