服务器录屏1

This commit is contained in:
2026-06-02 02:49:47 +08:00
parent 66d6f92d1e
commit 59fc4be5cc
7 changed files with 248 additions and 27 deletions

View File

@@ -326,6 +326,37 @@ function getActiveRecordingSession(connectionId: string) {
return null;
}
function roomMemberToRecordingPerson(member: any, fallbackRole: string): RecordingPerson | undefined {
if (!member || typeof member !== 'object') {
return undefined;
}
return sanitizeRecordingPerson({
participantId: member.participantId,
userId: member.userId || member.id,
id: member.id || member.userId,
name: member.name,
avatar: member.avatar,
role: member.role || fallbackRole,
status: member.status,
mediaState: member.mediaState
}, fallbackRole);
}
function getRecordingRoomPeople(connectionId: string): { host?: RecordingPerson; participants: RecordingPerson[] } {
const room = getWebSocketRooms(connectionId)[0];
const members = Array.isArray(room?.members) ? room.members : [];
const hostMember = members.find((member: any) => member.role === 'host')
|| members.find((member: any) => member.socketId && member.socketId === room?.hostSocketId);
const host = roomMemberToRecordingPerson(hostMember, 'host');
const participants = members
.filter((member: any) => member !== hostMember && member.role === 'participant')
.map((member: any) => roomMemberToRecordingPerson(member, 'participant'))
.filter((member: RecordingPerson | undefined) => Boolean(member)) as RecordingPerson[];
return { host, participants };
}
export const createServer = (config: Options): express.Express => {
const app: express.Express = express();
resetHandler(config.mode);
@@ -561,12 +592,15 @@ export const createServer = (config: Options): express.Express => {
}
const shouldCompose = req.query.compose !== 'false';
const roomPeople = getRecordingRoomPeople(session.connectionId);
const compositionJob = shouldCompose
? startRecordingCompositionJob({
meetingId: session.connectionId,
recordingId: session.id,
layout: session.layout,
format: session.format
format: session.format,
host: roomPeople.host,
participants: roomPeople.participants
})
: null;
res.json({ success: true, session, agent, notified, compositionJob });
@@ -602,7 +636,8 @@ export const createServer = (config: Options): express.Express => {
meetingId,
recordingId,
layout: req.body.layout,
format: req.body.format
format: req.body.format,
...getRecordingRoomPeople(meetingId)
});
res.status(202).json({ success: true, job });
});