Десктоп-клиент для MeetScribe: одновременно записывает микрофон и системный звук в два отдельных трека, встраивает web UI и загружает записи в него. Авторизация — вход на встроенном сайте (cookie переживает перезапуск).
npm install
npm startАдрес сервера настраивается в панели (по умолчанию http://127.0.0.1:8080).
- Захват системного звука —
setDisplayMediaRequestHandler+audio: 'loopback'(Chromium):- Windows — WASAPI loopback. Захват не следует за сменой устройства вывода по умолчанию — при подозрительной тишине панель предложит «Переподключить».
- macOS 14.2+ — CoreAudio process tap; нужно разрешение «Запись системного звука» (не «Запись экрана»). На 13.0–14.1 автоматически откатываемся на ScreenCaptureKit.
- Linux — монитор дефолтного sink через PulseAudio/pipewire-pulse
(флаг
PulseaudioLoopbackForScreenShare); сам следует за сменой sink.
- Оба канала пишутся
MediaRecorder'ами (webm/opus) чанками по 3 с на диск (userData/recordings/<stamp>/) — при краше теряется не больше 3 с, запись попадает в «Незагруженные». - Загрузка:
POST /api/session+ multipart в/api/session/{id}/tracksиз main-процесса с cookie сайта; при повторе после сбоя догружаются только отсутствующие файлы.
npm run distWindows: nsis; macOS: dmg/zip (подпись/нотаризация не настроены); Linux: AppImage/deb.
Windows 10+, macOS 13+ (полноценно — 14.2+), Linux с PulseAudio или PipeWire. При бампе Electron обязательно проверять, что loopback даёт не-тишину на всех трёх ОС.