g
hi
t
Thanks for reaching out, Divyan. I'm an AI assistant and I'm here to help. Give me a moment while I research this topic.
Hi — welcome to LiveKit! How can I help you today? If you’re not sure where to start, tell me: • Are you setting up a project, joining a room, troubleshooting an error, or exploring features? • Any specific error messages, SDK/language (JS, iOS, Android, Flutter, etc.), or room/project IDs you can share? I’ll guide you through the next steps.
g
hi i wanna add screen record feature during interview session... how can i do this
t
Thanks — I can help with that. You're asking how to add screen recording during an interview session. Two parts to implement: 1) Let participants share their screen (so the screen becomes a video track). 2) Record the session using LiveKit Egress (either per-participant or a composite of the whole room). Quick options and steps: • Enable screen sharing (Web):
Copy code
// prompt user to share screen and publish tracks
const tracks = await room.localParticipant.createScreenTracks({ audio: true });
tracks.forEach(t => room.localParticipant.publishTrack(t));
Notes: tab audio support is browser-dependent. • Record individual participant screens (Participant Egress) ◦ Use Participant Egress to record a specific participant’s published tracks (screen + audio) to MP4 or cloud storage. ◦ Example CLI: lk egress start --type participant --room-name "interview-room" --identity "interviewee-123" --output-file "s3://bucket/interviewee-123.mp4" • Record the whole session (Room Composite Egress) ◦ Use Room Composite Egress to produce a composite MP4 that includes all participants and screen shares (rendered via headless Chrome). ◦ Example flow: call the Egress API / startRoomCompositeEgress with output config and desired layout (speaker, grid, custom). • Consent / compliance ◦ If you need consent, prompt participants before starting Egress; start recording only after consent is granted. Platform notes: • iOS: screen sharing requires a Broadcast Upload Extension. • Android: use MediaProjectionManager and a foreground service. • Web: screen audio only in supported browsers (e.g., Chrome tab audio). If you want, tell me: • Which client(s) you’re using (Web, iOS, Android, Flutter). • Do you want per-participant files or a single composite file? • Any storage target (S3/GCS/local)? I’ll give you exact code/snippets and egress commands for your chosen platform and output. Sources: Screen sharing | LiveKit docs | Recording participants | LiveKit docs | RoomComposite Egress | LiveKit Docs | Collect recording consent with tasks | LiveKit docs | Recording and export | LiveKit docs
g
will it record the screen or the tab
t
Good question — it records exactly what the participant shares. • On the web, when a user starts screen share the browser prompt lets them choose: Entire screen, a specific application window, or a single browser tab. Egress records the published screen track, so the recording will contain whichever of those they selected (including tab audio only if the browser supports it). • On mobile (iOS/Android) it records the full screen captured by the OS sharing flow (iOS via Broadcast Upload Extension, Android via MediaProjection). If you want to force only tab sharing or only entire-screen sharing, tell me which client you’re using and I’ll show how to prompt/guide users or detect the track type.
g
will it know whats happening in the screen live
t
Thanks — you’re asking whether LiveKit can “know” or monitor what’s happening on the shared screen live. Short answer: • Yes — anyone subscribed to the published screen track (e.g., the interviewer or other participants) receives the screen video in real time and can view whatever the sharer selected (entire screen, window, or tab). • LiveKit itself does not inspect or interpret the screen contents (no automatic content recognition). It only transports/publishes the media track and can record it via Egress. What you can do in real time: • Let participants view the live shared screen by subscribing to the screen track. • Detect when a screen track is published/ended (so you can update UI or trigger actions). • Stream the screen to multiple viewers with low latency. What LiveKit will not do automatically: • Analyze the contents of the screen (OCR, object detection, semantic events). • Infer user actions or generate analytics from the screen video. If you need content awareness or real‑time analysis (for example, detect form fields, recognize text, or flag specific events), I can suggest two approaches: • Send the screen frames to a separate real‑time analysis service (capture frames client‑side or server‑side and call an ML API). • After recording with Egress, run post‑processing (OCR / computer vision) on the saved file. Which client are you using (Web, iOS, Android, Flutter) and do you want live monitoring only, real‑time analysis, or post‑session analysis? I’ll give concrete implementation options.
g
i wanna enable content awareness is it possible to do it for free
t
Thanks — you’re asking whether you can enable content awareness (real‑time analysis of screen/share contents) and whether that can be done for free. Short answer: • LiveKit does not provide built‑in content analysis. It transports and records media (screen tracks), but it does not inspect or interpret what’s on the screen. • You can build content awareness yourself using free/open‑source tools and LiveKit features — there are no LiveKit charges specifically for analysis, but running analysis (CPU/GPU, servers, or third‑party APIs) may incur costs. Practical, low‑cost ways to add content awareness 1) Client‑side analysis (lowest infra cost) • Capture frames from the shared screen track in the browser or app and run open‑source models locally (no server cost other than users’ devices). • Web option: draw video frames to a hidden <canvas>, then run a JS library (e.g., Tesseract.js for OCR, or TensorFlow.js models for object detection). • Pros: minimal server cost, low latency; Cons: depends on user device performance and browser capabilities; may be limited for heavy ML. 2) Server‑side real‑time processing (more robust) • Forward frames or a mirrored stream to a processing service you host (e.g., a small VM or container running open‑source models). • Use LiveKit Egress (or a participant stream) to get the media and feed frames into vision/OCR pipelines (OpenCV, Tesseract, PyTorch/TensorFlow models). • Pros: more powerful, central control; Cons: requires servers (costs depend on compute). 3) Post‑session processing (cheapest if real‑time isn’t required) • Record sessions with Egress, then run batch analysis on the saved file using free tools (Tesseract, OpenCV) or open‑source ML. • Pros: no need for real‑time infra; Cons: analysis happens after the interview ends. Free/open‑source tools to consider • OCR: Tesseract (native), Tesseract.js (browser) • CV / detection: OpenCV, TensorFlow/TensorFlow.js, PyTorch + Detectron2 or YOLO variants (some have free models) • JS browser ML: TensorFlow.js, ONNX.js, mediapipe (for certain detectors) Privacy & consent • Because you’ll analyze screen contents (sensitive), prompt users for consent before enabling analysis and clearly state how data is used/stored. Recommended next step (so I give exact code) Which of these fits your goal? • Do you need analysis in real time, or is post‑session OK? • Which client(s) are you targeting (Web, iOS, Android, Flutter)? • What type of content awareness do you need (OCR/text extraction, UI element detection, activity classification, sensitive data redaction)? Tell me those three and I’ll provide a concrete implementation plan and starter code (client capture or egress pipeline) using free tools.